diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e678a2978..07aed42a5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -41,4 +41,6 @@ jobs: files: | https://pokerogue.net/ https://pokerogue.net/index.html - https://pokerogue.net/manifest.json \ No newline at end of file + https://pokerogue.net/manifest.json + https://pokerogue.net/manifest.webmanifest + https://pokerogue.net/service-worker.js \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4cf3196a7..55f9203a8 100644 --- a/.gitignore +++ b/.gitignore @@ -33,5 +33,6 @@ public/images/pokemon/icons/input/output/* public/images/character/*/ src/data/battle-anim-raw-data*.ts src/data/battle-anim-data.ts +src/overrides.ts coverage \ No newline at end of file diff --git a/README.md b/README.md index b2955f8c4..d08107867 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you have the motivation and experience with Typescript/Javascript (or are wil ### ❔ FAQ **How do I test a new _______?** -- In the `battle-scene.ts` file there are overrides for most values you'll need to change for testing +- In the `src/overrides.ts` file there are overrides for most values you'll need to change for testing ## 🪧 To Do diff --git a/index.css b/index.css index 9a507ad67..dd47387ad 100644 --- a/index.css +++ b/index.css @@ -150,6 +150,10 @@ body { display: none; } +#touchControls:not([data-ui-mode='COMMAND']):not([data-ui-mode='FIGHT']):not([data-ui-mode='BALL']):not([data-ui-mode='TARGET_SELECT']) #apad #apadStats { + display: none; +} + #apad .apadRectBtnContainer + .apadSqBtnContainer { top: calc(var(--controls-size) * -1.9); left: calc(var(--controls-size) * -0.9); diff --git a/index.html b/index.html index bd316330a..177a92efc 100644 --- a/index.html +++ b/index.html @@ -74,6 +74,9 @@
V
+
+ C +
Menu
diff --git a/package-lock.json b/package-lock.json index 5521dcc86..7db944a45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "pokemon-rogue-battle", - "version": "1.0.1", + "version": "1.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pokemon-rogue-battle", - "version": "1.0.1", + "version": "1.0.4", "dependencies": { "@material/material-color-utilities": "^0.2.7", "crypto-js": "^4.2.0", "i18next": "^23.11.1", + "i18next-browser-languagedetector": "^7.2.1", "json-stable-stringify": "^1.1.0", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" @@ -2772,6 +2773,14 @@ "@babel/runtime": "^7.23.2" } }, + "node_modules/i18next-browser-languagedetector": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz", + "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, "node_modules/i18next-http-backend": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.5.0.tgz", diff --git a/package.json b/package.json index 47408b137..d5ffb651f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "pokemon-rogue-battle", "private": true, - "version": "1.0.3", + "version": "1.0.4", "type": "module", "scripts": { "start": "vite", @@ -31,6 +31,7 @@ "@material/material-color-utilities": "^0.2.7", "crypto-js": "^4.2.0", "i18next": "^23.11.1", + "i18next-browser-languagedetector": "^7.2.1", "json-stable-stringify": "^1.1.0", "phaser": "^3.70.0", "phaser3-rex-plugins": "^1.1.84" diff --git a/public/audio/bgm/battle_legendary_k.mp3 b/public/audio/bgm/battle_legendary_kyurem.mp3 similarity index 100% rename from public/audio/bgm/battle_legendary_k.mp3 rename to public/audio/bgm/battle_legendary_kyurem.mp3 diff --git a/public/audio/bgm/battle_legendary_regis.mp3 b/public/audio/bgm/battle_legendary_regis.mp3 new file mode 100644 index 000000000..227d544d9 Binary files /dev/null and b/public/audio/bgm/battle_legendary_regis.mp3 differ diff --git a/public/audio/bgm/battle_legendary_rz.mp3 b/public/audio/bgm/battle_legendary_res_zek.mp3 similarity index 100% rename from public/audio/bgm/battle_legendary_rz.mp3 rename to public/audio/bgm/battle_legendary_res_zek.mp3 diff --git a/public/audio/bgm/battle_legendary.mp3 b/public/audio/bgm/battle_legendary_unova.mp3 similarity index 100% rename from public/audio/bgm/battle_legendary.mp3 rename to public/audio/bgm/battle_legendary_unova.mp3 diff --git a/public/audio/se/shing.wav b/public/audio/se/shing.wav new file mode 100644 index 000000000..e693cb207 Binary files /dev/null and b/public/audio/se/shing.wav differ diff --git a/public/images/items.json b/public/images/items.json index a878c7db5..7b654e761 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,8 +4,8 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 391, - "h": 391 + "w": 395, + "h": 395 }, "scale": 1, "frames": [ @@ -450,6 +450,27 @@ "h": 24 } }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, + "frame": { + "x": 380, + "y": 0, + "w": 15, + "h": 23 + } + }, { "filename": "black_augurite", "rotated": false, @@ -598,7 +619,7 @@ } }, { - "filename": "silver_powder", + "filename": "coupon", "rotated": false, "trimmed": true, "sourceSize": { @@ -607,15 +628,57 @@ }, "spriteSourceSize": { "x": 4, - "y": 11, - "w": 24, - "h": 15 + "y": 7, + "w": 23, + "h": 19 }, "frame": { "x": 0, "y": 376, - "w": 24, - "h": 15 + "w": 23, + "h": 19 + } + }, + { + "filename": "golden_mystic_ticket", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 23, + "y": 376, + "w": 23, + "h": 19 + } + }, + { + "filename": "leftovers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 15, + "h": 22 + }, + "frame": { + "x": 380, + "y": 23, + "w": 15, + "h": 22 } }, { @@ -871,7 +934,7 @@ } }, { - "filename": "coupon", + "filename": "clefairy_doll", "rotated": false, "trimmed": true, "sourceSize": { @@ -880,36 +943,15 @@ }, "spriteSourceSize": { "x": 4, - "y": 7, - "w": 23, - "h": 19 + "y": 5, + "w": 24, + "h": 23 }, "frame": { - "x": 24, + "x": 46, "y": 372, - "w": 23, - "h": 19 - } - }, - { - "filename": "golden_mystic_ticket", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 47, - "y": 372, - "w": 23, - "h": 19 + "w": 24, + "h": 23 } }, { @@ -1186,7 +1228,7 @@ } }, { - "filename": "clefairy_doll", + "filename": "coin_case", "rotated": false, "trimmed": true, "sourceSize": { @@ -1206,27 +1248,6 @@ "h": 23 } }, - { - "filename": "coin_case", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 70, - "y": 368, - "w": 24, - "h": 23 - } - }, { "filename": "max_repel", "rotated": false, @@ -1521,27 +1542,6 @@ "h": 18 } }, - { - "filename": "full_heal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 - }, - "frame": { - "x": 376, - "y": 24, - "w": 15, - "h": 23 - } - }, { "filename": "pp_max", "rotated": false, @@ -1837,7 +1837,7 @@ } }, { - "filename": "healing_charm", + "filename": "fighting_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -1845,20 +1845,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 22 + "x": 6, + "y": 4, + "w": 22, + "h": 23 }, "frame": { "x": 353, "y": 42, - "w": 23, - "h": 22 + "w": 22, + "h": 23 } }, { - "filename": "leftovers", + "filename": "mystic_water", "rotated": false, "trimmed": true, "sourceSize": { @@ -1866,58 +1866,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, + "x": 6, "y": 5, - "w": 15, - "h": 22 + "w": 20, + "h": 23 }, "frame": { - "x": 376, - "y": 47, - "w": 15, - "h": 22 - } - }, - { - "filename": "adamant_crystal", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 353, - "y": 64, - "w": 23, - "h": 21 - } - }, - { - "filename": "prism_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 15, - "h": 15 - }, - "frame": { - "x": 376, - "y": 69, - "w": 15, - "h": 15 + "x": 375, + "y": 45, + "w": 20, + "h": 23 } }, { @@ -2047,7 +2005,7 @@ } }, { - "filename": "amulet_coin", + "filename": "adamant_crystal", "rotated": false, "trimmed": true, "sourceSize": { @@ -2055,8 +2013,8 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 5, + "x": 4, + "y": 6, "w": 23, "h": 21 }, @@ -2088,6 +2046,27 @@ "h": 20 } }, + { + "filename": "silver_powder", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 24, + "h": 15 + }, + "frame": { + "x": 113, + "y": 81, + "w": 24, + "h": 15 + } + }, { "filename": "dragon_fang", "rotated": false, @@ -2130,27 +2109,6 @@ "h": 24 } }, - { - "filename": "fighting_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 51, - "y": 99, - "w": 22, - "h": 23 - } - }, { "filename": "fire_stone", "rotated": false, @@ -2165,6 +2123,27 @@ "w": 22, "h": 23 }, + "frame": { + "x": 51, + "y": 99, + "w": 22, + "h": 23 + } + }, + { + "filename": "fire_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, "frame": { "x": 54, "y": 122, @@ -2173,7 +2152,7 @@ } }, { - "filename": "fire_tera_shard", + "filename": "flying_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -2194,7 +2173,7 @@ } }, { - "filename": "flying_tera_shard", + "filename": "focus_sash", "rotated": false, "trimmed": true, "sourceSize": { @@ -2202,7 +2181,7 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 5, "y": 4, "w": 22, "h": 23 @@ -2214,6 +2193,27 @@ "h": 23 } }, + { + "filename": "amulet_coin", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 23, + "h": 21 + }, + "frame": { + "x": 137, + "y": 87, + "w": 23, + "h": 21 + } + }, { "filename": "auspicious_armor", "rotated": false, @@ -2229,14 +2229,14 @@ "h": 21 }, "frame": { - "x": 113, - "y": 81, + "x": 160, + "y": 87, "w": 23, "h": 21 } }, { - "filename": "binding_band", + "filename": "healing_charm", "rotated": false, "trimmed": true, "sourceSize": { @@ -2245,78 +2245,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 6, + "y": 5, "w": 23, - "h": 20 + "h": 22 }, "frame": { - "x": 136, + "x": 183, "y": 87, "w": 23, - "h": 20 - } - }, - { - "filename": "moon_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 159, - "y": 87, - "w": 23, - "h": 21 - } - }, - { - "filename": "n_lunarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 182, - "y": 87, - "w": 23, - "h": 21 - } - }, - { - "filename": "n_solarizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 23, - "h": 21 - }, - "frame": { - "x": 205, - "y": 87, - "w": 23, - "h": 21 + "h": 22 } }, { @@ -2334,264 +2271,12 @@ "h": 22 }, "frame": { - "x": 228, + "x": 206, "y": 87, "w": 23, "h": 22 } }, - { - "filename": "wellspring_mask", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 23, - "h": 21 - }, - "frame": { - "x": 251, - "y": 88, - "w": 23, - "h": 21 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 96, - "y": 90, - "w": 17, - "h": 23 - } - }, - { - "filename": "black_glasses", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 23, - "h": 17 - }, - "frame": { - "x": 113, - "y": 102, - "w": 23, - "h": 17 - } - }, - { - "filename": "dusk_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 75, - "y": 97, - "w": 21, - "h": 21 - } - }, - { - "filename": "focus_sash", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 76, - "y": 118, - "w": 22, - "h": 23 - } - }, - { - "filename": "ghost_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 78, - "y": 141, - "w": 22, - "h": 23 - } - }, - { - "filename": "grass_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 80, - "y": 164, - "w": 22, - "h": 23 - } - }, - { - "filename": "mystic_ticket", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 136, - "y": 107, - "w": 23, - "h": 19 - } - }, - { - "filename": "pair_of_tickets", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 19 - }, - "frame": { - "x": 159, - "y": 108, - "w": 23, - "h": 19 - } - }, - { - "filename": "reviver_seed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 182, - "y": 108, - "w": 23, - "h": 20 - } - }, - { - "filename": "shell_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 23, - "h": 20 - }, - "frame": { - "x": 205, - "y": 108, - "w": 23, - "h": 20 - } - }, - { - "filename": "blunder_policy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 19 - }, - "frame": { - "x": 228, - "y": 109, - "w": 22, - "h": 19 - } - }, { "filename": "charcoal", "rotated": false, @@ -2607,12 +2292,33 @@ "h": 22 }, "frame": { - "x": 250, - "y": 109, + "x": 229, + "y": 87, "w": 22, "h": 22 } }, + { + "filename": "moon_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 251, + "y": 88, + "w": 23, + "h": 21 + } + }, { "filename": "relic_gold", "rotated": false, @@ -2719,7 +2425,7 @@ } }, { - "filename": "ground_tera_shard", + "filename": "ghost_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -2740,7 +2446,7 @@ } }, { - "filename": "ice_tera_shard", + "filename": "grass_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -2760,6 +2466,111 @@ "h": 23 } }, + { + "filename": "ground_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 72, + "y": 344, + "w": 22, + "h": 23 + } + }, + { + "filename": "hyper_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 96, + "y": 90, + "w": 17, + "h": 23 + } + }, + { + "filename": "binding_band", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 23, + "h": 20 + }, + "frame": { + "x": 113, + "y": 96, + "w": 23, + "h": 20 + } + }, + { + "filename": "dusk_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 75, + "y": 97, + "w": 21, + "h": 21 + } + }, + { + "filename": "ice_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 76, + "y": 118, + "w": 22, + "h": 23 + } + }, { "filename": "lansat_berry", "rotated": false, @@ -2775,8 +2586,29 @@ "h": 23 }, "frame": { - "x": 72, - "y": 344, + "x": 78, + "y": 141, + "w": 21, + "h": 23 + } + }, + { + "filename": "leaf_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 80, + "y": 164, "w": 21, "h": 23 } @@ -2824,7 +2656,7 @@ } }, { - "filename": "wise_glasses", + "filename": "black_glasses", "rotated": false, "trimmed": true, "sourceSize": { @@ -2844,48 +2676,6 @@ "h": 17 } }, - { - "filename": "leaf_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 82, - "y": 250, - "w": 21, - "h": 23 - } - }, - { - "filename": "mystic_water", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 86, - "y": 273, - "w": 20, - "h": 23 - } - }, { "filename": "petaya_berry", "rotated": false, @@ -2901,8 +2691,8 @@ "h": 23 }, "frame": { - "x": 93, - "y": 296, + "x": 82, + "y": 250, "w": 22, "h": 23 } @@ -2922,12 +2712,33 @@ "h": 23 }, "frame": { - "x": 93, - "y": 319, + "x": 86, + "y": 273, "w": 22, "h": 23 } }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 93, + "y": 296, + "w": 17, + "h": 23 + } + }, { "filename": "psychic_tera_shard", "rotated": false, @@ -2944,7 +2755,7 @@ }, "frame": { "x": 93, - "y": 342, + "y": 319, "w": 22, "h": 23 } @@ -2965,13 +2776,139 @@ }, "frame": { "x": 94, - "y": 365, + "y": 342, "w": 22, "h": 23 } }, { - "filename": "dire_hit", + "filename": "burn_drive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 136, + "y": 108, + "w": 23, + "h": 17 + } + }, + { + "filename": "chill_drive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 159, + "y": 108, + "w": 23, + "h": 17 + } + }, + { + "filename": "douse_drive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 182, + "y": 109, + "w": 23, + "h": 17 + } + }, + { + "filename": "mystic_ticket", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 205, + "y": 109, + "w": 23, + "h": 19 + } + }, + { + "filename": "n_lunarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 228, + "y": 109, + "w": 23, + "h": 21 + } + }, + { + "filename": "n_solarizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 23, + "h": 21 + }, + "frame": { + "x": 251, + "y": 109, + "w": 23, + "h": 21 + } + }, + { + "filename": "masterpiece_teacup", "rotated": false, "trimmed": true, "sourceSize": { @@ -2980,15 +2917,36 @@ }, "spriteSourceSize": { "x": 5, + "y": 7, + "w": 21, + "h": 18 + }, + "frame": { + "x": 115, + "y": 116, + "w": 21, + "h": 18 + } + }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, "y": 5, - "w": 22, - "h": 22 + "w": 17, + "h": 23 }, "frame": { "x": 98, - "y": 119, - "w": 22, - "h": 22 + "y": 116, + "w": 17, + "h": 23 } }, { @@ -3006,8 +2964,8 @@ "h": 23 }, "frame": { - "x": 100, - "y": 141, + "x": 99, + "y": 139, "w": 22, "h": 23 } @@ -3027,8 +2985,8 @@ "h": 23 }, "frame": { - "x": 102, - "y": 164, + "x": 101, + "y": 162, "w": 21, "h": 23 } @@ -3049,7 +3007,7 @@ }, "frame": { "x": 102, - "y": 187, + "y": 185, "w": 22, "h": 23 } @@ -3070,11 +3028,32 @@ }, "frame": { "x": 102, - "y": 210, + "y": 208, "w": 22, "h": 23 } }, + { + "filename": "blunder_policy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 19 + }, + "frame": { + "x": 103, + "y": 231, + "w": 22, + "h": 19 + } + }, { "filename": "water_tera_shard", "rotated": false, @@ -3090,201 +3069,12 @@ "h": 23 }, "frame": { - "x": 103, - "y": 233, + "x": 104, + "y": 250, "w": 22, "h": 23 } }, - { - "filename": "mystery_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 18 - }, - "frame": { - "x": 120, - "y": 119, - "w": 16, - "h": 18 - } - }, - { - "filename": "everstone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 17 - }, - "frame": { - "x": 103, - "y": 256, - "w": 20, - "h": 17 - } - }, - { - "filename": "potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 106, - "y": 273, - "w": 17, - "h": 23 - } - }, - { - "filename": "relic_crown", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 23, - "h": 18 - }, - "frame": { - "x": 136, - "y": 126, - "w": 23, - "h": 18 - } - }, - { - "filename": "deep_sea_scale", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 159, - "y": 127, - "w": 22, - "h": 20 - } - }, - { - "filename": "deep_sea_tooth", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 181, - "y": 128, - "w": 22, - "h": 21 - } - }, - { - "filename": "dna_splicers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 203, - "y": 128, - "w": 22, - "h": 22 - } - }, - { - "filename": "electirizer", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 225, - "y": 128, - "w": 22, - "h": 22 - } - }, - { - "filename": "dubious_disc", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 247, - "y": 131, - "w": 22, - "h": 19 - } - }, { "filename": "sachet", "rotated": false, @@ -3300,8 +3090,8 @@ "h": 23 }, "frame": { - "x": 115, - "y": 296, + "x": 108, + "y": 273, "w": 18, "h": 23 } @@ -3321,8 +3111,8 @@ "h": 23 }, "frame": { - "x": 115, - "y": 319, + "x": 110, + "y": 296, "w": 21, "h": 23 } @@ -3343,11 +3133,200 @@ }, "frame": { "x": 115, - "y": 342, + "y": 319, "w": 22, "h": 23 } }, + { + "filename": "dire_hit", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 116, + "y": 342, + "w": 22, + "h": 22 + } + }, + { + "filename": "berry_pot", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 18, + "h": 22 + }, + "frame": { + "x": 121, + "y": 134, + "w": 18, + "h": 22 + } + }, + { + "filename": "dna_splicers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 139, + "y": 125, + "w": 22, + "h": 22 + } + }, + { + "filename": "poison_barb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 161, + "y": 125, + "w": 21, + "h": 21 + } + }, + { + "filename": "reviver_seed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 8, + "w": 23, + "h": 20 + }, + "frame": { + "x": 182, + "y": 126, + "w": 23, + "h": 20 + } + }, + { + "filename": "pair_of_tickets", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 19 + }, + "frame": { + "x": 205, + "y": 128, + "w": 23, + "h": 19 + } + }, + { + "filename": "relic_crown", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 23, + "h": 18 + }, + "frame": { + "x": 228, + "y": 130, + "w": 23, + "h": 18 + } + }, + { + "filename": "shell_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 23, + "h": 20 + }, + "frame": { + "x": 251, + "y": 130, + "w": 23, + "h": 20 + } + }, + { + "filename": "electirizer", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 122, + "y": 156, + "w": 22, + "h": 22 + } + }, { "filename": "enigma_berry", "rotated": false, @@ -3363,33 +3342,12 @@ "h": 22 }, "frame": { - "x": 116, - "y": 365, + "x": 124, + "y": 178, "w": 22, "h": 22 } }, - { - "filename": "fairy_feather", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 20 - }, - "frame": { - "x": 122, - "y": 144, - "w": 22, - "h": 20 - } - }, { "filename": "ganlon_berry", "rotated": false, @@ -3405,8 +3363,8 @@ "h": 22 }, "frame": { - "x": 123, - "y": 164, + "x": 124, + "y": 200, "w": 22, "h": 22 } @@ -3426,8 +3384,8 @@ "h": 22 }, "frame": { - "x": 124, - "y": 186, + "x": 125, + "y": 222, "w": 22, "h": 22 } @@ -3447,8 +3405,8 @@ "h": 22 }, "frame": { - "x": 124, - "y": 208, + "x": 126, + "y": 244, "w": 22, "h": 22 } @@ -3468,14 +3426,14 @@ "h": 22 }, "frame": { - "x": 125, - "y": 230, + "x": 126, + "y": 266, "w": 22, "h": 22 } }, { - "filename": "revive", + "filename": "hard_meteorite", "rotated": false, "trimmed": true, "sourceSize": { @@ -3483,58 +3441,37 @@ "h": 32 }, "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 + "x": 7, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 131, + "y": 288, + "w": 20, + "h": 22 + } + }, + { + "filename": "lock_capsule", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 19, + "h": 22 }, "frame": { "x": 144, - "y": 144, - "w": 12, - "h": 17 - } - }, - { - "filename": "liechi_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 156, "y": 147, - "w": 22, - "h": 21 - } - }, - { - "filename": "malicious_armor", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 178, - "y": 149, - "w": 22, - "h": 20 + "w": 19, + "h": 22 } }, { @@ -3552,12 +3489,96 @@ "h": 22 }, "frame": { - "x": 200, - "y": 150, + "x": 163, + "y": 146, "w": 22, "h": 22 } }, + { + "filename": "sitrus_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 185, + "y": 146, + "w": 20, + "h": 22 + } + }, + { + "filename": "wellspring_mask", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 23, + "h": 21 + }, + "frame": { + "x": 205, + "y": 147, + "w": 23, + "h": 21 + } + }, + { + "filename": "deep_sea_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 228, + "y": 148, + "w": 22, + "h": 20 + } + }, + { + "filename": "deep_sea_tooth", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 250, + "y": 150, + "w": 22, + "h": 21 + } + }, { "filename": "memory_dark", "rotated": false, @@ -3573,8 +3594,8 @@ "h": 22 }, "frame": { - "x": 222, - "y": 150, + "x": 146, + "y": 169, "w": 22, "h": 22 } @@ -3593,52 +3614,10 @@ "w": 22, "h": 22 }, - "frame": { - "x": 244, - "y": 150, - "w": 22, - "h": 22 - } - }, - { - "filename": "masterpiece_teacup", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 21, - "h": 18 - }, - "frame": { - "x": 145, - "y": 168, - "w": 21, - "h": 18 - } - }, - { - "filename": "hard_meteorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 20, - "h": 22 - }, "frame": { "x": 146, - "y": 186, - "w": 20, + "y": 191, + "w": 22, "h": 22 } }, @@ -3657,8 +3636,8 @@ "h": 22 }, "frame": { - "x": 146, - "y": 208, + "x": 168, + "y": 168, "w": 22, "h": 22 } @@ -3678,8 +3657,8 @@ "h": 22 }, "frame": { - "x": 147, - "y": 230, + "x": 168, + "y": 190, "w": 22, "h": 22 } @@ -3699,75 +3678,12 @@ "h": 22 }, "frame": { - "x": 166, - "y": 169, + "x": 190, + "y": 168, "w": 22, "h": 22 } }, - { - "filename": "mega_bracelet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 20, - "h": 16 - }, - "frame": { - "x": 166, - "y": 191, - "w": 20, - "h": 16 - } - }, - { - "filename": "super_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 168, - "y": 207, - "w": 17, - "h": 23 - } - }, - { - "filename": "berry_pot", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 18, - "h": 22 - }, - "frame": { - "x": 169, - "y": 230, - "w": 18, - "h": 22 - } - }, { "filename": "memory_fire", "rotated": false, @@ -3783,8 +3699,8 @@ "h": 22 }, "frame": { - "x": 188, - "y": 172, + "x": 190, + "y": 190, "w": 22, "h": 22 } @@ -3804,8 +3720,8 @@ "h": 22 }, "frame": { - "x": 210, - "y": 172, + "x": 212, + "y": 168, "w": 22, "h": 22 } @@ -3825,14 +3741,14 @@ "h": 22 }, "frame": { - "x": 232, - "y": 172, + "x": 212, + "y": 190, "w": 22, "h": 22 } }, { - "filename": "lock_capsule", + "filename": "mystery_egg", "rotated": false, "trimmed": true, "sourceSize": { @@ -3840,16 +3756,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 19, - "h": 22 + "x": 8, + "y": 8, + "w": 16, + "h": 18 }, "frame": { - "x": 254, - "y": 172, - "w": 19, - "h": 22 + "x": 234, + "y": 168, + "w": 16, + "h": 18 } }, { @@ -3867,12 +3783,33 @@ "h": 22 }, "frame": { - "x": 186, - "y": 194, + "x": 234, + "y": 186, "w": 22, "h": 22 } }, + { + "filename": "candy_overlay", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 12, + "w": 16, + "h": 15 + }, + "frame": { + "x": 250, + "y": 171, + "w": 16, + "h": 15 + } + }, { "filename": "memory_ground", "rotated": false, @@ -3888,8 +3825,8 @@ "h": 22 }, "frame": { - "x": 208, - "y": 194, + "x": 147, + "y": 213, "w": 22, "h": 22 } @@ -3909,8 +3846,8 @@ "h": 22 }, "frame": { - "x": 230, - "y": 194, + "x": 169, + "y": 212, "w": 22, "h": 22 } @@ -3930,8 +3867,8 @@ "h": 22 }, "frame": { - "x": 252, - "y": 194, + "x": 191, + "y": 212, "w": 22, "h": 22 } @@ -3951,8 +3888,8 @@ "h": 22 }, "frame": { - "x": 252, - "y": 194, + "x": 191, + "y": 212, "w": 22, "h": 22 } @@ -3972,33 +3909,12 @@ "h": 22 }, "frame": { - "x": 266, - "y": 150, + "x": 213, + "y": 212, "w": 22, "h": 22 } }, - { - "filename": "big_mushroom", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 19 - }, - "frame": { - "x": 269, - "y": 131, - "w": 19, - "h": 19 - } - }, { "filename": "memory_psychic", "rotated": false, @@ -4014,54 +3930,12 @@ "h": 22 }, "frame": { - "x": 272, - "y": 109, + "x": 235, + "y": 208, "w": 22, "h": 22 } }, - { - "filename": "dawn_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 21 - }, - "frame": { - "x": 274, - "y": 88, - "w": 20, - "h": 21 - } - }, - { - "filename": "poison_barb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 280, - "y": 67, - "w": 21, - "h": 21 - } - }, { "filename": "memory_rock", "rotated": false, @@ -4077,8 +3951,8 @@ "h": 22 }, "frame": { - "x": 301, - "y": 65, + "x": 148, + "y": 235, "w": 22, "h": 22 } @@ -4098,8 +3972,8 @@ "h": 22 }, "frame": { - "x": 323, - "y": 65, + "x": 148, + "y": 257, "w": 22, "h": 22 } @@ -4119,8 +3993,8 @@ "h": 22 }, "frame": { - "x": 273, - "y": 172, + "x": 170, + "y": 234, "w": 22, "h": 22 } @@ -4140,8 +4014,8 @@ "h": 22 }, "frame": { - "x": 274, - "y": 194, + "x": 170, + "y": 256, "w": 22, "h": 22 } @@ -4161,8 +4035,8 @@ "h": 22 }, "frame": { - "x": 187, - "y": 216, + "x": 192, + "y": 234, "w": 22, "h": 22 } @@ -4182,8 +4056,8 @@ "h": 22 }, "frame": { - "x": 209, - "y": 216, + "x": 192, + "y": 256, "w": 22, "h": 22 } @@ -4203,8 +4077,8 @@ "h": 22 }, "frame": { - "x": 231, - "y": 216, + "x": 214, + "y": 234, "w": 22, "h": 22 } @@ -4224,8 +4098,8 @@ "h": 22 }, "frame": { - "x": 253, - "y": 216, + "x": 214, + "y": 256, "w": 22, "h": 22 } @@ -4245,75 +4119,12 @@ "h": 22 }, "frame": { - "x": 275, - "y": 216, + "x": 236, + "y": 230, "w": 22, "h": 22 } }, - { - "filename": "sweet_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 187, - "y": 238, - "w": 22, - "h": 21 - } - }, - { - "filename": "syrupy_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 209, - "y": 238, - "w": 22, - "h": 21 - } - }, - { - "filename": "tart_apple", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 21 - }, - "frame": { - "x": 231, - "y": 238, - "w": 22, - "h": 21 - } - }, { "filename": "thunder_stone", "rotated": false, @@ -4329,29 +4140,8 @@ "h": 22 }, "frame": { - "x": 253, - "y": 238, - "w": 22, - "h": 22 - } - }, - { - "filename": "tm_bug", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 275, - "y": 238, + "x": 236, + "y": 252, "w": 22, "h": 22 } @@ -4371,12 +4161,33 @@ "h": 22 }, "frame": { - "x": 294, - "y": 88, + "x": 256, + "y": 186, "w": 19, "h": 22 } }, + { + "filename": "tm_bug", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 257, + "y": 208, + "w": 22, + "h": 22 + } + }, { "filename": "tm_dark", "rotated": false, @@ -4392,33 +4203,12 @@ "h": 22 }, "frame": { - "x": 313, - "y": 87, + "x": 258, + "y": 230, "w": 22, "h": 22 } }, - { - "filename": "shiny_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 21, - "h": 21 - }, - "frame": { - "x": 294, - "y": 110, - "w": 21, - "h": 21 - } - }, { "filename": "tm_dragon", "rotated": false, @@ -4434,54 +4224,12 @@ "h": 22 }, "frame": { - "x": 288, - "y": 131, + "x": 258, + "y": 252, "w": 22, "h": 22 } }, - { - "filename": "upgrade", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 22, - "h": 19 - }, - "frame": { - "x": 288, - "y": 153, - "w": 22, - "h": 19 - } - }, - { - "filename": "sitrus_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 315, - "y": 109, - "w": 20, - "h": 22 - } - }, { "filename": "tm_electric", "rotated": false, @@ -4497,54 +4245,12 @@ "h": 22 }, "frame": { - "x": 310, - "y": 131, + "x": 151, + "y": 279, "w": 22, "h": 22 } }, - { - "filename": "tera_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 22, - "h": 20 - }, - "frame": { - "x": 310, - "y": 153, - "w": 22, - "h": 20 - } - }, - { - "filename": "metronome", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 335, - "y": 87, - "w": 17, - "h": 22 - } - }, { "filename": "tm_fairy", "rotated": false, @@ -4560,33 +4266,12 @@ "h": 22 }, "frame": { - "x": 352, - "y": 85, + "x": 173, + "y": 278, "w": 22, "h": 22 } }, - { - "filename": "soothe_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 374, - "y": 85, - "w": 17, - "h": 22 - } - }, { "filename": "tm_fighting", "rotated": false, @@ -4602,8 +4287,8 @@ "h": 22 }, "frame": { - "x": 335, - "y": 109, + "x": 195, + "y": 278, "w": 22, "h": 22 } @@ -4623,8 +4308,8 @@ "h": 22 }, "frame": { - "x": 332, - "y": 131, + "x": 217, + "y": 278, "w": 22, "h": 22 } @@ -4644,8 +4329,8 @@ "h": 22 }, "frame": { - "x": 357, - "y": 107, + "x": 239, + "y": 274, "w": 22, "h": 22 } @@ -4665,14 +4350,56 @@ "h": 22 }, "frame": { - "x": 332, - "y": 153, + "x": 261, + "y": 274, "w": 22, "h": 22 } }, { - "filename": "zoom_lens", + "filename": "dubious_disc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 151, + "y": 301, + "w": 22, + "h": 19 + } + }, + { + "filename": "fairy_feather", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 20 + }, + "frame": { + "x": 173, + "y": 300, + "w": 22, + "h": 20 + } + }, + { + "filename": "liechi_berry", "rotated": false, "trimmed": true, "sourceSize": { @@ -4682,13 +4409,34 @@ "spriteSourceSize": { "x": 5, "y": 6, - "w": 21, + "w": 22, "h": 21 }, "frame": { - "x": 295, - "y": 173, - "w": 21, + "x": 195, + "y": 300, + "w": 22, + "h": 21 + } + }, + { + "filename": "sweet_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 217, + "y": 300, + "w": 22, "h": 21 } }, @@ -4707,8 +4455,8 @@ "h": 22 }, "frame": { - "x": 296, - "y": 194, + "x": 239, + "y": 296, "w": 22, "h": 22 } @@ -4728,8 +4476,8 @@ "h": 22 }, "frame": { - "x": 297, - "y": 216, + "x": 261, + "y": 296, "w": 22, "h": 22 } @@ -4749,33 +4497,12 @@ "h": 22 }, "frame": { - "x": 297, - "y": 238, + "x": 137, + "y": 320, "w": 22, "h": 22 } }, - { - "filename": "abomasite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 16, - "h": 16 - }, - "frame": { - "x": 316, - "y": 173, - "w": 16, - "h": 16 - } - }, { "filename": "tm_poison", "rotated": false, @@ -4791,33 +4518,12 @@ "h": 22 }, "frame": { - "x": 332, - "y": 175, + "x": 159, + "y": 320, "w": 22, "h": 22 } }, - { - "filename": "metal_alloy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 21, - "h": 19 - }, - "frame": { - "x": 318, - "y": 197, - "w": 21, - "h": 19 - } - }, { "filename": "tm_psychic", "rotated": false, @@ -4833,8 +4539,8 @@ "h": 22 }, "frame": { - "x": 319, - "y": 216, + "x": 138, + "y": 342, "w": 22, "h": 22 } @@ -4854,14 +4560,35 @@ "h": 22 }, "frame": { - "x": 319, - "y": 238, + "x": 160, + "y": 342, "w": 22, "h": 22 } }, { - "filename": "lum_berry", + "filename": "prism_scale", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 15, + "h": 15 + }, + "frame": { + "x": 266, + "y": 171, + "w": 15, + "h": 15 + } + }, + { + "filename": "dawn_stone", "rotated": false, "trimmed": true, "sourceSize": { @@ -4870,15 +4597,57 @@ }, "spriteSourceSize": { "x": 6, - "y": 7, + "y": 6, "w": 20, - "h": 19 + "h": 21 }, "frame": { - "x": 339, - "y": 197, + "x": 272, + "y": 150, "w": 20, - "h": 19 + "h": 21 + } + }, + { + "filename": "metronome", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 275, + "y": 186, + "w": 17, + "h": 22 + } + }, + { + "filename": "soothe_bell", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 22 + }, + "frame": { + "x": 279, + "y": 208, + "w": 17, + "h": 22 } }, { @@ -4896,8 +4665,8 @@ "h": 22 }, "frame": { - "x": 341, - "y": 216, + "x": 280, + "y": 230, "w": 22, "h": 22 } @@ -4917,8 +4686,8 @@ "h": 22 }, "frame": { - "x": 341, - "y": 238, + "x": 280, + "y": 252, "w": 22, "h": 22 } @@ -4938,8 +4707,8 @@ "h": 22 }, "frame": { - "x": 125, - "y": 252, + "x": 283, + "y": 274, "w": 22, "h": 22 } @@ -4959,12 +4728,54 @@ "h": 22 }, "frame": { - "x": 123, - "y": 274, + "x": 283, + "y": 296, "w": 22, "h": 22 } }, + { + "filename": "syrupy_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 181, + "y": 321, + "w": 22, + "h": 21 + } + }, + { + "filename": "tart_apple", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 21 + }, + "frame": { + "x": 203, + "y": 321, + "w": 22, + "h": 21 + } + }, { "filename": "x_attack", "rotated": false, @@ -4980,33 +4791,12 @@ "h": 22 }, "frame": { - "x": 147, - "y": 252, + "x": 182, + "y": 342, "w": 22, "h": 22 } }, - { - "filename": "razor_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 18, - "h": 20 - }, - "frame": { - "x": 169, - "y": 252, - "w": 18, - "h": 20 - } - }, { "filename": "x_defense", "rotated": false, @@ -5022,12 +4812,33 @@ "h": 22 }, "frame": { - "x": 145, - "y": 274, + "x": 204, + "y": 342, "w": 22, "h": 22 } }, + { + "filename": "shiny_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 225, + "y": 321, + "w": 21, + "h": 21 + } + }, { "filename": "x_sp_atk", "rotated": false, @@ -5043,8 +4854,8 @@ "h": 22 }, "frame": { - "x": 133, - "y": 296, + "x": 226, + "y": 342, "w": 22, "h": 22 } @@ -5064,7 +4875,7 @@ "h": 22 }, "frame": { - "x": 136, + "x": 246, "y": 318, "w": 22, "h": 22 @@ -5085,12 +4896,33 @@ "h": 22 }, "frame": { - "x": 137, - "y": 340, + "x": 268, + "y": 318, "w": 22, "h": 22 } }, + { + "filename": "malicious_armor", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 248, + "y": 340, + "w": 22, + "h": 20 + } + }, { "filename": "big_nugget", "rotated": false, @@ -5106,12 +4938,180 @@ "h": 20 }, "frame": { - "x": 138, - "y": 362, + "x": 270, + "y": 340, "w": 20, "h": 20 } }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 290, + "y": 318, + "w": 19, + "h": 21 + } + }, + { + "filename": "zoom_lens", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 21, + "h": 21 + }, + "frame": { + "x": 290, + "y": 339, + "w": 21, + "h": 21 + } + }, + { + "filename": "apicot_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 280, + "y": 67, + "w": 19, + "h": 20 + } + }, + { + "filename": "tera_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 6, + "w": 22, + "h": 20 + }, + "frame": { + "x": 299, + "y": 65, + "w": 22, + "h": 20 + } + }, + { + "filename": "upgrade", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 22, + "h": 19 + }, + "frame": { + "x": 321, + "y": 65, + "w": 22, + "h": 19 + } + }, + { + "filename": "metal_alloy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 21, + "h": 19 + }, + "frame": { + "x": 343, + "y": 65, + "w": 21, + "h": 19 + } + }, + { + "filename": "shock_drive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 364, + "y": 68, + "w": 23, + "h": 17 + } + }, + { + "filename": "wise_glasses", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 23, + "h": 17 + }, + "frame": { + "x": 248, + "y": 360, + "w": 23, + "h": 17 + } + }, { "filename": "sharp_meteorite", "rotated": false, @@ -5127,8 +5127,8 @@ "h": 18 }, "frame": { - "x": 187, - "y": 259, + "x": 70, + "y": 377, "w": 21, "h": 18 } @@ -5148,369 +5148,12 @@ "h": 18 }, "frame": { - "x": 208, - "y": 259, + "x": 91, + "y": 377, "w": 21, "h": 18 } }, - { - "filename": "blue_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 229, - "y": 259, - "w": 20, - "h": 20 - } - }, - { - "filename": "gb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 249, - "y": 260, - "w": 20, - "h": 20 - } - }, - { - "filename": "magnet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 269, - "y": 260, - "w": 20, - "h": 20 - } - }, - { - "filename": "mb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 289, - "y": 260, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 309, - "y": 260, - "w": 20, - "h": 20 - } - }, - { - "filename": "pb_gold", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 329, - "y": 260, - "w": 20, - "h": 20 - } - }, - { - "filename": "apicot_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 349, - "y": 260, - "w": 19, - "h": 20 - } - }, - { - "filename": "spell_tag", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 155, - "y": 296, - "w": 19, - "h": 21 - } - }, - { - "filename": "candy_jar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 158, - "y": 317, - "w": 19, - "h": 20 - } - }, - { - "filename": "hard_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 19, - "h": 20 - }, - "frame": { - "x": 159, - "y": 337, - "w": 19, - "h": 20 - } - }, - { - "filename": "miracle_seed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 19, - "h": 19 - }, - "frame": { - "x": 167, - "y": 277, - "w": 19, - "h": 19 - } - }, - { - "filename": "razor_claw", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 20, - "h": 19 - }, - "frame": { - "x": 186, - "y": 277, - "w": 20, - "h": 19 - } - }, - { - "filename": "rb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 174, - "y": 296, - "w": 20, - "h": 20 - } - }, - { - "filename": "smooth_meteorite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 206, - "y": 277, - "w": 20, - "h": 20 - } - }, - { - "filename": "lucky_egg", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 17, - "h": 20 - }, - "frame": { - "x": 177, - "y": 316, - "w": 17, - "h": 20 - } - }, - { - "filename": "strange_ball", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 226, - "y": 279, - "w": 20, - "h": 20 - } - }, - { - "filename": "ub", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 246, - "y": 280, - "w": 20, - "h": 20 - } - }, { "filename": "wl_ability_urge", "rotated": false, @@ -5526,8 +5169,8 @@ "h": 18 }, "frame": { - "x": 266, - "y": 280, + "x": 112, + "y": 377, "w": 20, "h": 18 } @@ -5547,8 +5190,8 @@ "h": 18 }, "frame": { - "x": 286, - "y": 280, + "x": 132, + "y": 377, "w": 20, "h": 18 } @@ -5568,8 +5211,8 @@ "h": 18 }, "frame": { - "x": 306, - "y": 280, + "x": 152, + "y": 377, "w": 20, "h": 18 } @@ -5589,8 +5232,8 @@ "h": 18 }, "frame": { - "x": 326, - "y": 280, + "x": 172, + "y": 377, "w": 20, "h": 18 } @@ -5610,33 +5253,12 @@ "h": 18 }, "frame": { - "x": 346, - "y": 280, + "x": 192, + "y": 377, "w": 20, "h": 18 } }, - { - "filename": "oval_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 19 - }, - "frame": { - "x": 178, - "y": 336, - "w": 18, - "h": 19 - } - }, { "filename": "wl_custom_thief", "rotated": false, @@ -5652,8 +5274,8 @@ "h": 18 }, "frame": { - "x": 194, - "y": 297, + "x": 212, + "y": 377, "w": 20, "h": 18 } @@ -5673,33 +5295,12 @@ "h": 18 }, "frame": { - "x": 194, - "y": 315, + "x": 232, + "y": 377, "w": 20, "h": 18 } }, - { - "filename": "candy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 11, - "w": 18, - "h": 18 - }, - "frame": { - "x": 196, - "y": 333, - "w": 18, - "h": 18 - } - }, { "filename": "wl_ether", "rotated": false, @@ -5715,12 +5316,33 @@ "h": 18 }, "frame": { - "x": 214, - "y": 299, + "x": 252, + "y": 377, "w": 20, "h": 18 } }, + { + "filename": "everstone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 17 + }, + "frame": { + "x": 271, + "y": 360, + "w": 20, + "h": 17 + } + }, { "filename": "wl_full_heal", "rotated": false, @@ -5736,12 +5358,432 @@ "h": 18 }, "frame": { - "x": 214, - "y": 317, + "x": 272, + "y": 377, "w": 20, "h": 18 } }, + { + "filename": "mega_bracelet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 16 + }, + "frame": { + "x": 291, + "y": 360, + "w": 20, + "h": 16 + } + }, + { + "filename": "lum_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 292, + "y": 376, + "w": 20, + "h": 19 + } + }, + { + "filename": "blue_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 274, + "y": 88, + "w": 20, + "h": 20 + } + }, + { + "filename": "gb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 274, + "y": 108, + "w": 20, + "h": 20 + } + }, + { + "filename": "magnet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 274, + "y": 128, + "w": 20, + "h": 20 + } + }, + { + "filename": "candy_jar", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 294, + "y": 87, + "w": 19, + "h": 20 + } + }, + { + "filename": "hard_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 20 + }, + "frame": { + "x": 294, + "y": 107, + "w": 19, + "h": 20 + } + }, + { + "filename": "mb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 294, + "y": 127, + "w": 20, + "h": 20 + } + }, + { + "filename": "lucky_egg", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 20 + }, + "frame": { + "x": 313, + "y": 85, + "w": 17, + "h": 20 + } + }, + { + "filename": "pb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 330, + "y": 84, + "w": 20, + "h": 20 + } + }, + { + "filename": "pb_gold", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 313, + "y": 105, + "w": 20, + "h": 20 + } + }, + { + "filename": "rb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 314, + "y": 125, + "w": 20, + "h": 20 + } + }, + { + "filename": "razor_fang", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 18, + "h": 20 + }, + "frame": { + "x": 333, + "y": 104, + "w": 18, + "h": 20 + } + }, + { + "filename": "smooth_meteorite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 334, + "y": 124, + "w": 20, + "h": 20 + } + }, + { + "filename": "revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 12, + "h": 17 + }, + "frame": { + "x": 350, + "y": 84, + "w": 12, + "h": 17 + } + }, + { + "filename": "razor_claw", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 20, + "h": 19 + }, + "frame": { + "x": 362, + "y": 85, + "w": 20, + "h": 19 + } + }, + { + "filename": "strange_ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 351, + "y": 104, + "w": 20, + "h": 20 + } + }, + { + "filename": "ub", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 354, + "y": 124, + "w": 20, + "h": 20 + } + }, + { + "filename": "big_mushroom", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 19, + "h": 19 + }, + "frame": { + "x": 371, + "y": 104, + "w": 19, + "h": 19 + } + }, + { + "filename": "miracle_seed", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 19, + "h": 19 + }, + "frame": { + "x": 374, + "y": 123, + "w": 19, + "h": 19 + } + }, { "filename": "wl_full_restore", "rotated": false, @@ -5757,8 +5799,8 @@ "h": 18 }, "frame": { - "x": 214, - "y": 335, + "x": 314, + "y": 145, "w": 20, "h": 18 } @@ -5778,8 +5820,8 @@ "h": 18 }, "frame": { - "x": 234, - "y": 300, + "x": 334, + "y": 144, "w": 20, "h": 18 } @@ -5799,12 +5841,33 @@ "h": 18 }, "frame": { - "x": 234, - "y": 318, + "x": 354, + "y": 144, "w": 20, "h": 18 } }, + { + "filename": "oval_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 19 + }, + "frame": { + "x": 374, + "y": 142, + "w": 18, + "h": 19 + } + }, { "filename": "wl_ice_heal", "rotated": false, @@ -5820,54 +5883,12 @@ "h": 18 }, "frame": { - "x": 234, - "y": 336, + "x": 294, + "y": 147, "w": 20, "h": 18 } }, - { - "filename": "dark_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 254, - "y": 300, - "w": 18, - "h": 18 - } - }, - { - "filename": "light_stone", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 18, - "h": 18 - }, - "frame": { - "x": 254, - "y": 318, - "w": 18, - "h": 18 - } - }, { "filename": "wl_item_drop", "rotated": false, @@ -5883,8 +5904,8 @@ "h": 18 }, "frame": { - "x": 272, - "y": 298, + "x": 292, + "y": 165, "w": 20, "h": 18 } @@ -5904,12 +5925,33 @@ "h": 18 }, "frame": { - "x": 272, - "y": 316, + "x": 292, + "y": 183, "w": 20, "h": 18 } }, + { + "filename": "candy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 11, + "w": 18, + "h": 18 + }, + "frame": { + "x": 296, + "y": 201, + "w": 18, + "h": 18 + } + }, { "filename": "wl_max_elixir", "rotated": false, @@ -5925,8 +5967,8 @@ "h": 18 }, "frame": { - "x": 292, - "y": 298, + "x": 314, + "y": 163, "w": 20, "h": 18 } @@ -5946,8 +5988,8 @@ "h": 18 }, "frame": { - "x": 292, - "y": 316, + "x": 334, + "y": 162, "w": 20, "h": 18 } @@ -5967,12 +6009,33 @@ "h": 18 }, "frame": { - "x": 312, - "y": 298, + "x": 354, + "y": 162, "w": 20, "h": 18 } }, + { + "filename": "dark_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 374, + "y": 161, + "w": 18, + "h": 18 + } + }, { "filename": "wl_max_revive", "rotated": false, @@ -5989,11 +6052,32 @@ }, "frame": { "x": 312, - "y": 316, + "y": 181, "w": 20, "h": 18 } }, + { + "filename": "light_stone", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 18, + "h": 18 + }, + "frame": { + "x": 314, + "y": 199, + "w": 18, + "h": 18 + } + }, { "filename": "wl_paralyze_heal", "rotated": false, @@ -6009,8 +6093,8 @@ "h": 18 }, "frame": { - "x": 332, - "y": 298, + "x": 334, + "y": 180, "w": 20, "h": 18 } @@ -6030,8 +6114,8 @@ "h": 18 }, "frame": { - "x": 332, - "y": 316, + "x": 354, + "y": 180, "w": 20, "h": 18 } @@ -6051,8 +6135,8 @@ "h": 18 }, "frame": { - "x": 254, - "y": 336, + "x": 374, + "y": 179, "w": 20, "h": 18 } @@ -6072,8 +6156,8 @@ "h": 18 }, "frame": { - "x": 274, - "y": 334, + "x": 332, + "y": 198, "w": 20, "h": 18 } @@ -6093,8 +6177,8 @@ "h": 18 }, "frame": { - "x": 294, - "y": 334, + "x": 352, + "y": 198, "w": 20, "h": 18 } @@ -6115,11 +6199,32 @@ }, "frame": { "x": 314, - "y": 334, + "y": 217, "w": 17, "h": 16 } }, + { + "filename": "abomasite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 16, + "h": 16 + }, + "frame": { + "x": 302, + "y": 233, + "w": 16, + "h": 16 + } + }, { "filename": "absolite", "rotated": false, @@ -6135,8 +6240,8 @@ "h": 16 }, "frame": { - "x": 331, - "y": 334, + "x": 302, + "y": 249, "w": 16, "h": 16 } @@ -6156,8 +6261,8 @@ "h": 16 }, "frame": { - "x": 352, - "y": 298, + "x": 318, + "y": 233, "w": 16, "h": 16 } @@ -6177,8 +6282,8 @@ "h": 16 }, "frame": { - "x": 352, - "y": 314, + "x": 318, + "y": 249, "w": 16, "h": 16 } @@ -6198,8 +6303,8 @@ "h": 16 }, "frame": { - "x": 159, - "y": 357, + "x": 305, + "y": 265, "w": 16, "h": 16 } @@ -6219,8 +6324,8 @@ "h": 16 }, "frame": { - "x": 158, - "y": 373, + "x": 305, + "y": 281, "w": 16, "h": 16 } @@ -6240,8 +6345,8 @@ "h": 16 }, "frame": { - "x": 347, - "y": 334, + "x": 305, + "y": 297, "w": 16, "h": 16 } @@ -6261,8 +6366,8 @@ "h": 16 }, "frame": { - "x": 196, - "y": 351, + "x": 321, + "y": 265, "w": 16, "h": 16 } @@ -6282,8 +6387,8 @@ "h": 16 }, "frame": { - "x": 212, - "y": 353, + "x": 321, + "y": 281, "w": 16, "h": 16 } @@ -6303,8 +6408,8 @@ "h": 16 }, "frame": { - "x": 228, - "y": 354, + "x": 321, + "y": 297, "w": 16, "h": 16 } @@ -6324,8 +6429,8 @@ "h": 16 }, "frame": { - "x": 244, - "y": 354, + "x": 309, + "y": 313, "w": 16, "h": 16 } @@ -6345,8 +6450,8 @@ "h": 16 }, "frame": { - "x": 260, - "y": 354, + "x": 325, + "y": 313, "w": 16, "h": 16 } @@ -6366,8 +6471,8 @@ "h": 16 }, "frame": { - "x": 276, - "y": 352, + "x": 311, + "y": 329, "w": 16, "h": 16 } @@ -6387,8 +6492,8 @@ "h": 16 }, "frame": { - "x": 292, - "y": 352, + "x": 311, + "y": 345, "w": 16, "h": 16 } @@ -6408,8 +6513,8 @@ "h": 16 }, "frame": { - "x": 308, - "y": 352, + "x": 327, + "y": 329, "w": 16, "h": 16 } @@ -6429,8 +6534,8 @@ "h": 16 }, "frame": { - "x": 324, - "y": 350, + "x": 327, + "y": 345, "w": 16, "h": 16 } @@ -6450,8 +6555,8 @@ "h": 16 }, "frame": { - "x": 340, - "y": 350, + "x": 331, + "y": 217, "w": 16, "h": 16 } @@ -6471,8 +6576,8 @@ "h": 16 }, "frame": { - "x": 356, - "y": 350, + "x": 347, + "y": 216, "w": 16, "h": 16 } @@ -6492,8 +6597,8 @@ "h": 16 }, "frame": { - "x": 354, - "y": 131, + "x": 334, + "y": 233, "w": 16, "h": 16 } @@ -6513,8 +6618,8 @@ "h": 16 }, "frame": { - "x": 354, - "y": 147, + "x": 334, + "y": 249, "w": 16, "h": 16 } @@ -6534,8 +6639,8 @@ "h": 16 }, "frame": { - "x": 354, - "y": 163, + "x": 337, + "y": 265, "w": 16, "h": 16 } @@ -6555,8 +6660,8 @@ "h": 16 }, "frame": { - "x": 354, - "y": 179, + "x": 337, + "y": 281, "w": 16, "h": 16 } @@ -6576,8 +6681,8 @@ "h": 16 }, "frame": { - "x": 359, - "y": 195, + "x": 337, + "y": 297, "w": 16, "h": 16 } @@ -6597,8 +6702,8 @@ "h": 16 }, "frame": { - "x": 370, - "y": 129, + "x": 341, + "y": 313, "w": 16, "h": 16 } @@ -6618,8 +6723,8 @@ "h": 16 }, "frame": { - "x": 370, - "y": 145, + "x": 343, + "y": 329, "w": 16, "h": 16 } @@ -6639,8 +6744,8 @@ "h": 16 }, "frame": { - "x": 370, - "y": 161, + "x": 343, + "y": 345, "w": 16, "h": 16 } @@ -6660,8 +6765,8 @@ "h": 16 }, "frame": { - "x": 370, - "y": 177, + "x": 350, + "y": 232, "w": 16, "h": 16 } @@ -6681,8 +6786,8 @@ "h": 16 }, "frame": { - "x": 375, - "y": 193, + "x": 350, + "y": 248, "w": 16, "h": 16 } @@ -6702,8 +6807,8 @@ "h": 16 }, "frame": { - "x": 375, - "y": 209, + "x": 363, + "y": 216, "w": 16, "h": 16 } @@ -6723,8 +6828,8 @@ "h": 16 }, "frame": { - "x": 363, - "y": 225, + "x": 379, + "y": 197, "w": 16, "h": 16 } @@ -6744,8 +6849,8 @@ "h": 16 }, "frame": { - "x": 363, - "y": 241, + "x": 379, + "y": 213, "w": 16, "h": 16 } @@ -6765,33 +6870,12 @@ "h": 16 }, "frame": { - "x": 368, - "y": 257, + "x": 379, + "y": 229, "w": 16, "h": 16 } }, - { - "filename": "candy_overlay", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 12, - "w": 16, - "h": 15 - }, - "frame": { - "x": 368, - "y": 273, - "w": 16, - "h": 15 - } - }, { "filename": "metagrossite", "rotated": false, @@ -6807,8 +6891,8 @@ "h": 16 }, "frame": { - "x": 368, - "y": 288, + "x": 353, + "y": 264, "w": 16, "h": 16 } @@ -6828,8 +6912,8 @@ "h": 16 }, "frame": { - "x": 368, - "y": 304, + "x": 353, + "y": 280, "w": 16, "h": 16 } @@ -6849,8 +6933,8 @@ "h": 16 }, "frame": { - "x": 368, - "y": 320, + "x": 353, + "y": 296, "w": 16, "h": 16 } @@ -6870,8 +6954,8 @@ "h": 16 }, "frame": { - "x": 175, - "y": 357, + "x": 357, + "y": 312, "w": 16, "h": 16 } @@ -6891,8 +6975,8 @@ "h": 16 }, "frame": { - "x": 174, - "y": 373, + "x": 359, + "y": 328, "w": 16, "h": 16 } @@ -6912,8 +6996,8 @@ "h": 16 }, "frame": { - "x": 276, - "y": 368, + "x": 359, + "y": 344, "w": 16, "h": 16 } @@ -6933,8 +7017,8 @@ "h": 16 }, "frame": { - "x": 292, - "y": 368, + "x": 366, + "y": 245, "w": 16, "h": 16 } @@ -6954,8 +7038,8 @@ "h": 16 }, "frame": { - "x": 308, - "y": 368, + "x": 369, + "y": 261, "w": 16, "h": 16 } @@ -6975,8 +7059,8 @@ "h": 16 }, "frame": { - "x": 324, - "y": 366, + "x": 369, + "y": 277, "w": 16, "h": 16 } @@ -6996,8 +7080,8 @@ "h": 16 }, "frame": { - "x": 340, - "y": 366, + "x": 369, + "y": 293, "w": 16, "h": 16 } @@ -7017,8 +7101,8 @@ "h": 16 }, "frame": { - "x": 356, - "y": 366, + "x": 373, + "y": 309, "w": 16, "h": 16 } @@ -7038,8 +7122,8 @@ "h": 16 }, "frame": { - "x": 191, - "y": 367, + "x": 375, + "y": 325, "w": 16, "h": 16 } @@ -7059,8 +7143,8 @@ "h": 16 }, "frame": { - "x": 207, - "y": 369, + "x": 375, + "y": 341, "w": 16, "h": 16 } @@ -7080,8 +7164,8 @@ "h": 16 }, "frame": { - "x": 223, - "y": 370, + "x": 375, + "y": 357, "w": 16, "h": 16 } @@ -7101,8 +7185,8 @@ "h": 16 }, "frame": { - "x": 239, - "y": 370, + "x": 359, + "y": 360, "w": 16, "h": 16 } @@ -7122,8 +7206,8 @@ "h": 16 }, "frame": { - "x": 255, - "y": 370, + "x": 375, + "y": 373, "w": 16, "h": 16 } @@ -7143,8 +7227,8 @@ "h": 16 }, "frame": { - "x": 372, - "y": 336, + "x": 312, + "y": 361, "w": 16, "h": 16 } @@ -7164,8 +7248,8 @@ "h": 16 }, "frame": { - "x": 372, - "y": 352, + "x": 328, + "y": 361, "w": 16, "h": 16 } @@ -7185,8 +7269,8 @@ "h": 16 }, "frame": { - "x": 372, - "y": 368, + "x": 312, + "y": 377, "w": 16, "h": 16 } @@ -7197,6 +7281,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:bda718c15def8b97caee75dc31add8c1:50d57f91c9db9f806a878fdee40ed0cb:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:5e107075b02043b9293b3010d1d1d751:152a3263fda6e8ea193cdf4a11078173:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index 53ba858c5..9a2949349 100644 Binary files a/public/images/items.png and b/public/images/items.png differ diff --git a/public/images/items/burn_drive.png b/public/images/items/burn_drive.png new file mode 100644 index 000000000..47ad9cc8f Binary files /dev/null and b/public/images/items/burn_drive.png differ diff --git a/public/images/items/chill_drive.png b/public/images/items/chill_drive.png new file mode 100644 index 000000000..d5ef99b16 Binary files /dev/null and b/public/images/items/chill_drive.png differ diff --git a/public/images/items/douse_drive.png b/public/images/items/douse_drive.png new file mode 100644 index 000000000..0f9f780e5 Binary files /dev/null and b/public/images/items/douse_drive.png differ diff --git a/public/images/items/shock_drive.png b/public/images/items/shock_drive.png new file mode 100644 index 000000000..e0bcc66f2 Binary files /dev/null and b/public/images/items/shock_drive.png differ diff --git a/public/images/pbinfo_stat_numbers.json b/public/images/pbinfo_stat_numbers.json new file mode 100644 index 000000000..32170690a --- /dev/null +++ b/public/images/pbinfo_stat_numbers.json @@ -0,0 +1,293 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_numbers.png", + "format": "RGBA8888", + "size": { + "w": 117, + "h": 8 + }, + "scale": 1, + "frames": [ + { + "filename": "+1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "+2", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 9, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "+3", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 18, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "+4", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 27, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "+5", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 36, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "+6", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 45, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 54, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-2", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 63, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-3", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 72, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-4", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 81, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-5", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 90, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-6", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 99, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "0", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 108, + "y": 0, + "w": 9, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:794aa4af3291db5abd8a2667626c1998:1a6706ad557b92f9bf099c23e02af4a6:6537c634087637bb27e8a1edb1ee2e35$" + } +} diff --git a/public/images/pokemon/1019.json b/public/images/pokemon/1019.json index 0b7bbc992..b9a1d141d 100644 --- a/public/images/pokemon/1019.json +++ b/public/images/pokemon/1019.json @@ -4,30 +4,30 @@ "image": "1019.png", "format": "RGBA8888", "size": { - "w": 86, - "h": 86 + "w": 81, + "h": 81 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 71, - "h": 86 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 71, - "h": 86 + "x": 13, + "y": 7, + "w": 70, + "h": 81 }, "frame": { "x": 0, "y": 0, - "w": 71, - "h": 86 + "w": 70, + "h": 81 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "" + "smartupdate": "$TexturePacker:SmartUpdate:11370107317bd979f7506ff64ce97f23:d973af1b21e3616a0ed07b332a99654f:7f41678ca2a06ee5c2aed7357b311846$" } } diff --git a/public/images/pokemon/1019.png b/public/images/pokemon/1019.png index 5b1c97d91..9c11ccecb 100644 Binary files a/public/images/pokemon/1019.png and b/public/images/pokemon/1019.png differ diff --git a/public/images/pokemon/676-dandy.json b/public/images/pokemon/676-dandy.json index 44ac790a4..f7a72a0d5 100644 --- a/public/images/pokemon/676-dandy.json +++ b/public/images/pokemon/676-dandy.json @@ -4,30 +4,30 @@ "image": "676-dandy.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 65, + "h": 65 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 56, - "h": 71 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 71 + "x": 22, + "y": 15, + "w": 50, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 71 + "w": 50, + "h": 65 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:29165e5c573c8a4235076355ce5d29d5:17a1912fd81d23ce8a7209e27ad3e9ed:b5a287256e260744fe6660dc2ceefd11$" + "smartupdate": "$TexturePacker:SmartUpdate:c09947cc1f66b7a7bf844a7caaa3bd76:20ba7e14cce8a9ee80955d94d19ae46f:b5a287256e260744fe6660dc2ceefd11$" } } diff --git a/public/images/pokemon/676-dandy.png b/public/images/pokemon/676-dandy.png index f7303f7ec..1e9f9b7bb 100644 Binary files a/public/images/pokemon/676-dandy.png and b/public/images/pokemon/676-dandy.png differ diff --git a/public/images/pokemon/676-debutante.json b/public/images/pokemon/676-debutante.json index f547be68f..13f12a90a 100644 --- a/public/images/pokemon/676-debutante.json +++ b/public/images/pokemon/676-debutante.json @@ -4,30 +4,30 @@ "image": "676-debutante.png", "format": "RGBA8888", "size": { - "w": 67, - "h": 67 + "w": 61, + "h": 61 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 56, - "h": 67 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 67 + "x": 20, + "y": 19, + "w": 50, + "h": 61 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 67 + "w": 50, + "h": 61 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:689efba1d73755e99f598016fd321c3c:07d06d321fff31976e1b993edb972e4f:bf2f862a1c8881133f9f3ffbf44602fa$" + "smartupdate": "$TexturePacker:SmartUpdate:107780a0e7447bf89ae4998e24021f8b:7623c7ab8d7b6bc5f755e8a1f81ea257:bf2f862a1c8881133f9f3ffbf44602fa$" } } diff --git a/public/images/pokemon/676-debutante.png b/public/images/pokemon/676-debutante.png index b33fb39c8..92390b17f 100644 Binary files a/public/images/pokemon/676-debutante.png and b/public/images/pokemon/676-debutante.png differ diff --git a/public/images/pokemon/676-diamond.json b/public/images/pokemon/676-diamond.json index dec7fd8ea..4fbb88966 100644 --- a/public/images/pokemon/676-diamond.json +++ b/public/images/pokemon/676-diamond.json @@ -4,30 +4,30 @@ "image": "676-diamond.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 68, + "h": 68 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 53, - "h": 74 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 53, - "h": 74 + "x": 24, + "y": 12, + "w": 47, + "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 74 + "w": 47, + "h": 68 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b33f3de937219e7763316531398d7bbd:c7e104da9393ec52b9e6d37f92fc20d9:88c467fc09249b0d2f579d44eacd528d$" + "smartupdate": "$TexturePacker:SmartUpdate:90477dc67c3429f2f0430f0a868ed85c:bd69660307b7d945313b73a256c24d57:88c467fc09249b0d2f579d44eacd528d$" } } diff --git a/public/images/pokemon/676-diamond.png b/public/images/pokemon/676-diamond.png index 1bd0628a5..3915b78ec 100644 Binary files a/public/images/pokemon/676-diamond.png and b/public/images/pokemon/676-diamond.png differ diff --git a/public/images/pokemon/676-heart.json b/public/images/pokemon/676-heart.json index a16c480e3..ac8ea41b3 100644 --- a/public/images/pokemon/676-heart.json +++ b/public/images/pokemon/676-heart.json @@ -4,30 +4,30 @@ "image": "676-heart.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 54, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 54, - "h": 72 + "x": 24, + "y": 14, + "w": 48, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 54, - "h": 72 + "w": 48, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:15e433a2269dd4043b1614811a1b8fbd:421a40542b16cdb2cc154c85e963b40d:e11d4dd16bff2ef69bc5ca683c44ca7c$" + "smartupdate": "$TexturePacker:SmartUpdate:a9b1c7a73abb563b1ecadad8b517794e:2273c7342204f52860d8e96670ddf46a:e11d4dd16bff2ef69bc5ca683c44ca7c$" } } diff --git a/public/images/pokemon/676-heart.png b/public/images/pokemon/676-heart.png index de6d3ebb7..993272086 100644 Binary files a/public/images/pokemon/676-heart.png and b/public/images/pokemon/676-heart.png differ diff --git a/public/images/pokemon/676-kabuki.json b/public/images/pokemon/676-kabuki.json index fa358e848..68e5b1839 100644 --- a/public/images/pokemon/676-kabuki.json +++ b/public/images/pokemon/676-kabuki.json @@ -4,30 +4,30 @@ "image": "676-kabuki.png", "format": "RGBA8888", "size": { - "w": 70, - "h": 70 + "w": 64, + "h": 64 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 58, - "h": 70 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 58, - "h": 70 + "x": 22, + "y": 16, + "w": 52, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 58, - "h": 70 + "w": 52, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:7f4056b1c055475f905d048c8d8d2969:08eecd31f557298e1570ec3490acffe2:c3cad56aa65d2ee971ceebc435a14ee6$" + "smartupdate": "$TexturePacker:SmartUpdate:d36abbc31bcd28664e28eb50f8e4719d:43c9d8bb344b7a1373b93f493badb47e:c3cad56aa65d2ee971ceebc435a14ee6$" } } diff --git a/public/images/pokemon/676-kabuki.png b/public/images/pokemon/676-kabuki.png index c402730a5..c4f6473c7 100644 Binary files a/public/images/pokemon/676-kabuki.png and b/public/images/pokemon/676-kabuki.png differ diff --git a/public/images/pokemon/676-la-reine.json b/public/images/pokemon/676-la-reine.json index 1b7457c31..39ffdb2a6 100644 --- a/public/images/pokemon/676-la-reine.json +++ b/public/images/pokemon/676-la-reine.json @@ -4,30 +4,30 @@ "image": "676-la-reine.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 63, + "h": 63 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 55, - "h": 69 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 55, - "h": 69 + "x": 23, + "y": 17, + "w": 49, + "h": 63 }, "frame": { "x": 0, "y": 0, - "w": 55, - "h": 69 + "w": 49, + "h": 63 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:d209428aca72f49f1e9ee3e97f1c18ab:c56ae957d7acb10c7373b842af3a8786:b99821e87dffda3297dd25a224a9029f$" + "smartupdate": "$TexturePacker:SmartUpdate:81b2b5d853a3d2527630ca0b2fea6569:98097941483e509b7962c50b179d132f:b99821e87dffda3297dd25a224a9029f$" } } diff --git a/public/images/pokemon/676-la-reine.png b/public/images/pokemon/676-la-reine.png index b9cf78ac6..e649e6d74 100644 Binary files a/public/images/pokemon/676-la-reine.png and b/public/images/pokemon/676-la-reine.png differ diff --git a/public/images/pokemon/676-matron.json b/public/images/pokemon/676-matron.json index b85aebf61..1479610e7 100644 --- a/public/images/pokemon/676-matron.json +++ b/public/images/pokemon/676-matron.json @@ -4,30 +4,30 @@ "image": "676-matron.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 62, + "h": 62 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 68 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 52, - "h": 68 + "x": 23, + "y": 18, + "w": 46, + "h": 62 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 68 + "w": 46, + "h": 62 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:698fab0e5221743b912637e774bfaecd:72a9977db421d061829c639e3b50a617:020798583d07c479020bb0af34cf8bb6$" + "smartupdate": "$TexturePacker:SmartUpdate:50d9857668a013306b96adc3777a22b2:7d3708f1b5b6eeb8419815fc6734bf06:020798583d07c479020bb0af34cf8bb6$" } } diff --git a/public/images/pokemon/676-matron.png b/public/images/pokemon/676-matron.png index 4f88ee06a..98142c416 100644 Binary files a/public/images/pokemon/676-matron.png and b/public/images/pokemon/676-matron.png differ diff --git a/public/images/pokemon/676-pharaoh.json b/public/images/pokemon/676-pharaoh.json index abd2fab06..6497ddaf1 100644 --- a/public/images/pokemon/676-pharaoh.json +++ b/public/images/pokemon/676-pharaoh.json @@ -4,30 +4,30 @@ "image": "676-pharaoh.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 63, + "h": 63 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 69 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 52, - "h": 69 + "x": 25, + "y": 17, + "w": 46, + "h": 63 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 69 + "w": 46, + "h": 63 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:5c1df95bcf0d53d4f1b9f1bf77690598:623b4bc6698ef1a984b6bad42e68115b:904b7ab6f57249c96beea4b5f72deb53$" + "smartupdate": "$TexturePacker:SmartUpdate:69f1be06f9a7175f294267b08e7ba275:42e7e4068e30b78248d3629cffa5d2ec:904b7ab6f57249c96beea4b5f72deb53$" } } diff --git a/public/images/pokemon/676-pharaoh.png b/public/images/pokemon/676-pharaoh.png index 6bcc29140..cced07231 100644 Binary files a/public/images/pokemon/676-pharaoh.png and b/public/images/pokemon/676-pharaoh.png differ diff --git a/public/images/pokemon/676-star.json b/public/images/pokemon/676-star.json index e5442941a..aeb84ebb1 100644 --- a/public/images/pokemon/676-star.json +++ b/public/images/pokemon/676-star.json @@ -4,30 +4,30 @@ "image": "676-star.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 56, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 72 + "x": 24, + "y": 14, + "w": 50, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 72 + "w": 50, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:31c1ce60aa953fb647ff40c50ac54cf1:d7eefc05e299310d05d389e05997e449:dd7fedf66b493b0bbdef5d25e0041dd8$" + "smartupdate": "$TexturePacker:SmartUpdate:fde8824a7749541f5af1cc14e6281670:204c6eb602358a5c7c1389b42317ffce:dd7fedf66b493b0bbdef5d25e0041dd8$" } } diff --git a/public/images/pokemon/676-star.png b/public/images/pokemon/676-star.png index 540ba4a2d..7a1044bda 100644 Binary files a/public/images/pokemon/676-star.png and b/public/images/pokemon/676-star.png differ diff --git a/public/images/pokemon/869-caramel-swirl.json b/public/images/pokemon/869-caramel-swirl.json new file mode 100644 index 000000000..fb8f0afb8 --- /dev/null +++ b/public/images/pokemon/869-caramel-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-caramel-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:e565b3b962f894b4de5291159fced6f2:dec57ba4f1836b6834da2da4c98c442a:a9efacddd6da069c39eca521bf0c5c93$" + } +} diff --git a/public/images/pokemon/869-caramel-swirl.png b/public/images/pokemon/869-caramel-swirl.png new file mode 100644 index 000000000..c6bf96794 Binary files /dev/null and b/public/images/pokemon/869-caramel-swirl.png differ diff --git a/public/images/pokemon/869-lemon-cream.json b/public/images/pokemon/869-lemon-cream.json new file mode 100644 index 000000000..419a5c70a --- /dev/null +++ b/public/images/pokemon/869-lemon-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-lemon-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:8a99ba9bf3bfb93bba7c6010553d9e0e:b231a3962960f61ce4d970d95bde3f3c:0284bb2fb44231f3756d5e41407b29dc$" + } +} diff --git a/public/images/pokemon/869-lemon-cream.png b/public/images/pokemon/869-lemon-cream.png new file mode 100644 index 000000000..88e238ece Binary files /dev/null and b/public/images/pokemon/869-lemon-cream.png differ diff --git a/public/images/pokemon/869-matcha-cream.json b/public/images/pokemon/869-matcha-cream.json new file mode 100644 index 000000000..aa1e47ae6 --- /dev/null +++ b/public/images/pokemon/869-matcha-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-matcha-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:713d1a6f0fbac3236c31960e722f4425:29a82de035ed4f33426b4bb6943c4036:3607dee150b69bb8409f07bf4b436c27$" + } +} diff --git a/public/images/pokemon/869-matcha-cream.png b/public/images/pokemon/869-matcha-cream.png new file mode 100644 index 000000000..5e282236c Binary files /dev/null and b/public/images/pokemon/869-matcha-cream.png differ diff --git a/public/images/pokemon/869-mint-cream.json b/public/images/pokemon/869-mint-cream.json new file mode 100644 index 000000000..3d103861c --- /dev/null +++ b/public/images/pokemon/869-mint-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-mint-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:5deaa7830e8cbf001dce6c800a9e3da2:4c9255c2ad6d33fc00a90e447fb8a344:5a3d349b5aaedd43ed9c9acbc0c8652a$" + } +} diff --git a/public/images/pokemon/869-mint-cream.png b/public/images/pokemon/869-mint-cream.png new file mode 100644 index 000000000..d67741eaa Binary files /dev/null and b/public/images/pokemon/869-mint-cream.png differ diff --git a/public/images/pokemon/869-rainbow-swirl.json b/public/images/pokemon/869-rainbow-swirl.json new file mode 100644 index 000000000..b3ac889bc --- /dev/null +++ b/public/images/pokemon/869-rainbow-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-rainbow-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:1a4d1bc0283fdcf9704523ff9c304937:8122f937b67cb25a772bdb63688456b7:5efb62c1b2c8ccb825172755b6a5956b$" + } +} diff --git a/public/images/pokemon/869-rainbow-swirl.png b/public/images/pokemon/869-rainbow-swirl.png new file mode 100644 index 000000000..2e75b9333 Binary files /dev/null and b/public/images/pokemon/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/869-ruby-cream.json b/public/images/pokemon/869-ruby-cream.json new file mode 100644 index 000000000..f7af720c9 --- /dev/null +++ b/public/images/pokemon/869-ruby-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:e03bb56ed3208e982eb0bec819d53bf6:2c86ae79dcda2aeecdcf0c025c16d3c3:36b2afa6f1e593bd875572a5eaa54a8f$" + } +} diff --git a/public/images/pokemon/869-ruby-cream.png b/public/images/pokemon/869-ruby-cream.png new file mode 100644 index 000000000..c699e109e Binary files /dev/null and b/public/images/pokemon/869-ruby-cream.png differ diff --git a/public/images/pokemon/869-ruby-swirl.json b/public/images/pokemon/869-ruby-swirl.json new file mode 100644 index 000000000..8773a4a9b --- /dev/null +++ b/public/images/pokemon/869-ruby-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:3c79af909f9735d7ece0527b789506f2:0b973ea05d9bc875560323eb9df5efe3:ea7e9be6cfcdb9bb39d201b2ab117eae$" + } +} diff --git a/public/images/pokemon/869-ruby-swirl.png b/public/images/pokemon/869-ruby-swirl.png new file mode 100644 index 000000000..3ce92c3e3 Binary files /dev/null and b/public/images/pokemon/869-ruby-swirl.png differ diff --git a/public/images/pokemon/869-salted-cream.json b/public/images/pokemon/869-salted-cream.json new file mode 100644 index 000000000..b812a0c98 --- /dev/null +++ b/public/images/pokemon/869-salted-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-salted-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.5, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 28, + "y": 20, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:bb169ea1db5dad0a39dcd54df8356c06:608e3745adcb907d1f382e251ad807f4:6e5c7cbfd1699b5560a39643a258e386$" + } +} diff --git a/public/images/pokemon/869-salted-cream.png b/public/images/pokemon/869-salted-cream.png new file mode 100644 index 000000000..d8f495476 Binary files /dev/null and b/public/images/pokemon/869-salted-cream.png differ diff --git a/public/images/pokemon/back/1018.json b/public/images/pokemon/back/1018.json index d6d139421..0a922a9b0 100644 --- a/public/images/pokemon/back/1018.json +++ b/public/images/pokemon/back/1018.json @@ -4,30 +4,30 @@ "image": "1018.png", "format": "RGBA8888", "size": { - "w": 83, - "h": 83 + "w": 93, + "h": 93 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 72, - "h": 83 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 72, - "h": 83 + "x": 9, + "y": 1, + "w": 77, + "h": 93 }, "frame": { "x": 0, "y": 0, - "w": 72, - "h": 83 + "w": 77, + "h": 93 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "" + "smartupdate": "$TexturePacker:SmartUpdate:7bcbd22c0ec7417e78bd928f1dd199ef:729a751331cdd4c61b8bc4b78a19a5ec:12f4e8cc755bd0ab0f220a63428f3ba3$" } } diff --git a/public/images/pokemon/back/1018.png b/public/images/pokemon/back/1018.png index 00f38c27a..67c458a99 100644 Binary files a/public/images/pokemon/back/1018.png and b/public/images/pokemon/back/1018.png differ diff --git a/public/images/pokemon/back/1019.json b/public/images/pokemon/back/1019.json index eb95065ec..1b1dcf05a 100644 --- a/public/images/pokemon/back/1019.json +++ b/public/images/pokemon/back/1019.json @@ -4,30 +4,30 @@ "image": "1019.png", "format": "RGBA8888", "size": { - "w": 88, - "h": 88 + "w": 84, + "h": 84 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 60, - "h": 88 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 60, - "h": 88 + "x": 19, + "y": 6, + "w": 57, + "h": 84 }, "frame": { "x": 0, "y": 0, - "w": 60, - "h": 88 + "w": 57, + "h": 84 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "" + "smartupdate": "$TexturePacker:SmartUpdate:fa22ad6f533362429e5f16082dee27ef:8dac5b6219bd93d6b6b186a6e5da1962:7f41678ca2a06ee5c2aed7357b311846$" } } diff --git a/public/images/pokemon/back/1019.png b/public/images/pokemon/back/1019.png index e15a6ce36..ece50558c 100644 Binary files a/public/images/pokemon/back/1019.png and b/public/images/pokemon/back/1019.png differ diff --git a/public/images/pokemon/back/676-dandy.json b/public/images/pokemon/back/676-dandy.json index 15491bd02..a1086d11f 100644 --- a/public/images/pokemon/back/676-dandy.json +++ b/public/images/pokemon/back/676-dandy.json @@ -4,30 +4,30 @@ "image": "676-dandy.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 62, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 62, - "h": 72 + "x": 20, + "y": 14, + "w": 56, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 62, - "h": 72 + "w": 56, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:92d02eca8d05166d15bfa8b79ac478b9:f01538e7a19ca3d0d2fea48cd27d8a4c:b5a287256e260744fe6660dc2ceefd11$" + "smartupdate": "$TexturePacker:SmartUpdate:24899e1e616c6a0b9143d36903f9249e:8132d78c7f1f4ab0f673c82868b6a090:b5a287256e260744fe6660dc2ceefd11$" } } diff --git a/public/images/pokemon/back/676-dandy.png b/public/images/pokemon/back/676-dandy.png index 634a2b0c8..f80525496 100644 Binary files a/public/images/pokemon/back/676-dandy.png and b/public/images/pokemon/back/676-dandy.png differ diff --git a/public/images/pokemon/back/676-debutante.json b/public/images/pokemon/back/676-debutante.json index b0405824a..038880720 100644 --- a/public/images/pokemon/back/676-debutante.json +++ b/public/images/pokemon/back/676-debutante.json @@ -4,30 +4,30 @@ "image": "676-debutante.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 62, + "h": 62 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 57, - "h": 68 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 57, - "h": 68 + "x": 25, + "y": 18, + "w": 51, + "h": 62 }, "frame": { "x": 0, "y": 0, - "w": 57, - "h": 68 + "w": 51, + "h": 62 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:76ef75ea5c9561531c220cdb7f78934d:6f39eb82deb32d251df708f5d4edc9f1:bf2f862a1c8881133f9f3ffbf44602fa$" + "smartupdate": "$TexturePacker:SmartUpdate:ba172ad89c93e6e6f36f621c38e54754:7c9d0d13f309221141cd334833e412a5:bf2f862a1c8881133f9f3ffbf44602fa$" } } diff --git a/public/images/pokemon/back/676-debutante.png b/public/images/pokemon/back/676-debutante.png index 3a7a0d7ab..507ea4add 100644 Binary files a/public/images/pokemon/back/676-debutante.png and b/public/images/pokemon/back/676-debutante.png differ diff --git a/public/images/pokemon/back/676-diamond.json b/public/images/pokemon/back/676-diamond.json index 365afd2bd..ef5a64e38 100644 --- a/public/images/pokemon/back/676-diamond.json +++ b/public/images/pokemon/back/676-diamond.json @@ -4,30 +4,30 @@ "image": "676-diamond.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 68, + "h": 68 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 51, - "h": 74 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 51, - "h": 74 + "x": 27, + "y": 12, + "w": 45, + "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 51, - "h": 74 + "w": 45, + "h": 68 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:d2b094f0534f6acd2e5bbe67b8e94fa8:47037a1746645a551e31781cb8262e1f:88c467fc09249b0d2f579d44eacd528d$" + "smartupdate": "$TexturePacker:SmartUpdate:0a6f3993923b87e1c16c84b1aa8c3705:6d59d20d1b0cd07c3e7a16eadf0de4cf:88c467fc09249b0d2f579d44eacd528d$" } } diff --git a/public/images/pokemon/back/676-diamond.png b/public/images/pokemon/back/676-diamond.png index d737c62b5..9498e4e75 100644 Binary files a/public/images/pokemon/back/676-diamond.png and b/public/images/pokemon/back/676-diamond.png differ diff --git a/public/images/pokemon/back/676-heart.json b/public/images/pokemon/back/676-heart.json index 81c1c4d89..b51d7b201 100644 --- a/public/images/pokemon/back/676-heart.json +++ b/public/images/pokemon/back/676-heart.json @@ -4,30 +4,30 @@ "image": "676-heart.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 65, + "h": 65 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 71 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 52, - "h": 71 + "x": 26, + "y": 15, + "w": 46, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 71 + "w": 46, + "h": 65 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:537e6149183f630be038f053dd62d27d:dce25f0e6474cad17709f18c96ffb3e5:e11d4dd16bff2ef69bc5ca683c44ca7c$" + "smartupdate": "$TexturePacker:SmartUpdate:f99ca7d216355ffd449999125499d32e:cf2dd50594846ac631d9da32cd66dceb:e11d4dd16bff2ef69bc5ca683c44ca7c$" } } diff --git a/public/images/pokemon/back/676-heart.png b/public/images/pokemon/back/676-heart.png index fac541f44..49c83c6c1 100644 Binary files a/public/images/pokemon/back/676-heart.png and b/public/images/pokemon/back/676-heart.png differ diff --git a/public/images/pokemon/back/676-kabuki.json b/public/images/pokemon/back/676-kabuki.json index 3ead18ecd..e5aa1171f 100644 --- a/public/images/pokemon/back/676-kabuki.json +++ b/public/images/pokemon/back/676-kabuki.json @@ -4,30 +4,30 @@ "image": "676-kabuki.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 65, + "h": 65 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 55, - "h": 71 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 55, - "h": 71 + "x": 23, + "y": 15, + "w": 49, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 55, - "h": 71 + "w": 49, + "h": 65 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:dfc02a08763810a151fc4e22c23a3093:2f6c7f2792f64728b478333fc2c65138:c3cad56aa65d2ee971ceebc435a14ee6$" + "smartupdate": "$TexturePacker:SmartUpdate:8de2d15ea2537eb2104a72a133418e94:903840ea77662ae31175e482a712402a:c3cad56aa65d2ee971ceebc435a14ee6$" } } diff --git a/public/images/pokemon/back/676-kabuki.png b/public/images/pokemon/back/676-kabuki.png index bbb1a776e..2aa6fccce 100644 Binary files a/public/images/pokemon/back/676-kabuki.png and b/public/images/pokemon/back/676-kabuki.png differ diff --git a/public/images/pokemon/back/676-la-reine.json b/public/images/pokemon/back/676-la-reine.json index b5de6c65b..57e55b121 100644 --- a/public/images/pokemon/back/676-la-reine.json +++ b/public/images/pokemon/back/676-la-reine.json @@ -4,30 +4,30 @@ "image": "676-la-reine.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 63, + "h": 63 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 54, - "h": 69 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 54, - "h": 69 + "x": 24, + "y": 17, + "w": 48, + "h": 63 }, "frame": { "x": 0, "y": 0, - "w": 54, - "h": 69 + "w": 48, + "h": 63 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:014beffd470b78d94c3234500d9dee5b:3261fa54b4c9574937d670de782ca3e8:b99821e87dffda3297dd25a224a9029f$" + "smartupdate": "$TexturePacker:SmartUpdate:b72b1f5723bb276f4a555ccdbb3ed4c0:0ab778e99ee37c883a0b1a0f918f1bee:b99821e87dffda3297dd25a224a9029f$" } } diff --git a/public/images/pokemon/back/676-la-reine.png b/public/images/pokemon/back/676-la-reine.png index e4d699e5f..2147e5cab 100644 Binary files a/public/images/pokemon/back/676-la-reine.png and b/public/images/pokemon/back/676-la-reine.png differ diff --git a/public/images/pokemon/back/676-matron.json b/public/images/pokemon/back/676-matron.json index c9cca4f56..864b6b476 100644 --- a/public/images/pokemon/back/676-matron.json +++ b/public/images/pokemon/back/676-matron.json @@ -4,30 +4,30 @@ "image": "676-matron.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 62, + "h": 62 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 53, - "h": 68 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 53, - "h": 68 + "x": 26, + "y": 18, + "w": 47, + "h": 62 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 68 + "w": 47, + "h": 62 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a9199442be3400b8a70f8ad212790732:18b55adc9c377d1b24d6b236e1f39177:020798583d07c479020bb0af34cf8bb6$" + "smartupdate": "$TexturePacker:SmartUpdate:d447de0737ae7f9ca8690e7f039a884d:1ffc2bfd67fda79ede1d0e489bf36c94:020798583d07c479020bb0af34cf8bb6$" } } diff --git a/public/images/pokemon/back/676-matron.png b/public/images/pokemon/back/676-matron.png index 1867cf457..38092e4fe 100644 Binary files a/public/images/pokemon/back/676-matron.png and b/public/images/pokemon/back/676-matron.png differ diff --git a/public/images/pokemon/back/676-pharaoh.json b/public/images/pokemon/back/676-pharaoh.json index b43902fd6..428354fdb 100644 --- a/public/images/pokemon/back/676-pharaoh.json +++ b/public/images/pokemon/back/676-pharaoh.json @@ -4,30 +4,30 @@ "image": "676-pharaoh.png", "format": "RGBA8888", "size": { - "w": 70, - "h": 70 + "w": 64, + "h": 64 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 53, - "h": 70 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 53, - "h": 70 + "x": 25, + "y": 16, + "w": 47, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 70 + "w": 47, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:be799b3acab0a591e7b2d4a2ad903c94:6260eeb9aa48a1047c8ec12842ac28c6:904b7ab6f57249c96beea4b5f72deb53$" + "smartupdate": "$TexturePacker:SmartUpdate:729eefb95778889aa11840e684f35af8:9c72a2d345e9be40096dffd6b99a7ba0:904b7ab6f57249c96beea4b5f72deb53$" } } diff --git a/public/images/pokemon/back/676-pharaoh.png b/public/images/pokemon/back/676-pharaoh.png index 4c139a498..a7ca04640 100644 Binary files a/public/images/pokemon/back/676-pharaoh.png and b/public/images/pokemon/back/676-pharaoh.png differ diff --git a/public/images/pokemon/back/676-star.json b/public/images/pokemon/back/676-star.json index bbc9eebe3..2e0b0f309 100644 --- a/public/images/pokemon/back/676-star.json +++ b/public/images/pokemon/back/676-star.json @@ -4,30 +4,30 @@ "image": "676-star.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 54, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 54, - "h": 72 + "x": 24, + "y": 14, + "w": 48, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 54, - "h": 72 + "w": 48, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:8a18f8f110bc4f6f6e86ca95b9a566b8:c9e3d3db02b6ea0720a20b9bbd159d79:dd7fedf66b493b0bbdef5d25e0041dd8$" + "smartupdate": "$TexturePacker:SmartUpdate:37e89522e7b92408df9d52c3d98137ea:241a531f0918e0a4b616569e7d4bc186:dd7fedf66b493b0bbdef5d25e0041dd8$" } } diff --git a/public/images/pokemon/back/676-star.png b/public/images/pokemon/back/676-star.png index 0ad915156..9b0824883 100644 Binary files a/public/images/pokemon/back/676-star.png and b/public/images/pokemon/back/676-star.png differ diff --git a/public/images/pokemon/back/869-caramel-swirl.json b/public/images/pokemon/back/869-caramel-swirl.json new file mode 100644 index 000000000..edf2b5a9a --- /dev/null +++ b/public/images/pokemon/back/869-caramel-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-caramel-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:2e4ddfde96ab312ce7d94315e5d95a9c:7f74b65259ec1e4bcb1f62f02643d8a7:a9efacddd6da069c39eca521bf0c5c93$" + } +} diff --git a/public/images/pokemon/back/869-caramel-swirl.png b/public/images/pokemon/back/869-caramel-swirl.png new file mode 100644 index 000000000..74556910b Binary files /dev/null and b/public/images/pokemon/back/869-caramel-swirl.png differ diff --git a/public/images/pokemon/back/869-lemon-cream.json b/public/images/pokemon/back/869-lemon-cream.json new file mode 100644 index 000000000..7e8eb3f1f --- /dev/null +++ b/public/images/pokemon/back/869-lemon-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-lemon-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:003640cdcb017af6d6fb7cce7ae5e1df:4dc2b3e45490e0868ac99d9aa7102c07:0284bb2fb44231f3756d5e41407b29dc$" + } +} diff --git a/public/images/pokemon/back/869-lemon-cream.png b/public/images/pokemon/back/869-lemon-cream.png new file mode 100644 index 000000000..749e7c7aa Binary files /dev/null and b/public/images/pokemon/back/869-lemon-cream.png differ diff --git a/public/images/pokemon/back/869-matcha-cream.json b/public/images/pokemon/back/869-matcha-cream.json new file mode 100644 index 000000000..261272c02 --- /dev/null +++ b/public/images/pokemon/back/869-matcha-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-matcha-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:78c1fa20bd0f496a72dacd28367a66ad:96033ef5b7aeeb9456771109824bd27d:3607dee150b69bb8409f07bf4b436c27$" + } +} diff --git a/public/images/pokemon/back/869-matcha-cream.png b/public/images/pokemon/back/869-matcha-cream.png new file mode 100644 index 000000000..32570610f Binary files /dev/null and b/public/images/pokemon/back/869-matcha-cream.png differ diff --git a/public/images/pokemon/back/869-mint-cream.json b/public/images/pokemon/back/869-mint-cream.json new file mode 100644 index 000000000..23db1b920 --- /dev/null +++ b/public/images/pokemon/back/869-mint-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-mint-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:567b2cbeb4dd05e9ea75a9745678a661:daa4e8bd833c1f1b8fcef7664611a23f:5a3d349b5aaedd43ed9c9acbc0c8652a$" + } +} diff --git a/public/images/pokemon/back/869-mint-cream.png b/public/images/pokemon/back/869-mint-cream.png new file mode 100644 index 000000000..ec1976d35 Binary files /dev/null and b/public/images/pokemon/back/869-mint-cream.png differ diff --git a/public/images/pokemon/back/869-rainbow-swirl.json b/public/images/pokemon/back/869-rainbow-swirl.json new file mode 100644 index 000000000..f19a44433 --- /dev/null +++ b/public/images/pokemon/back/869-rainbow-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-rainbow-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:3be6ab13976cde5a336b4186625bf386:e472d87a989050125ac960a9e53d8c77:5efb62c1b2c8ccb825172755b6a5956b$" + } +} diff --git a/public/images/pokemon/back/869-rainbow-swirl.png b/public/images/pokemon/back/869-rainbow-swirl.png new file mode 100644 index 000000000..5454202ef Binary files /dev/null and b/public/images/pokemon/back/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/back/869-ruby-cream.json b/public/images/pokemon/back/869-ruby-cream.json new file mode 100644 index 000000000..ac2e4e0fa --- /dev/null +++ b/public/images/pokemon/back/869-ruby-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:5e1a2e975f94fce84da322e45069c702:68247ca18f9dd3e2bc269dc772ad069d:36b2afa6f1e593bd875572a5eaa54a8f$" + } +} diff --git a/public/images/pokemon/back/869-ruby-cream.png b/public/images/pokemon/back/869-ruby-cream.png new file mode 100644 index 000000000..00cbd4720 Binary files /dev/null and b/public/images/pokemon/back/869-ruby-cream.png differ diff --git a/public/images/pokemon/back/869-ruby-swirl.json b/public/images/pokemon/back/869-ruby-swirl.json new file mode 100644 index 000000000..ac2d6213f --- /dev/null +++ b/public/images/pokemon/back/869-ruby-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:74597d1dd20480b7437d63ffff36fdc6:712fef9349381ad34ea1cf553353507e:ea7e9be6cfcdb9bb39d201b2ab117eae$" + } +} diff --git a/public/images/pokemon/back/869-ruby-swirl.png b/public/images/pokemon/back/869-ruby-swirl.png new file mode 100644 index 000000000..96f91ba6c Binary files /dev/null and b/public/images/pokemon/back/869-ruby-swirl.png differ diff --git a/public/images/pokemon/back/869-salted-cream.json b/public/images/pokemon/back/869-salted-cream.json new file mode 100644 index 000000000..995a0769f --- /dev/null +++ b/public/images/pokemon/back/869-salted-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-salted-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 0.333, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 96, + "h": 96 + }, + "spriteSourceSize": { + "x": 30, + "y": 20, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:e2389a610f198709cf6d31d9265f1dec:150abb49e4602321790850b291b4a7fb:6e5c7cbfd1699b5560a39643a258e386$" + } +} diff --git a/public/images/pokemon/back/869-salted-cream.png b/public/images/pokemon/back/869-salted-cream.png new file mode 100644 index 000000000..7b81e6e7f Binary files /dev/null and b/public/images/pokemon/back/869-salted-cream.png differ diff --git a/public/images/pokemon/back/shiny/1018.json b/public/images/pokemon/back/shiny/1018.json index d6d139421..46647b102 100644 --- a/public/images/pokemon/back/shiny/1018.json +++ b/public/images/pokemon/back/shiny/1018.json @@ -4,30 +4,30 @@ "image": "1018.png", "format": "RGBA8888", "size": { - "w": 83, - "h": 83 + "w": 93, + "h": 93 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 72, - "h": 83 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 72, - "h": 83 + "x": 9, + "y": 1, + "w": 77, + "h": 93 }, "frame": { "x": 0, "y": 0, - "w": 72, - "h": 83 + "w": 77, + "h": 93 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "" + "smartupdate": "$TexturePacker:SmartUpdate:19cb90b37890ea754c5d1edca5326abb:e99262614bcac2d671e12ed0bc4eb1d2:12f4e8cc755bd0ab0f220a63428f3ba3$" } } diff --git a/public/images/pokemon/back/shiny/1018.png b/public/images/pokemon/back/shiny/1018.png index e6b429763..a1dbb2f55 100644 Binary files a/public/images/pokemon/back/shiny/1018.png and b/public/images/pokemon/back/shiny/1018.png differ diff --git a/public/images/pokemon/back/shiny/1019.json b/public/images/pokemon/back/shiny/1019.json index eb95065ec..5ee6f7f85 100644 --- a/public/images/pokemon/back/shiny/1019.json +++ b/public/images/pokemon/back/shiny/1019.json @@ -4,30 +4,30 @@ "image": "1019.png", "format": "RGBA8888", "size": { - "w": 88, - "h": 88 + "w": 84, + "h": 84 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 60, - "h": 88 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 60, - "h": 88 + "x": 19, + "y": 6, + "w": 57, + "h": 84 }, "frame": { "x": 0, "y": 0, - "w": 60, - "h": 88 + "w": 57, + "h": 84 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "" + "smartupdate": "$TexturePacker:SmartUpdate:583d46caa69d701c444b02879c33295e:5c81ac32256868d5970b2442ad4a700c:7f41678ca2a06ee5c2aed7357b311846$" } } diff --git a/public/images/pokemon/back/shiny/1019.png b/public/images/pokemon/back/shiny/1019.png index af93cd23c..a2c326350 100644 Binary files a/public/images/pokemon/back/shiny/1019.png and b/public/images/pokemon/back/shiny/1019.png differ diff --git a/public/images/pokemon/back/shiny/676-dandy.json b/public/images/pokemon/back/shiny/676-dandy.json index c2bbb272d..b13560feb 100644 --- a/public/images/pokemon/back/shiny/676-dandy.json +++ b/public/images/pokemon/back/shiny/676-dandy.json @@ -4,30 +4,30 @@ "image": "676-dandy.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 62, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 62, - "h": 72 + "x": 20, + "y": 14, + "w": 56, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 62, - "h": 72 + "w": 56, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:9a72775f436bbda574bf3721630310fb:f01538e7a19ca3d0d2fea48cd27d8a4c:b5a287256e260744fe6660dc2ceefd11$" + "smartupdate": "$TexturePacker:SmartUpdate:30c2972a226f8e360e323bea40a8005e:232a9bbcc4dba00a033204f1ec06cffd:b5a287256e260744fe6660dc2ceefd11$" } } diff --git a/public/images/pokemon/back/shiny/676-dandy.png b/public/images/pokemon/back/shiny/676-dandy.png index 634a2b0c8..f8c77d883 100644 Binary files a/public/images/pokemon/back/shiny/676-dandy.png and b/public/images/pokemon/back/shiny/676-dandy.png differ diff --git a/public/images/pokemon/back/shiny/676-debutante.json b/public/images/pokemon/back/shiny/676-debutante.json index b1067eed9..0469fb670 100644 --- a/public/images/pokemon/back/shiny/676-debutante.json +++ b/public/images/pokemon/back/shiny/676-debutante.json @@ -4,30 +4,30 @@ "image": "676-debutante.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 62, + "h": 62 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 57, - "h": 68 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 57, - "h": 68 + "x": 25, + "y": 18, + "w": 51, + "h": 62 }, "frame": { "x": 0, "y": 0, - "w": 57, - "h": 68 + "w": 51, + "h": 62 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6d038d8d188d6e545741353c2dd5b812:6f39eb82deb32d251df708f5d4edc9f1:bf2f862a1c8881133f9f3ffbf44602fa$" + "smartupdate": "$TexturePacker:SmartUpdate:5a68081e37dfebc3935ecf4a4fbee3ad:71cbee6966c08512b0617eba3ce34a49:bf2f862a1c8881133f9f3ffbf44602fa$" } } diff --git a/public/images/pokemon/back/shiny/676-debutante.png b/public/images/pokemon/back/shiny/676-debutante.png index 3a7a0d7ab..965e0aaf8 100644 Binary files a/public/images/pokemon/back/shiny/676-debutante.png and b/public/images/pokemon/back/shiny/676-debutante.png differ diff --git a/public/images/pokemon/back/shiny/676-diamond.json b/public/images/pokemon/back/shiny/676-diamond.json index 2df54c70a..50319863e 100644 --- a/public/images/pokemon/back/shiny/676-diamond.json +++ b/public/images/pokemon/back/shiny/676-diamond.json @@ -4,30 +4,30 @@ "image": "676-diamond.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 68, + "h": 68 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 51, - "h": 74 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 51, - "h": 74 + "x": 27, + "y": 12, + "w": 45, + "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 51, - "h": 74 + "w": 45, + "h": 68 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6e2189160ebb9fff02e9a051ee296d91:47037a1746645a551e31781cb8262e1f:88c467fc09249b0d2f579d44eacd528d$" + "smartupdate": "$TexturePacker:SmartUpdate:2d32af44d56592301808b561e6fa22f6:c70b6710f9c7ebb5268979a777193386:88c467fc09249b0d2f579d44eacd528d$" } } diff --git a/public/images/pokemon/back/shiny/676-diamond.png b/public/images/pokemon/back/shiny/676-diamond.png index d737c62b5..9ea8ff978 100644 Binary files a/public/images/pokemon/back/shiny/676-diamond.png and b/public/images/pokemon/back/shiny/676-diamond.png differ diff --git a/public/images/pokemon/back/shiny/676-heart.json b/public/images/pokemon/back/shiny/676-heart.json index 6ebd9b679..6202b4b20 100644 --- a/public/images/pokemon/back/shiny/676-heart.json +++ b/public/images/pokemon/back/shiny/676-heart.json @@ -4,30 +4,30 @@ "image": "676-heart.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 65, + "h": 65 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 71 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 52, - "h": 71 + "x": 26, + "y": 15, + "w": 46, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 71 + "w": 46, + "h": 65 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:bd54cfc49b95a12709696441044b115c:dce25f0e6474cad17709f18c96ffb3e5:e11d4dd16bff2ef69bc5ca683c44ca7c$" + "smartupdate": "$TexturePacker:SmartUpdate:e936d451ba0b36434d6444cb1b80f4d9:0b0d0b49e11fcc790a20130e3ab18ca5:e11d4dd16bff2ef69bc5ca683c44ca7c$" } } diff --git a/public/images/pokemon/back/shiny/676-heart.png b/public/images/pokemon/back/shiny/676-heart.png index fac541f44..e44c8218a 100644 Binary files a/public/images/pokemon/back/shiny/676-heart.png and b/public/images/pokemon/back/shiny/676-heart.png differ diff --git a/public/images/pokemon/back/shiny/676-kabuki.json b/public/images/pokemon/back/shiny/676-kabuki.json index 140e74be3..87bcba2e9 100644 --- a/public/images/pokemon/back/shiny/676-kabuki.json +++ b/public/images/pokemon/back/shiny/676-kabuki.json @@ -4,30 +4,30 @@ "image": "676-kabuki.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 65, + "h": 65 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 55, - "h": 71 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 55, - "h": 71 + "x": 23, + "y": 15, + "w": 49, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 55, - "h": 71 + "w": 49, + "h": 65 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:5bd5ad9678c59b2b1d85a6af103ba1ba:2f6c7f2792f64728b478333fc2c65138:c3cad56aa65d2ee971ceebc435a14ee6$" + "smartupdate": "$TexturePacker:SmartUpdate:517d96cd6baa5b7616a51e8c4fed7a55:0a0f239ab3df60459410fab5eba8a4e6:c3cad56aa65d2ee971ceebc435a14ee6$" } } diff --git a/public/images/pokemon/back/shiny/676-kabuki.png b/public/images/pokemon/back/shiny/676-kabuki.png index bbb1a776e..e81aada06 100644 Binary files a/public/images/pokemon/back/shiny/676-kabuki.png and b/public/images/pokemon/back/shiny/676-kabuki.png differ diff --git a/public/images/pokemon/back/shiny/676-la-reine.json b/public/images/pokemon/back/shiny/676-la-reine.json index 88ddfdc23..a5b408946 100644 --- a/public/images/pokemon/back/shiny/676-la-reine.json +++ b/public/images/pokemon/back/shiny/676-la-reine.json @@ -4,30 +4,30 @@ "image": "676-la-reine.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 63, + "h": 63 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 54, - "h": 69 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 54, - "h": 69 + "x": 24, + "y": 17, + "w": 48, + "h": 63 }, "frame": { "x": 0, "y": 0, - "w": 54, - "h": 69 + "w": 48, + "h": 63 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:e01297ffc2dd40460e87b64750997ca6:3261fa54b4c9574937d670de782ca3e8:b99821e87dffda3297dd25a224a9029f$" + "smartupdate": "$TexturePacker:SmartUpdate:e2179e3c9dfa079f84af302283187a80:518e57f1e0614d1aedad1d9826def3d4:b99821e87dffda3297dd25a224a9029f$" } } diff --git a/public/images/pokemon/back/shiny/676-la-reine.png b/public/images/pokemon/back/shiny/676-la-reine.png index e4d699e5f..78e43bc30 100644 Binary files a/public/images/pokemon/back/shiny/676-la-reine.png and b/public/images/pokemon/back/shiny/676-la-reine.png differ diff --git a/public/images/pokemon/back/shiny/676-matron.json b/public/images/pokemon/back/shiny/676-matron.json index 6bf6d37dd..b24180fa8 100644 --- a/public/images/pokemon/back/shiny/676-matron.json +++ b/public/images/pokemon/back/shiny/676-matron.json @@ -4,30 +4,30 @@ "image": "676-matron.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 62, + "h": 62 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 53, - "h": 68 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 53, - "h": 68 + "x": 26, + "y": 18, + "w": 47, + "h": 62 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 68 + "w": 47, + "h": 62 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:262f28877dc9ef9e7920282c4b36b8dd:18b55adc9c377d1b24d6b236e1f39177:020798583d07c479020bb0af34cf8bb6$" + "smartupdate": "$TexturePacker:SmartUpdate:6c9b45763eb4fedb5ec7099762f23606:884e9813686e91cf2a2cd9f51652a875:020798583d07c479020bb0af34cf8bb6$" } } diff --git a/public/images/pokemon/back/shiny/676-matron.png b/public/images/pokemon/back/shiny/676-matron.png index 1867cf457..0324b0baf 100644 Binary files a/public/images/pokemon/back/shiny/676-matron.png and b/public/images/pokemon/back/shiny/676-matron.png differ diff --git a/public/images/pokemon/back/shiny/676-pharaoh.json b/public/images/pokemon/back/shiny/676-pharaoh.json index da4835011..9b18b9697 100644 --- a/public/images/pokemon/back/shiny/676-pharaoh.json +++ b/public/images/pokemon/back/shiny/676-pharaoh.json @@ -4,30 +4,30 @@ "image": "676-pharaoh.png", "format": "RGBA8888", "size": { - "w": 70, - "h": 70 + "w": 64, + "h": 64 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 53, - "h": 70 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 53, - "h": 70 + "x": 25, + "y": 16, + "w": 47, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 70 + "w": 47, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a5d56fc494b2194036a8d6d1d876a296:6260eeb9aa48a1047c8ec12842ac28c6:904b7ab6f57249c96beea4b5f72deb53$" + "smartupdate": "$TexturePacker:SmartUpdate:5143f43786377eae745a9355e5e1cc24:158aa35a349be4cf7c56820170aa4546:904b7ab6f57249c96beea4b5f72deb53$" } } diff --git a/public/images/pokemon/back/shiny/676-pharaoh.png b/public/images/pokemon/back/shiny/676-pharaoh.png index 4c139a498..563c2f93e 100644 Binary files a/public/images/pokemon/back/shiny/676-pharaoh.png and b/public/images/pokemon/back/shiny/676-pharaoh.png differ diff --git a/public/images/pokemon/back/shiny/676-star.json b/public/images/pokemon/back/shiny/676-star.json index 1ef3e6a61..6ca9f42e5 100644 --- a/public/images/pokemon/back/shiny/676-star.json +++ b/public/images/pokemon/back/shiny/676-star.json @@ -4,30 +4,30 @@ "image": "676-star.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.333, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 54, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 54, - "h": 72 + "x": 24, + "y": 14, + "w": 48, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 54, - "h": 72 + "w": 48, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6be66775c485bf44d69f7cd44e346324:c9e3d3db02b6ea0720a20b9bbd159d79:dd7fedf66b493b0bbdef5d25e0041dd8$" + "smartupdate": "$TexturePacker:SmartUpdate:d9af00245cb6498c9dec7508ed563454:12f19bad174b64678e8b8be8455f2b5a:dd7fedf66b493b0bbdef5d25e0041dd8$" } } diff --git a/public/images/pokemon/back/shiny/676-star.png b/public/images/pokemon/back/shiny/676-star.png index 0ad915156..0f388480b 100644 Binary files a/public/images/pokemon/back/shiny/676-star.png and b/public/images/pokemon/back/shiny/676-star.png differ diff --git a/public/images/pokemon/back/shiny/678.json b/public/images/pokemon/back/shiny/678.json index 98341ac8e..14101a5b0 100644 --- a/public/images/pokemon/back/shiny/678.json +++ b/public/images/pokemon/back/shiny/678.json @@ -4,219 +4,30 @@ "image": "678.png", "format": "RGBA8888", "size": { - "w": 157, - "h": 157 + "w": 55, + "h": 55 }, - "scale": 1, + "scale": 0.333, "frames": [ - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 25, - "y": 16, - "w": 54, - "h": 60 - }, - "frame": { - "x": 0, - "y": 0, - "w": 54, - "h": 60 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 25, - "y": 16, - "w": 54, - "h": 60 - }, - "frame": { - "x": 0, - "y": 0, - "w": 54, - "h": 60 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 25, - "y": 15, - "w": 53, - "h": 61 - }, - "frame": { - "x": 54, - "y": 0, - "w": 53, - "h": 61 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 25, - "y": 15, - "w": 53, - "h": 61 - }, - "frame": { - "x": 54, - "y": 0, - "w": 53, - "h": 61 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 24, - "y": 15, - "w": 52, - "h": 61 - }, - "frame": { - "x": 0, - "y": 60, - "w": 52, - "h": 61 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 24, - "y": 15, - "w": 52, - "h": 61 - }, - "frame": { - "x": 0, - "y": 60, - "w": 52, - "h": 61 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 26, - "y": 16, - "w": 54, - "h": 60 - }, - "frame": { - "x": 52, - "y": 61, - "w": 54, - "h": 60 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 24, - "y": 17, - "w": 51, - "h": 59 - }, - "frame": { - "x": 106, - "y": 61, - "w": 51, - "h": 59 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 96, - "h": 96 - }, - "spriteSourceSize": { - "x": 24, - "y": 17, - "w": 51, - "h": 59 - }, - "frame": { - "x": 106, - "y": 61, - "w": 51, - "h": 59 - } - }, { "filename": "0001.png", "rotated": false, - "trimmed": true, + "trimmed": false, "sourceSize": { "w": 96, "h": 96 }, "spriteSourceSize": { - "x": 23, - "y": 19, - "w": 50, - "h": 57 + "x": 25, + "y": 20, + "w": 46, + "h": 55 }, "frame": { - "x": 107, + "x": 0, "y": 0, - "w": 50, - "h": 57 + "w": 46, + "h": 55 } } ] @@ -225,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ab77ad452685ab677c7e5e70a386e880:27bb9b07316cb5c401e67e15e2b0f06a:887aa14e4a3a3e9141c6ae460f968db1$" + "smartupdate": "$TexturePacker:SmartUpdate:7b46b2656390e5ddac94370837e7cdaa:7f76286d5acb65066eff0c2532fa7fea:887aa14e4a3a3e9141c6ae460f968db1$" } } diff --git a/public/images/pokemon/back/shiny/678.png b/public/images/pokemon/back/shiny/678.png index 7bb6cfc0b..3e9d72b06 100644 Binary files a/public/images/pokemon/back/shiny/678.png and b/public/images/pokemon/back/shiny/678.png differ diff --git a/public/images/pokemon/back/shiny/869-caramel-swirl.json b/public/images/pokemon/back/shiny/869-caramel-swirl.json new file mode 100644 index 000000000..c189169e6 --- /dev/null +++ b/public/images/pokemon/back/shiny/869-caramel-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-caramel-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-caramel-swirl.png b/public/images/pokemon/back/shiny/869-caramel-swirl.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-caramel-swirl.png differ diff --git a/public/images/pokemon/back/shiny/869-lemon-cream.json b/public/images/pokemon/back/shiny/869-lemon-cream.json new file mode 100644 index 000000000..51ea7fa51 --- /dev/null +++ b/public/images/pokemon/back/shiny/869-lemon-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-lemon-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-lemon-cream.png b/public/images/pokemon/back/shiny/869-lemon-cream.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-lemon-cream.png differ diff --git a/public/images/pokemon/back/shiny/869-matcha-cream.json b/public/images/pokemon/back/shiny/869-matcha-cream.json new file mode 100644 index 000000000..344546032 --- /dev/null +++ b/public/images/pokemon/back/shiny/869-matcha-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-matcha-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-matcha-cream.png b/public/images/pokemon/back/shiny/869-matcha-cream.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-matcha-cream.png differ diff --git a/public/images/pokemon/back/shiny/869-mint-cream.json b/public/images/pokemon/back/shiny/869-mint-cream.json new file mode 100644 index 000000000..21eaa4e01 --- /dev/null +++ b/public/images/pokemon/back/shiny/869-mint-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-mint-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-mint-cream.png b/public/images/pokemon/back/shiny/869-mint-cream.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-mint-cream.png differ diff --git a/public/images/pokemon/back/shiny/869-rainbow-swirl.json b/public/images/pokemon/back/shiny/869-rainbow-swirl.json new file mode 100644 index 000000000..cb5a4c26c --- /dev/null +++ b/public/images/pokemon/back/shiny/869-rainbow-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-rainbow-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-rainbow-swirl.png b/public/images/pokemon/back/shiny/869-rainbow-swirl.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/back/shiny/869-ruby-cream.json b/public/images/pokemon/back/shiny/869-ruby-cream.json new file mode 100644 index 000000000..bd3277d2d --- /dev/null +++ b/public/images/pokemon/back/shiny/869-ruby-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-ruby-cream.png b/public/images/pokemon/back/shiny/869-ruby-cream.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-ruby-cream.png differ diff --git a/public/images/pokemon/back/shiny/869-ruby-swirl.json b/public/images/pokemon/back/shiny/869-ruby-swirl.json new file mode 100644 index 000000000..8a487e005 --- /dev/null +++ b/public/images/pokemon/back/shiny/869-ruby-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-ruby-swirl.png b/public/images/pokemon/back/shiny/869-ruby-swirl.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-ruby-swirl.png differ diff --git a/public/images/pokemon/back/shiny/869-salted-cream.json b/public/images/pokemon/back/shiny/869-salted-cream.json new file mode 100644 index 000000000..e3aeb125b --- /dev/null +++ b/public/images/pokemon/back/shiny/869-salted-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-salted-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 36, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 36, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:9282a977590712360ae72153b51f6d19:8a8b13830aca0ac27048eddc715c72bd:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/back/shiny/869-salted-cream.png b/public/images/pokemon/back/shiny/869-salted-cream.png new file mode 100644 index 000000000..5407d6e73 Binary files /dev/null and b/public/images/pokemon/back/shiny/869-salted-cream.png differ diff --git a/public/images/pokemon/exp/945.json b/public/images/pokemon/exp/945.json index 9456e435d..31ba1c930 100644 --- a/public/images/pokemon/exp/945.json +++ b/public/images/pokemon/exp/945.json @@ -146,14 +146,14 @@ "spriteSourceSize": { "x": 0, "y": 0, - "w": 3, - "h": 3 + "w": 66, + "h": 55 }, "frame": { - "x": 132, - "y": 0, - "w": 3, - "h": 3 + "x": 0, + "y": 112, + "w": 66, + "h": 55 } }, { diff --git a/public/images/pokemon/icons/869s-caramel-swirl.png b/public/images/pokemon/icons/869s-caramel-swirl.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-caramel-swirl.png differ diff --git a/public/images/pokemon/icons/869s-lemon-cream.png b/public/images/pokemon/icons/869s-lemon-cream.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-lemon-cream.png differ diff --git a/public/images/pokemon/icons/869s-matcha-cream.png b/public/images/pokemon/icons/869s-matcha-cream.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-matcha-cream.png differ diff --git a/public/images/pokemon/icons/869s-mint-cream.png b/public/images/pokemon/icons/869s-mint-cream.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-mint-cream.png differ diff --git a/public/images/pokemon/icons/869s-rainbow-swirl.png b/public/images/pokemon/icons/869s-rainbow-swirl.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-rainbow-swirl.png differ diff --git a/public/images/pokemon/icons/869s-ruby-cream.png b/public/images/pokemon/icons/869s-ruby-cream.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-ruby-cream.png differ diff --git a/public/images/pokemon/icons/869s-ruby-swirl.png b/public/images/pokemon/icons/869s-ruby-swirl.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-ruby-swirl.png differ diff --git a/public/images/pokemon/icons/869s-salted-cream.png b/public/images/pokemon/icons/869s-salted-cream.png new file mode 100644 index 000000000..32cb4cc7d Binary files /dev/null and b/public/images/pokemon/icons/869s-salted-cream.png differ diff --git a/public/images/pokemon/icons/variant/1/118_1.png b/public/images/pokemon/icons/variant/1/118_1.png new file mode 100644 index 000000000..595f76d79 Binary files /dev/null and b/public/images/pokemon/icons/variant/1/118_1.png differ diff --git a/public/images/pokemon/icons/variant/1/29_2.png b/public/images/pokemon/icons/variant/1/29_2.png index 12d66fb15..55b1f0eda 100644 Binary files a/public/images/pokemon/icons/variant/1/29_2.png and b/public/images/pokemon/icons/variant/1/29_2.png differ diff --git a/public/images/pokemon/icons/variant/1/29_3.png b/public/images/pokemon/icons/variant/1/29_3.png index c5f1f4aae..90326c212 100644 Binary files a/public/images/pokemon/icons/variant/1/29_3.png and b/public/images/pokemon/icons/variant/1/29_3.png differ diff --git a/public/images/pokemon/icons/variant/1/30_2.png b/public/images/pokemon/icons/variant/1/30_2.png index 29e97832b..87cc4ec72 100644 Binary files a/public/images/pokemon/icons/variant/1/30_2.png and b/public/images/pokemon/icons/variant/1/30_2.png differ diff --git a/public/images/pokemon/icons/variant/1/30_3.png b/public/images/pokemon/icons/variant/1/30_3.png index 5d292322f..3fe2fc433 100644 Binary files a/public/images/pokemon/icons/variant/1/30_3.png and b/public/images/pokemon/icons/variant/1/30_3.png differ diff --git a/public/images/pokemon/icons/variant/1/31_1.png b/public/images/pokemon/icons/variant/1/31_1.png index 51ab04f75..ca7d5d98b 100644 Binary files a/public/images/pokemon/icons/variant/1/31_1.png and b/public/images/pokemon/icons/variant/1/31_1.png differ diff --git a/public/images/pokemon/icons/variant/1/31_3.png b/public/images/pokemon/icons/variant/1/31_3.png index 020c42185..381a31087 100644 Binary files a/public/images/pokemon/icons/variant/1/31_3.png and b/public/images/pokemon/icons/variant/1/31_3.png differ diff --git a/public/images/pokemon/icons/variant/3/278_1.png b/public/images/pokemon/icons/variant/3/278_1.png new file mode 100644 index 000000000..4f8f65eab Binary files /dev/null and b/public/images/pokemon/icons/variant/3/278_1.png differ diff --git a/public/images/pokemon/icons/variant/3/278_2.png b/public/images/pokemon/icons/variant/3/278_2.png new file mode 100644 index 000000000..4791920bc Binary files /dev/null and b/public/images/pokemon/icons/variant/3/278_2.png differ diff --git a/public/images/pokemon/icons/variant/3/278_3.png b/public/images/pokemon/icons/variant/3/278_3.png new file mode 100644 index 000000000..95555099b Binary files /dev/null and b/public/images/pokemon/icons/variant/3/278_3.png differ diff --git a/public/images/pokemon/icons/variant/3/279_1.png b/public/images/pokemon/icons/variant/3/279_1.png new file mode 100644 index 000000000..661c6e102 Binary files /dev/null and b/public/images/pokemon/icons/variant/3/279_1.png differ diff --git a/public/images/pokemon/icons/variant/3/279_2.png b/public/images/pokemon/icons/variant/3/279_2.png new file mode 100644 index 000000000..007f58ba3 Binary files /dev/null and b/public/images/pokemon/icons/variant/3/279_2.png differ diff --git a/public/images/pokemon/icons/variant/3/279_3.png b/public/images/pokemon/icons/variant/3/279_3.png new file mode 100644 index 000000000..57c4e388f Binary files /dev/null and b/public/images/pokemon/icons/variant/3/279_3.png differ diff --git a/public/images/pokemon/icons/variant/3/320_2.png b/public/images/pokemon/icons/variant/3/320_2.png new file mode 100644 index 000000000..3cc82654b Binary files /dev/null and b/public/images/pokemon/icons/variant/3/320_2.png differ diff --git a/public/images/pokemon/icons/variant/3/320_3.png b/public/images/pokemon/icons/variant/3/320_3.png new file mode 100644 index 000000000..967dbe095 Binary files /dev/null and b/public/images/pokemon/icons/variant/3/320_3.png differ diff --git a/public/images/pokemon/icons/variant/3/321_2.png b/public/images/pokemon/icons/variant/3/321_2.png new file mode 100644 index 000000000..fc49d4dc0 Binary files /dev/null and b/public/images/pokemon/icons/variant/3/321_2.png differ diff --git a/public/images/pokemon/icons/variant/3/321_3.png b/public/images/pokemon/icons/variant/3/321_3.png new file mode 100644 index 000000000..e672b2804 Binary files /dev/null and b/public/images/pokemon/icons/variant/3/321_3.png differ diff --git a/public/images/pokemon/icons/variant/3/333_2.png b/public/images/pokemon/icons/variant/3/333_2.png index 052e9cdbb..dba83c56e 100644 Binary files a/public/images/pokemon/icons/variant/3/333_2.png and b/public/images/pokemon/icons/variant/3/333_2.png differ diff --git a/public/images/pokemon/icons/variant/3/333_3.png b/public/images/pokemon/icons/variant/3/333_3.png index dba83c56e..052e9cdbb 100644 Binary files a/public/images/pokemon/icons/variant/3/333_3.png and b/public/images/pokemon/icons/variant/3/333_3.png differ diff --git a/public/images/pokemon/icons/variant/3/334_2.png b/public/images/pokemon/icons/variant/3/334_2.png index 08d3ac09a..ed4a145fa 100644 Binary files a/public/images/pokemon/icons/variant/3/334_2.png and b/public/images/pokemon/icons/variant/3/334_2.png differ diff --git a/public/images/pokemon/icons/variant/3/334_3.png b/public/images/pokemon/icons/variant/3/334_3.png index ed4a145fa..08d3ac09a 100644 Binary files a/public/images/pokemon/icons/variant/3/334_3.png and b/public/images/pokemon/icons/variant/3/334_3.png differ diff --git a/public/images/pokemon/icons/variant/4/485_2.png b/public/images/pokemon/icons/variant/4/485_2.png new file mode 100644 index 000000000..57759e932 Binary files /dev/null and b/public/images/pokemon/icons/variant/4/485_2.png differ diff --git a/public/images/pokemon/icons/variant/4/485_3.png b/public/images/pokemon/icons/variant/4/485_3.png new file mode 100644 index 000000000..2f133e8fb Binary files /dev/null and b/public/images/pokemon/icons/variant/4/485_3.png differ diff --git a/public/images/pokemon/icons/variant/5/547_2.png b/public/images/pokemon/icons/variant/5/547_2.png index 2294b1133..767a0d4ad 100644 Binary files a/public/images/pokemon/icons/variant/5/547_2.png and b/public/images/pokemon/icons/variant/5/547_2.png differ diff --git a/public/images/pokemon/icons/variant/5/547_3.png b/public/images/pokemon/icons/variant/5/547_3.png index 1af57cc09..a0c24d519 100644 Binary files a/public/images/pokemon/icons/variant/5/547_3.png and b/public/images/pokemon/icons/variant/5/547_3.png differ diff --git a/public/images/pokemon/icons/variant/5/592-f_1.png b/public/images/pokemon/icons/variant/5/592-f_1.png new file mode 100644 index 000000000..b30360cd0 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592-f_1.png differ diff --git a/public/images/pokemon/icons/variant/5/592-f_2.png b/public/images/pokemon/icons/variant/5/592-f_2.png new file mode 100644 index 000000000..42dec5432 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592-f_2.png differ diff --git a/public/images/pokemon/icons/variant/5/592-f_3.png b/public/images/pokemon/icons/variant/5/592-f_3.png new file mode 100644 index 000000000..bb4dc0ff0 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592-f_3.png differ diff --git a/public/images/pokemon/icons/variant/5/592_2.png b/public/images/pokemon/icons/variant/5/592_2.png new file mode 100644 index 000000000..fc869a64b Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592_2.png differ diff --git a/public/images/pokemon/icons/variant/5/592_3.png b/public/images/pokemon/icons/variant/5/592_3.png new file mode 100644 index 000000000..202459f76 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592_3.png differ diff --git a/public/images/pokemon/icons/variant/5/593-f_1.png b/public/images/pokemon/icons/variant/5/593-f_1.png new file mode 100644 index 000000000..32d2e427c Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593-f_1.png differ diff --git a/public/images/pokemon/icons/variant/5/593-f_2.png b/public/images/pokemon/icons/variant/5/593-f_2.png new file mode 100644 index 000000000..348c50106 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593-f_2.png differ diff --git a/public/images/pokemon/icons/variant/5/593-f_3.png b/public/images/pokemon/icons/variant/5/593-f_3.png new file mode 100644 index 000000000..da94471a0 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593-f_3.png differ diff --git a/public/images/pokemon/icons/variant/5/593_2.png b/public/images/pokemon/icons/variant/5/593_2.png new file mode 100644 index 000000000..ee7d77ef5 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593_2.png differ diff --git a/public/images/pokemon/icons/variant/5/593_3.png b/public/images/pokemon/icons/variant/5/593_3.png new file mode 100644 index 000000000..0134d25d0 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593_3.png differ diff --git a/public/images/pokemon/icons/variant/5/619_2.png b/public/images/pokemon/icons/variant/5/619_2.png new file mode 100644 index 000000000..61fb4716f Binary files /dev/null and b/public/images/pokemon/icons/variant/5/619_2.png differ diff --git a/public/images/pokemon/icons/variant/5/619_3.png b/public/images/pokemon/icons/variant/5/619_3.png new file mode 100644 index 000000000..9af922c97 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/619_3.png differ diff --git a/public/images/pokemon/icons/variant/5/620_2.png b/public/images/pokemon/icons/variant/5/620_2.png new file mode 100644 index 000000000..6042f2bb6 Binary files /dev/null and b/public/images/pokemon/icons/variant/5/620_2.png differ diff --git a/public/images/pokemon/icons/variant/5/620_3.png b/public/images/pokemon/icons/variant/5/620_3.png new file mode 100644 index 000000000..09750c3ea Binary files /dev/null and b/public/images/pokemon/icons/variant/5/620_3.png differ diff --git a/public/images/pokemon/icons/variant/8/850_2.png b/public/images/pokemon/icons/variant/8/850_2.png new file mode 100644 index 000000000..6b0d9c063 Binary files /dev/null and b/public/images/pokemon/icons/variant/8/850_2.png differ diff --git a/public/images/pokemon/icons/variant/8/850_3.png b/public/images/pokemon/icons/variant/8/850_3.png new file mode 100644 index 000000000..646f2c44b Binary files /dev/null and b/public/images/pokemon/icons/variant/8/850_3.png differ diff --git a/public/images/pokemon/icons/variant/8/851_2.png b/public/images/pokemon/icons/variant/8/851_2.png new file mode 100644 index 000000000..9da1c12a8 Binary files /dev/null and b/public/images/pokemon/icons/variant/8/851_2.png differ diff --git a/public/images/pokemon/icons/variant/8/851_3.png b/public/images/pokemon/icons/variant/8/851_3.png new file mode 100644 index 000000000..32e9ec3cd Binary files /dev/null and b/public/images/pokemon/icons/variant/8/851_3.png differ diff --git a/public/images/pokemon/icons/variant/9/935_1.png b/public/images/pokemon/icons/variant/9/935_1.png new file mode 100644 index 000000000..90c5add80 Binary files /dev/null and b/public/images/pokemon/icons/variant/9/935_1.png differ diff --git a/public/images/pokemon/icons/variant/9/935_2.png b/public/images/pokemon/icons/variant/9/935_2.png new file mode 100644 index 000000000..0dd9c43c9 Binary files /dev/null and b/public/images/pokemon/icons/variant/9/935_2.png differ diff --git a/public/images/pokemon/icons/variant/9/935_3.png b/public/images/pokemon/icons/variant/9/935_3.png index b8d1b63a1..5cfcb9b23 100644 Binary files a/public/images/pokemon/icons/variant/9/935_3.png and b/public/images/pokemon/icons/variant/9/935_3.png differ diff --git a/public/images/pokemon/icons/variant/9/936_1.png b/public/images/pokemon/icons/variant/9/936_1.png new file mode 100644 index 000000000..06c39d728 Binary files /dev/null and b/public/images/pokemon/icons/variant/9/936_1.png differ diff --git a/public/images/pokemon/icons/variant/9/936_2.png b/public/images/pokemon/icons/variant/9/936_2.png new file mode 100644 index 000000000..80e4f83d1 Binary files /dev/null and b/public/images/pokemon/icons/variant/9/936_2.png differ diff --git a/public/images/pokemon/icons/variant/9/936_3.png b/public/images/pokemon/icons/variant/9/936_3.png index f2a53aedf..2e2b6cde2 100644 Binary files a/public/images/pokemon/icons/variant/9/936_3.png and b/public/images/pokemon/icons/variant/9/936_3.png differ diff --git a/public/images/pokemon/icons/variant/9/937_1.png b/public/images/pokemon/icons/variant/9/937_1.png new file mode 100644 index 000000000..e45d536a6 Binary files /dev/null and b/public/images/pokemon/icons/variant/9/937_1.png differ diff --git a/public/images/pokemon/icons/variant/9/937_2.png b/public/images/pokemon/icons/variant/9/937_2.png new file mode 100644 index 000000000..1362ef759 Binary files /dev/null and b/public/images/pokemon/icons/variant/9/937_2.png differ diff --git a/public/images/pokemon/icons/variant/9/937_3.png b/public/images/pokemon/icons/variant/9/937_3.png new file mode 100644 index 000000000..cc0a05cea Binary files /dev/null and b/public/images/pokemon/icons/variant/9/937_3.png differ diff --git a/public/images/pokemon/shiny/1019.json b/public/images/pokemon/shiny/1019.json index 0b7bbc992..af764f6a9 100644 --- a/public/images/pokemon/shiny/1019.json +++ b/public/images/pokemon/shiny/1019.json @@ -4,30 +4,30 @@ "image": "1019.png", "format": "RGBA8888", "size": { - "w": 86, - "h": 86 + "w": 81, + "h": 81 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 71, - "h": 86 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 71, - "h": 86 + "x": 13, + "y": 7, + "w": 70, + "h": 81 }, "frame": { "x": 0, "y": 0, - "w": 71, - "h": 86 + "w": 70, + "h": 81 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "" + "smartupdate": "$TexturePacker:SmartUpdate:61191d386d2653b1f8840eb84f7a28d3:0ee88bddc2950bec02599b46f9b482ae:7f41678ca2a06ee5c2aed7357b311846$" } } diff --git a/public/images/pokemon/shiny/1019.png b/public/images/pokemon/shiny/1019.png index 30a0c6d91..29b939436 100644 Binary files a/public/images/pokemon/shiny/1019.png and b/public/images/pokemon/shiny/1019.png differ diff --git a/public/images/pokemon/shiny/676-dandy.json b/public/images/pokemon/shiny/676-dandy.json index 2bb36e87e..770db5763 100644 --- a/public/images/pokemon/shiny/676-dandy.json +++ b/public/images/pokemon/shiny/676-dandy.json @@ -4,30 +4,30 @@ "image": "676-dandy.png", "format": "RGBA8888", "size": { - "w": 71, - "h": 71 + "w": 65, + "h": 65 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 56, - "h": 71 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 71 + "x": 22, + "y": 15, + "w": 50, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 71 + "w": 50, + "h": 65 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:cd88917bff3fae3d6ff808096f539d70:17a1912fd81d23ce8a7209e27ad3e9ed:b5a287256e260744fe6660dc2ceefd11$" + "smartupdate": "$TexturePacker:SmartUpdate:30639f5b87709c77f1b970be4078abf4:7b6183e776852f811a1e5c3fa15805fc:b5a287256e260744fe6660dc2ceefd11$" } } diff --git a/public/images/pokemon/shiny/676-dandy.png b/public/images/pokemon/shiny/676-dandy.png index f7303f7ec..d0e19946a 100644 Binary files a/public/images/pokemon/shiny/676-dandy.png and b/public/images/pokemon/shiny/676-dandy.png differ diff --git a/public/images/pokemon/shiny/676-debutante.json b/public/images/pokemon/shiny/676-debutante.json index fa4859812..720b39294 100644 --- a/public/images/pokemon/shiny/676-debutante.json +++ b/public/images/pokemon/shiny/676-debutante.json @@ -4,30 +4,30 @@ "image": "676-debutante.png", "format": "RGBA8888", "size": { - "w": 67, - "h": 67 + "w": 61, + "h": 61 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 56, - "h": 67 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 67 + "x": 20, + "y": 19, + "w": 50, + "h": 61 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 67 + "w": 50, + "h": 61 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:68f3a2720b7b1e5e59f628f021cac698:07d06d321fff31976e1b993edb972e4f:bf2f862a1c8881133f9f3ffbf44602fa$" + "smartupdate": "$TexturePacker:SmartUpdate:2ccaadba59ae7a3f23287601b725067d:18ae045d433354fd8b461b528bba113d:bf2f862a1c8881133f9f3ffbf44602fa$" } } diff --git a/public/images/pokemon/shiny/676-debutante.png b/public/images/pokemon/shiny/676-debutante.png index b33fb39c8..ff8d8d76d 100644 Binary files a/public/images/pokemon/shiny/676-debutante.png and b/public/images/pokemon/shiny/676-debutante.png differ diff --git a/public/images/pokemon/shiny/676-diamond.json b/public/images/pokemon/shiny/676-diamond.json index 9098c4614..8ceec5a6f 100644 --- a/public/images/pokemon/shiny/676-diamond.json +++ b/public/images/pokemon/shiny/676-diamond.json @@ -4,30 +4,30 @@ "image": "676-diamond.png", "format": "RGBA8888", "size": { - "w": 74, - "h": 74 + "w": 68, + "h": 68 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 53, - "h": 74 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 53, - "h": 74 + "x": 24, + "y": 12, + "w": 47, + "h": 68 }, "frame": { "x": 0, "y": 0, - "w": 53, - "h": 74 + "w": 47, + "h": 68 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:e054ccb4d021c87a6a02c6728403d87a:c7e104da9393ec52b9e6d37f92fc20d9:88c467fc09249b0d2f579d44eacd528d$" + "smartupdate": "$TexturePacker:SmartUpdate:bd55e138e32873b99b7a1a2e237d5278:befb394d45c46c22e2711f4c6d5d9623:88c467fc09249b0d2f579d44eacd528d$" } } diff --git a/public/images/pokemon/shiny/676-diamond.png b/public/images/pokemon/shiny/676-diamond.png index 1bd0628a5..a29257968 100644 Binary files a/public/images/pokemon/shiny/676-diamond.png and b/public/images/pokemon/shiny/676-diamond.png differ diff --git a/public/images/pokemon/shiny/676-heart.json b/public/images/pokemon/shiny/676-heart.json index 43f03c195..a330e953d 100644 --- a/public/images/pokemon/shiny/676-heart.json +++ b/public/images/pokemon/shiny/676-heart.json @@ -4,30 +4,30 @@ "image": "676-heart.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 54, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 54, - "h": 72 + "x": 24, + "y": 14, + "w": 48, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 54, - "h": 72 + "w": 48, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:adb921bf32ae497738fbecc12e2aab07:421a40542b16cdb2cc154c85e963b40d:e11d4dd16bff2ef69bc5ca683c44ca7c$" + "smartupdate": "$TexturePacker:SmartUpdate:6a000209d8789ed27cdd0700711ccc27:75157608bd339b63c9a7ce68e259b3b7:e11d4dd16bff2ef69bc5ca683c44ca7c$" } } diff --git a/public/images/pokemon/shiny/676-heart.png b/public/images/pokemon/shiny/676-heart.png index de6d3ebb7..39c7e8b90 100644 Binary files a/public/images/pokemon/shiny/676-heart.png and b/public/images/pokemon/shiny/676-heart.png differ diff --git a/public/images/pokemon/shiny/676-kabuki.json b/public/images/pokemon/shiny/676-kabuki.json index 7121f0b30..a892c23d2 100644 --- a/public/images/pokemon/shiny/676-kabuki.json +++ b/public/images/pokemon/shiny/676-kabuki.json @@ -4,30 +4,30 @@ "image": "676-kabuki.png", "format": "RGBA8888", "size": { - "w": 70, - "h": 70 + "w": 64, + "h": 64 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 58, - "h": 70 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 58, - "h": 70 + "x": 22, + "y": 16, + "w": 52, + "h": 64 }, "frame": { "x": 0, "y": 0, - "w": 58, - "h": 70 + "w": 52, + "h": 64 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ef8ecfc1b406aa668e3f8daf0dfbaae7:08eecd31f557298e1570ec3490acffe2:c3cad56aa65d2ee971ceebc435a14ee6$" + "smartupdate": "$TexturePacker:SmartUpdate:cd44f74e9b1dc4a581bd72f235552344:1404c36e03543b4eb1d1a4d5916a6652:c3cad56aa65d2ee971ceebc435a14ee6$" } } diff --git a/public/images/pokemon/shiny/676-kabuki.png b/public/images/pokemon/shiny/676-kabuki.png index c402730a5..d11cff6c8 100644 Binary files a/public/images/pokemon/shiny/676-kabuki.png and b/public/images/pokemon/shiny/676-kabuki.png differ diff --git a/public/images/pokemon/shiny/676-la-reine.json b/public/images/pokemon/shiny/676-la-reine.json index dc3c4d596..24299b061 100644 --- a/public/images/pokemon/shiny/676-la-reine.json +++ b/public/images/pokemon/shiny/676-la-reine.json @@ -4,30 +4,30 @@ "image": "676-la-reine.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 63, + "h": 63 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 55, - "h": 69 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 55, - "h": 69 + "x": 23, + "y": 17, + "w": 49, + "h": 63 }, "frame": { "x": 0, "y": 0, - "w": 55, - "h": 69 + "w": 49, + "h": 63 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6ba780e3e4c772966f8fa209410a9370:c56ae957d7acb10c7373b842af3a8786:b99821e87dffda3297dd25a224a9029f$" + "smartupdate": "$TexturePacker:SmartUpdate:1982df9d4acf87f005bb76829bd78a65:e3590ee437367a91742856b3887339a8:b99821e87dffda3297dd25a224a9029f$" } } diff --git a/public/images/pokemon/shiny/676-la-reine.png b/public/images/pokemon/shiny/676-la-reine.png index b9cf78ac6..7eed3ef20 100644 Binary files a/public/images/pokemon/shiny/676-la-reine.png and b/public/images/pokemon/shiny/676-la-reine.png differ diff --git a/public/images/pokemon/shiny/676-matron.json b/public/images/pokemon/shiny/676-matron.json index fac13c655..def3de9d3 100644 --- a/public/images/pokemon/shiny/676-matron.json +++ b/public/images/pokemon/shiny/676-matron.json @@ -4,30 +4,30 @@ "image": "676-matron.png", "format": "RGBA8888", "size": { - "w": 68, - "h": 68 + "w": 62, + "h": 62 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 68 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 52, - "h": 68 + "x": 23, + "y": 18, + "w": 46, + "h": 62 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 68 + "w": 46, + "h": 62 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:89ab717076c514df8295db07981b18e9:72a9977db421d061829c639e3b50a617:020798583d07c479020bb0af34cf8bb6$" + "smartupdate": "$TexturePacker:SmartUpdate:e2bcb6e27807980dfb68c17e65a7e8bd:d2409a3631a4a2263717bf5aa7e273b2:020798583d07c479020bb0af34cf8bb6$" } } diff --git a/public/images/pokemon/shiny/676-matron.png b/public/images/pokemon/shiny/676-matron.png index 4f88ee06a..14e31ce77 100644 Binary files a/public/images/pokemon/shiny/676-matron.png and b/public/images/pokemon/shiny/676-matron.png differ diff --git a/public/images/pokemon/shiny/676-pharaoh.json b/public/images/pokemon/shiny/676-pharaoh.json index 6acf62a9f..0cb4f035c 100644 --- a/public/images/pokemon/shiny/676-pharaoh.json +++ b/public/images/pokemon/shiny/676-pharaoh.json @@ -4,30 +4,30 @@ "image": "676-pharaoh.png", "format": "RGBA8888", "size": { - "w": 69, - "h": 69 + "w": 63, + "h": 63 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 52, - "h": 69 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 52, - "h": 69 + "x": 25, + "y": 17, + "w": 46, + "h": 63 }, "frame": { "x": 0, "y": 0, - "w": 52, - "h": 69 + "w": 46, + "h": 63 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:85c709f8538d07088a17e53a7c85afa0:623b4bc6698ef1a984b6bad42e68115b:904b7ab6f57249c96beea4b5f72deb53$" + "smartupdate": "$TexturePacker:SmartUpdate:bdf2959fe7e2556fe6d031d7de04fc6c:fbff7f59a6ed25ee3eef955cbb3b9a56:904b7ab6f57249c96beea4b5f72deb53$" } } diff --git a/public/images/pokemon/shiny/676-pharaoh.png b/public/images/pokemon/shiny/676-pharaoh.png index 6bcc29140..32b78156f 100644 Binary files a/public/images/pokemon/shiny/676-pharaoh.png and b/public/images/pokemon/shiny/676-pharaoh.png differ diff --git a/public/images/pokemon/shiny/676-star.json b/public/images/pokemon/shiny/676-star.json index 0686d3487..db4d10dde 100644 --- a/public/images/pokemon/shiny/676-star.json +++ b/public/images/pokemon/shiny/676-star.json @@ -4,30 +4,30 @@ "image": "676-star.png", "format": "RGBA8888", "size": { - "w": 72, - "h": 72 + "w": 66, + "h": 66 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, "trimmed": false, "sourceSize": { - "w": 56, - "h": 72 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 56, - "h": 72 + "x": 24, + "y": 14, + "w": 50, + "h": 66 }, "frame": { "x": 0, "y": 0, - "w": 56, - "h": 72 + "w": 50, + "h": 66 } } ] @@ -36,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:56c2df4ee634b690a816b79120bc3600:d7eefc05e299310d05d389e05997e449:dd7fedf66b493b0bbdef5d25e0041dd8$" + "smartupdate": "$TexturePacker:SmartUpdate:a3f92eef83bcae7716ee78c669738785:156a85da733d2e878a00be0efc1c4d38:dd7fedf66b493b0bbdef5d25e0041dd8$" } } diff --git a/public/images/pokemon/shiny/676-star.png b/public/images/pokemon/shiny/676-star.png index 540ba4a2d..d7a327566 100644 Binary files a/public/images/pokemon/shiny/676-star.png and b/public/images/pokemon/shiny/676-star.png differ diff --git a/public/images/pokemon/shiny/678.json b/public/images/pokemon/shiny/678.json index 3b0b49acd..681f84667 100644 --- a/public/images/pokemon/shiny/678.json +++ b/public/images/pokemon/shiny/678.json @@ -4,240 +4,30 @@ "image": "678.png", "format": "RGBA8888", "size": { - "w": 130, - "h": 130 + "w": 56, + "h": 56 }, - "scale": 1, + "scale": 0.5, "frames": [ { "filename": "0001.png", "rotated": false, - "trimmed": true, + "trimmed": false, "sourceSize": { - "w": 80, - "h": 80 + "w": 96, + "h": 96 }, "spriteSourceSize": { - "x": 18, - "y": 11, - "w": 44, - "h": 57 + "x": 25, + "y": 20, + "w": 45, + "h": 56 }, "frame": { "x": 0, "y": 0, - "w": 44, - "h": 57 - } - }, - { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 18, - "y": 11, - "w": 44, - "h": 57 - }, - "frame": { - "x": 0, - "y": 57, - "w": 44, - "h": 57 - } - }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 18, - "y": 11, - "w": 44, - "h": 57 - }, - "frame": { - "x": 0, - "y": 57, - "w": 44, - "h": 57 - } - }, - { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 21, - "y": 15, - "w": 44, - "h": 53 - }, - "frame": { - "x": 44, - "y": 0, - "w": 44, - "h": 53 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 21, - "y": 15, - "w": 44, - "h": 53 - }, - "frame": { - "x": 44, - "y": 0, - "w": 44, - "h": 53 - } - }, - { - "filename": "0004.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 24, - "y": 12, - "w": 42, + "w": 45, "h": 56 - }, - "frame": { - "x": 88, - "y": 0, - "w": 42, - "h": 56 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 24, - "y": 12, - "w": 42, - "h": 56 - }, - "frame": { - "x": 88, - "y": 0, - "w": 42, - "h": 56 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 43, - "h": 57 - }, - "frame": { - "x": 44, - "y": 53, - "w": 43, - "h": 57 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 20, - "y": 11, - "w": 43, - "h": 57 - }, - "frame": { - "x": 44, - "y": 53, - "w": 43, - "h": 57 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 22, - "y": 13, - "w": 43, - "h": 55 - }, - "frame": { - "x": 87, - "y": 56, - "w": 43, - "h": 55 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 80, - "h": 80 - }, - "spriteSourceSize": { - "x": 22, - "y": 13, - "w": 43, - "h": 55 - }, - "frame": { - "x": 87, - "y": 56, - "w": 43, - "h": 55 } } ] @@ -246,6 +36,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:9579cbb834c4127f905679ba92633a05:64ed3d991add5e47034b1ca9aad80a4c:887aa14e4a3a3e9141c6ae460f968db1$" + "smartupdate": "$TexturePacker:SmartUpdate:ee6cbb7807c28f4b3f12e8dcf4da4888:77056356d7cbf2a4fb20508f50dbd3ce:887aa14e4a3a3e9141c6ae460f968db1$" } } diff --git a/public/images/pokemon/shiny/678.png b/public/images/pokemon/shiny/678.png index f41018c98..a2ec8d895 100644 Binary files a/public/images/pokemon/shiny/678.png and b/public/images/pokemon/shiny/678.png differ diff --git a/public/images/pokemon/shiny/869-caramel-swirl.json b/public/images/pokemon/shiny/869-caramel-swirl.json new file mode 100644 index 000000000..d08055197 --- /dev/null +++ b/public/images/pokemon/shiny/869-caramel-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-caramel-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-caramel-swirl.png b/public/images/pokemon/shiny/869-caramel-swirl.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-caramel-swirl.png differ diff --git a/public/images/pokemon/shiny/869-lemon-cream.json b/public/images/pokemon/shiny/869-lemon-cream.json new file mode 100644 index 000000000..1160af929 --- /dev/null +++ b/public/images/pokemon/shiny/869-lemon-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-lemon-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-lemon-cream.png b/public/images/pokemon/shiny/869-lemon-cream.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-lemon-cream.png differ diff --git a/public/images/pokemon/shiny/869-matcha-cream.json b/public/images/pokemon/shiny/869-matcha-cream.json new file mode 100644 index 000000000..149ee6e10 --- /dev/null +++ b/public/images/pokemon/shiny/869-matcha-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-matcha-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-matcha-cream.png b/public/images/pokemon/shiny/869-matcha-cream.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-matcha-cream.png differ diff --git a/public/images/pokemon/shiny/869-mint-cream.json b/public/images/pokemon/shiny/869-mint-cream.json new file mode 100644 index 000000000..aac46fcf4 --- /dev/null +++ b/public/images/pokemon/shiny/869-mint-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-mint-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-mint-cream.png b/public/images/pokemon/shiny/869-mint-cream.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-mint-cream.png differ diff --git a/public/images/pokemon/shiny/869-rainbow-swirl.json b/public/images/pokemon/shiny/869-rainbow-swirl.json new file mode 100644 index 000000000..195e1077d --- /dev/null +++ b/public/images/pokemon/shiny/869-rainbow-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-rainbow-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-rainbow-swirl.png b/public/images/pokemon/shiny/869-rainbow-swirl.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-rainbow-swirl.png differ diff --git a/public/images/pokemon/shiny/869-ruby-cream.json b/public/images/pokemon/shiny/869-ruby-cream.json new file mode 100644 index 000000000..1b2b9f59a --- /dev/null +++ b/public/images/pokemon/shiny/869-ruby-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-ruby-cream.png b/public/images/pokemon/shiny/869-ruby-cream.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-ruby-cream.png differ diff --git a/public/images/pokemon/shiny/869-ruby-swirl.json b/public/images/pokemon/shiny/869-ruby-swirl.json new file mode 100644 index 000000000..384a8d9f3 --- /dev/null +++ b/public/images/pokemon/shiny/869-ruby-swirl.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-ruby-swirl.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-ruby-swirl.png b/public/images/pokemon/shiny/869-ruby-swirl.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-ruby-swirl.png differ diff --git a/public/images/pokemon/shiny/869-salted-cream.json b/public/images/pokemon/shiny/869-salted-cream.json new file mode 100644 index 000000000..b3e92c77f --- /dev/null +++ b/public/images/pokemon/shiny/869-salted-cream.json @@ -0,0 +1,41 @@ +{ + "textures": [ + { + "image": "869-salted-cream.png", + "format": "RGBA8888", + "size": { + "w": 55, + "h": 55 + }, + "scale": 1, + "frames": [ + { + "filename": "0001.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 39, + "h": 55 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + }, + "frame": { + "x": 0, + "y": 0, + "w": 39, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:05eade73b3ac133b2b6bfabb37d329b4:51719e2b4400ad80a2715f69594d3317:18cea997ef38e1531596f96f8db4f25e$" + } +} diff --git a/public/images/pokemon/shiny/869-salted-cream.png b/public/images/pokemon/shiny/869-salted-cream.png new file mode 100644 index 000000000..803686aed Binary files /dev/null and b/public/images/pokemon/shiny/869-salted-cream.png differ diff --git a/public/images/pokemon/variant/29.json b/public/images/pokemon/variant/29.json index 51b8fb15b..1ed0ecf0d 100644 --- a/public/images/pokemon/variant/29.json +++ b/public/images/pokemon/variant/29.json @@ -1,5 +1,5 @@ { - "0": { + "1": { "424284": "6b1524", "7384ad": "a53038", "d6d6ff": "f28566", diff --git a/public/images/pokemon/variant/_masterlist.json b/public/images/pokemon/variant/_masterlist.json index d30106549..613ddb73e 100644 --- a/public/images/pokemon/variant/_masterlist.json +++ b/public/images/pokemon/variant/_masterlist.json @@ -1,7 +1,7 @@ { "29": [ - 1, 0, + 1, 1 ], "30": [ @@ -2991,6 +2991,16 @@ 1, 1 ], + "306-mega": [ + 1, + 1, + 1 + ], + "308-mega": [ + 0, + 1, + 1 + ], "310-mega": [ 0, 1, @@ -3116,6 +3126,16 @@ 1, 1 ], + "747": [ + 0, + 1, + 1 + ], + "748": [ + 0, + 1, + 1 + ], "755": [ 0, 1, @@ -3191,6 +3211,16 @@ 1, 1 ], + "850": [ + 0, + 1, + 1 + ], + "851": [ + 0, + 1, + 1 + ], "856": [ 0, 1, @@ -3448,6 +3478,16 @@ 1, 1 ], + "306-mega": [ + 1, + 1, + 1 + ], + "308-mega": [ + 0, + 1, + 1 + ], "310-mega": [ 0, 1, @@ -3573,6 +3613,16 @@ 1, 1 ], + "747": [ + 0, + 2, + 2 + ], + "748": [ + 0, + 1, + 1 + ], "755": [ 0, 1, @@ -3648,6 +3698,16 @@ 1, 1 ], + "850": [ + 0, + 1, + 1 + ], + "851": [ + 0, + 1, + 1 + ], "856": [ 0, 1, diff --git a/public/images/pokemon/variant/exp/306-mega.json b/public/images/pokemon/variant/exp/306-mega.json new file mode 100644 index 000000000..40575898b --- /dev/null +++ b/public/images/pokemon/variant/exp/306-mega.json @@ -0,0 +1,47 @@ +{ + "0": { + "000000": "101010", + "5a5a62": "4b382a", + "ffffff": "fff2e5", + "cdcdcd": "cbc4a2", + "6a6a6a": "224228", + "52524a": "15321e", + "8b8b8b": "3e6244", + "838394": "a48d76", + "a4a4ac": "bca88c", + "6abdff": "ff78fa", + "acacac": "69ad6c", + "9c3141": "9c3141", + "de5252": "de5252" + }, + "1": { + "000000": "101010", + "5a5a62": "2b265d", + "ffffff": "cdd9fa", + "cdcdcd": "91a1e3", + "6a6a6a": "6e1e26", + "52524a": "47121b", + "8b8b8b": "8b312e", + "838394": "3d3c8c", + "a4a4ac": "686dc0", + "6abdff": "ffcf47", + "acacac": "d4857c", + "9c3141": "bc2d51", + "de5252": "de5291" + }, + "2": { + "000000": "101010", + "5a5a62": "722f15", + "ffffff": "ffcc7d", + "cdcdcd": "d48e3c", + "6a6a6a": "1d365e", + "52524a": "0e213a", + "8b8b8b": "385594", + "838394": "833d19", + "a4a4ac": "a45f34", + "6abdff": "2aebcf", + "acacac": "7d95bf", + "9c3141": "9c3141", + "de5252": "de5252" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/308-mega.json b/public/images/pokemon/variant/exp/308-mega.json new file mode 100644 index 000000000..e46ededfc --- /dev/null +++ b/public/images/pokemon/variant/exp/308-mega.json @@ -0,0 +1,36 @@ +{ + "1": { + "aca4ac": "a58291", + "52414a": "432641", + "ffffff": "fff4db", + "000000": "101010", + "83414a": "59141d", + "e6738b": "a53835", + "ee9ca4": "a53835", + "b44a5a": "83272c", + "c5c5c5": "b5969a", + "a47329": "722966", + "f6de83": "ee9bd5", + "eebd5a": "ce5cb6", + "dedede": "e0cdd9", + "0a7ba2": "efa360", + "45bade": "efa360" + }, + "2": { + "aca4ac": "6c7d9e", + "52414a": "1f344a", + "ffffff": "c4dff1", + "000000": "101010", + "83414a": "461f5d", + "e6738b": "7d5187", + "ee9ca4": "7d5187", + "b44a5a": "633971", + "c5c5c5": "8aacd2", + "a47329": "205a9e", + "f6de83": "5abbef", + "eebd5a": "3a8dca", + "dedede": "c4dff1", + "0a7ba2": "3dc7b6", + "45bade": "3dc7b6" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/747.json b/public/images/pokemon/variant/exp/747.json new file mode 100644 index 000000000..f9ed1405e --- /dev/null +++ b/public/images/pokemon/variant/exp/747.json @@ -0,0 +1,30 @@ +{ + "1": { + "b67e32": "614da4", + "6f3878": "9b6459", + "f3e07c": "e3e2ff", + "b687bc": "edd5ca", + "d1ac1b": "aca5f3", + "8d5b9e": "d29784", + "070707": "101010", + "394f7e": "490a26", + "d7a8d3": "a21f90", + "6291b3": "b24b34", + "9fd5d2": "e07b53", + "ffffff": "fdfdfd" + }, + "2": { + "b67e32": "9f4354", + "6f3878": "113c3a", + "f3e07c": "ffebed", + "b687bc": "2b6157", + "d1ac1b": "efa2ad", + "8d5b9e": "1c524b", + "070707": "101010", + "394f7e": "186443", + "d7a8d3": "ff3f5a", + "6291b3": "359d5d", + "9fd5d2": "5bd97f", + "ffffff": "fdfdfd" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/748.json b/public/images/pokemon/variant/exp/748.json new file mode 100644 index 000000000..280c67629 --- /dev/null +++ b/public/images/pokemon/variant/exp/748.json @@ -0,0 +1,36 @@ +{ + "1": { + "943732": "490a3c", + "101010": "101010", + "f28c4f": "a21f90", + "e25025": "91138c", + "6f97c4": "be583d", + "455b85": "892e20", + "93d1d7": "df7b52", + "711a6a": "81463e", + "d76fa5": "edd5ca", + "171539": "171539", + "3a3f6d": "462952", + "525898": "6c3776", + "b7429a": "d29784", + "863c79": "9b6459", + "ddac02": "ff71ec" + }, + "2": { + "943732": "c30e49", + "101010": "101010", + "f28c4f": "ff3f5a", + "e25025": "e12350", + "6f97c4": "359d5d", + "455b85": "186443", + "93d1d7": "5bd97f", + "711a6a": "082b29", + "d76fa5": "2b6157", + "171539": "490c06", + "3a3f6d": "862916", + "525898": "d75b3c", + "b7429a": "1c524b", + "863c79": "104445", + "ddac02": "ff5068" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/850.json b/public/images/pokemon/variant/exp/850.json new file mode 100644 index 000000000..c799fd3ac --- /dev/null +++ b/public/images/pokemon/variant/exp/850.json @@ -0,0 +1,32 @@ +{ + "1": { + "2f1610": "2f1610", + "804a3e": "59365d", + "bf3922": "117956", + "101010": "101010", + "ff5839": "35c36c", + "5b2f26": "36203c", + "681607": "024f2d", + "f77c42": "89fbad", + "f89e08": "67ef9c", + "ff836c": "5ff58e", + "ffd901": "c8ffcc", + "be5409": "117956", + "fbfbfb": "fbfbfb" + }, + "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" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/851.json b/public/images/pokemon/variant/exp/851.json new file mode 100644 index 000000000..827ace8fc --- /dev/null +++ b/public/images/pokemon/variant/exp/851.json @@ -0,0 +1,36 @@ +{ + "1": { + "be5409": "017336", + "f89e08": "67ef9c", + "ffd901": "c8ffcc", + "bf3922": "1a8987", + "101010": "101010", + "2f1610": "24122b", + "5b2f26": "503154", + "804a3e": "714272", + "681607": "0a5660", + "ff5839": "35c3a8", + "b96f5d": "ad58ab", + "941528": "005f35", + "fbfbfb": "fbfbfb", + "42221c": "36203c", + "000000": "101010" + }, + "2": { + "be5409": "890f52", + "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" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/306-mega.json b/public/images/pokemon/variant/exp/back/306-mega.json new file mode 100644 index 000000000..1fa46dae2 --- /dev/null +++ b/public/images/pokemon/variant/exp/back/306-mega.json @@ -0,0 +1,38 @@ +{ + "0": { + "393939": "132c1b", + "000000": "101010", + "838394": "a48d76", + "6a6a6a": "325537", + "202029": "131d17", + "5a5a62": "735c4a", + "ffffff": "fff2e5", + "52524a": "224228", + "cdcdcd": "cbc4a2", + "a4a4ac": "b8a88a" + }, + "1": { + "393939": "47121b", + "000000": "101010", + "838394": "686dc0", + "6a6a6a": "8b312e", + "202029": "350a13", + "5a5a62": "374186", + "ffffff": "cdd9fa", + "52524a": "6e1e26", + "cdcdcd": "a5b7ed", + "a4a4ac": "91a1e3" + }, + "2": { + "393939": "1d365e", + "000000": "101010", + "838394": "a45f34", + "6a6a6a": "385594", + "202029": "0e213a", + "5a5a62": "7a3a1a", + "ffffff": "f1b25e", + "52524a": "385594", + "cdcdcd": "dd9f57", + "a4a4ac": "c18239" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/308-mega.json b/public/images/pokemon/variant/exp/back/308-mega.json new file mode 100644 index 000000000..b13332e51 --- /dev/null +++ b/public/images/pokemon/variant/exp/back/308-mega.json @@ -0,0 +1,34 @@ +{ + "1": { + "101010": "101010", + "83414a": "59141d", + "e6738b": "a53835", + "b44a5a": "83272c", + "8b838b": "5a4357", + "bdafad": "a5829d", + "52414a": "432641", + "e7e3e7": "e0cdd9", + "f9f8f7": "f9f8f7", + "a47329": "722966", + "eebd5a": "a25793", + "f6de83": "ee9bd5", + "164b5d": "a6571b", + "42a2bd": "efa360" + }, + "2": { + "101010": "101010", + "83414a": "461f5d", + "e6738b": "7d5187", + "b44a5a": "633971", + "8b838b": "445a7e", + "bdafad": "7988a6", + "52414a": "1f344a", + "e7e3e7": "abb7c6", + "f9f8f7": "c4dff1", + "a47329": "285181", + "eebd5a": "4983ad", + "f6de83": "5abbef", + "164b5d": "107270", + "42a2bd": "3dc7b6" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/747_2.json b/public/images/pokemon/variant/exp/back/747_2.json new file mode 100644 index 000000000..7ddd3d695 --- /dev/null +++ b/public/images/pokemon/variant/exp/back/747_2.json @@ -0,0 +1,230 @@ +{ + "textures": [ + { + "image": "747_2.png", + "format": "RGBA8888", + "size": { + "w": 147, + "h": 147 + }, + "scale": 1, + "frames": [ + { + "filename": "0005.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + }, + "frame": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + }, + "frame": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + }, + "frame": { + "x": 62, + "y": 0, + "w": 62, + "h": 49 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 61, + "h": 49 + }, + "frame": { + "x": 0, + "y": 49, + "w": 61, + "h": 49 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 61, + "h": 49 + }, + "frame": { + "x": 0, + "y": 49, + "w": 61, + "h": 49 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 59, + "h": 49 + }, + "frame": { + "x": 0, + "y": 98, + "w": 59, + "h": 49 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 59, + "h": 49 + }, + "frame": { + "x": 0, + "y": 98, + "w": 59, + "h": 49 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 57, + "h": 49 + }, + "frame": { + "x": 59, + "y": 98, + "w": 57, + "h": 49 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 57, + "h": 49 + }, + "frame": { + "x": 59, + "y": 98, + "w": 57, + "h": 49 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 55, + "h": 49 + }, + "frame": { + "x": 61, + "y": 49, + "w": 55, + "h": 49 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:4319e2c59a85fcb72ddcdb0b4089ac8b:29cb568870b0231298c87d5d39f7b933:b26f7254994561969f00f765318acf1c$" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/747_2.png b/public/images/pokemon/variant/exp/back/747_2.png new file mode 100644 index 000000000..3307b34a3 Binary files /dev/null and b/public/images/pokemon/variant/exp/back/747_2.png differ diff --git a/public/images/pokemon/variant/exp/back/747_3.json b/public/images/pokemon/variant/exp/back/747_3.json new file mode 100644 index 000000000..d8eb67611 --- /dev/null +++ b/public/images/pokemon/variant/exp/back/747_3.json @@ -0,0 +1,230 @@ +{ + "textures": [ + { + "image": "747_3.png", + "format": "RGBA8888", + "size": { + "w": 147, + "h": 147 + }, + "scale": 1, + "frames": [ + { + "filename": "0005.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + }, + "frame": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + }, + "frame": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 62, + "h": 49 + }, + "frame": { + "x": 62, + "y": 0, + "w": 62, + "h": 49 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 61, + "h": 49 + }, + "frame": { + "x": 0, + "y": 49, + "w": 61, + "h": 49 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 61, + "h": 49 + }, + "frame": { + "x": 0, + "y": 49, + "w": 61, + "h": 49 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 59, + "h": 49 + }, + "frame": { + "x": 0, + "y": 98, + "w": 59, + "h": 49 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 1, + "y": 0, + "w": 59, + "h": 49 + }, + "frame": { + "x": 0, + "y": 98, + "w": 59, + "h": 49 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 57, + "h": 49 + }, + "frame": { + "x": 59, + "y": 98, + "w": 57, + "h": 49 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 57, + "h": 49 + }, + "frame": { + "x": 59, + "y": 98, + "w": 57, + "h": 49 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 62, + "h": 49 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 55, + "h": 49 + }, + "frame": { + "x": 61, + "y": 49, + "w": 55, + "h": 49 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:4319e2c59a85fcb72ddcdb0b4089ac8b:29cb568870b0231298c87d5d39f7b933:b26f7254994561969f00f765318acf1c$" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/747_3.png b/public/images/pokemon/variant/exp/back/747_3.png new file mode 100644 index 000000000..d6a1d0d6b Binary files /dev/null and b/public/images/pokemon/variant/exp/back/747_3.png differ diff --git a/public/images/pokemon/variant/exp/back/748.json b/public/images/pokemon/variant/exp/back/748.json new file mode 100644 index 000000000..7929514bc --- /dev/null +++ b/public/images/pokemon/variant/exp/back/748.json @@ -0,0 +1,32 @@ +{ + "1": { + "943732": "5c075b", + "101010": "101010", + "f28c4f": "c639bd", + "e25025": "a21f90", + "93d1d7": "df7b52", + "3a3f6d": "171539", + "6f97c4": "be583d", + "711a6a": "81463e", + "455b85": "892e20", + "525898": "6c3776", + "b7429a": "d29784", + "d76fa5": "edd5ca", + "171539": "171539" + }, + "2": { + "943732": "ac063c", + "101010": "101010", + "f28c4f": "ff3f5a", + "e25025": "e12350", + "93d1d7": "5bd97f", + "3a3f6d": "490c06", + "6f97c4": "359d5d", + "711a6a": "082b29", + "455b85": "186443", + "525898": "d75b3c", + "b7429a": "1c524b", + "d76fa5": "2b6157", + "171539": "171539" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/exp/back/850.json b/public/images/pokemon/variant/exp/back/850.json new file mode 100644 index 000000000..b5df39e11 --- /dev/null +++ b/public/images/pokemon/variant/exp/back/850.json @@ -0,0 +1,28 @@ +{ + "1": { + "bf3922": "35c3a8", + "8d3123": "178573", + "5b2f26": "59365d", + "ff5839": "79f1d2", + "804a3e": "8f4b94", + "681607": "065b58", + "42221c": "36203c", + "2f1610": "24122b", + "101010": "101010", + "be5409": "25a96a", + "f89e08": "a3ffb9" + }, + "2": { + "bf3922": "d73981", + "8d3123": "902962", + "5b2f26": "36426c", + "ff5839": "f360a3", + "804a3e": "7866cb", + "681607": "4a1036", + "42221c": "222957", + "2f1610": "121439", + "101010": "101010", + "be5409": "be5409", + "f89e08": "f89e08" + } +} \ 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 new file mode 100644 index 000000000..9fca14e5e --- /dev/null +++ b/public/images/pokemon/variant/exp/back/851.json @@ -0,0 +1,34 @@ +{ + "1": { + "be5409": "017336", + "f89e08": "67ef9c", + "ffd901": "c8ffcc", + "5b2f26": "59365d", + "b96f5d": "d695d5", + "804a3e": "924a91", + "8d3123": "056a3b", + "bf3922": "0c8c48", + "ff5839": "35c36c", + "42221c": "36203c", + "2f1610": "24122b", + "681607": "024f2d", + "101010": "101010", + "941528": "005f35" + }, + "2": { + "be5409": "be5409", + "f89e08": "f36d73", + "ffd901": "ffc143", + "5b2f26": "36426c", + "b96f5d": "7866cb", + "804a3e": "475294", + "8d3123": "ae1165", + "bf3922": "d73981", + "ff5839": "ff6970", + "42221c": "222957", + "2f1610": "121439", + "681607": "6e0442", + "101010": "101010", + "941528": "941528" + } +} \ No newline at end of file diff --git a/public/images/pokemon_icons_1v.json b/public/images/pokemon_icons_1v.json index b0d213057..daa3e070e 100644 --- a/public/images/pokemon_icons_1v.json +++ b/public/images/pokemon_icons_1v.json @@ -4,8 +4,8 @@ "image": "pokemon_icons_1v.png", "format": "RGBA8888", "size": { - "w": 276, - "h": 276 + "w": 277, + "h": 277 }, "scale": 1, "frames": [ @@ -199,7 +199,7 @@ } }, { - "filename": "29_2", + "filename": "29_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -220,7 +220,7 @@ } }, { - "filename": "29_3", + "filename": "29_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -241,7 +241,7 @@ } }, { - "filename": "35_2", + "filename": "29_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -249,7 +249,7 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, + "x": 10, "y": 8, "w": 20, "h": 21 @@ -262,7 +262,7 @@ } }, { - "filename": "35_3", + "filename": "35_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -283,7 +283,7 @@ } }, { - "filename": "123_1", + "filename": "35_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -291,15 +291,36 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, + "x": 11, "y": 8, - "w": 21, + "w": 20, "h": 21 }, "frame": { "x": 20, "y": 17, - "w": 21, + "w": 20, + "h": 21 + } + }, + { + "filename": "118_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 26, + "h": 21 + }, + "frame": { + "x": 40, + "y": 20, + "w": 26, "h": 21 } }, @@ -318,7 +339,7 @@ "h": 21 }, "frame": { - "x": 41, + "x": 66, "y": 20, "w": 26, "h": 21 @@ -339,12 +360,33 @@ "h": 21 }, "frame": { - "x": 67, + "x": 92, "y": 20, "w": 26, "h": 21 } }, + { + "filename": "123_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 21, + "h": 21 + }, + "frame": { + "x": 118, + "y": 20, + "w": 21, + "h": 21 + } + }, { "filename": "123_2", "rotated": false, @@ -360,7 +402,7 @@ "h": 21 }, "frame": { - "x": 93, + "x": 139, "y": 20, "w": 21, "h": 21 @@ -381,7 +423,7 @@ "h": 21 }, "frame": { - "x": 114, + "x": 160, "y": 20, "w": 21, "h": 21 @@ -402,7 +444,7 @@ "h": 21 }, "frame": { - "x": 135, + "x": 181, "y": 20, "w": 31, "h": 21 @@ -423,8 +465,8 @@ "h": 21 }, "frame": { - "x": 166, - "y": 20, + "x": 212, + "y": 21, "w": 31, "h": 21 } @@ -444,7 +486,7 @@ "h": 21 }, "frame": { - "x": 197, + "x": 243, "y": 21, "w": 31, "h": 21 @@ -465,8 +507,8 @@ "h": 22 }, "frame": { - "x": 228, - "y": 21, + "x": 0, + "y": 38, "w": 23, "h": 22 } @@ -486,8 +528,8 @@ "h": 22 }, "frame": { - "x": 251, - "y": 21, + "x": 23, + "y": 41, "w": 23, "h": 22 } @@ -507,8 +549,8 @@ "h": 22 }, "frame": { - "x": 0, - "y": 38, + "x": 46, + "y": 41, "w": 23, "h": 22 } @@ -528,7 +570,7 @@ "h": 22 }, "frame": { - "x": 23, + "x": 69, "y": 41, "w": 24, "h": 22 @@ -549,7 +591,7 @@ "h": 22 }, "frame": { - "x": 47, + "x": 93, "y": 41, "w": 24, "h": 22 @@ -570,7 +612,7 @@ "h": 22 }, "frame": { - "x": 71, + "x": 117, "y": 41, "w": 24, "h": 22 @@ -591,7 +633,7 @@ "h": 22 }, "frame": { - "x": 95, + "x": 141, "y": 41, "w": 24, "h": 22 @@ -612,7 +654,7 @@ "h": 22 }, "frame": { - "x": 119, + "x": 165, "y": 41, "w": 24, "h": 22 @@ -633,7 +675,7 @@ "h": 22 }, "frame": { - "x": 143, + "x": 189, "y": 41, "w": 21, "h": 22 @@ -654,8 +696,8 @@ "h": 22 }, "frame": { - "x": 164, - "y": 41, + "x": 210, + "y": 42, "w": 21, "h": 22 } @@ -675,54 +717,12 @@ "h": 22 }, "frame": { - "x": 185, + "x": 231, "y": 42, "w": 21, "h": 22 } }, - { - "filename": "119_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 22 - }, - "frame": { - "x": 206, - "y": 43, - "w": 27, - "h": 22 - } - }, - { - "filename": "119_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 22 - }, - "frame": { - "x": 233, - "y": 43, - "w": 27, - "h": 22 - } - }, { "filename": "52_1", "rotated": false, @@ -737,6 +737,27 @@ "w": 23, "h": 23 }, + "frame": { + "x": 252, + "y": 42, + "w": 23, + "h": 23 + } + }, + { + "filename": "52_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 23, + "h": 23 + }, "frame": { "x": 0, "y": 60, @@ -745,7 +766,7 @@ } }, { - "filename": "119_3", + "filename": "119_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -765,6 +786,48 @@ "h": 22 } }, + { + "filename": "119_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 27, + "h": 22 + }, + "frame": { + "x": 50, + "y": 63, + "w": 27, + "h": 22 + } + }, + { + "filename": "119_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 27, + "h": 22 + }, + "frame": { + "x": 77, + "y": 63, + "w": 27, + "h": 22 + } + }, { "filename": "144_1", "rotated": false, @@ -780,7 +843,7 @@ "h": 22 }, "frame": { - "x": 50, + "x": 104, "y": 63, "w": 29, "h": 22 @@ -801,7 +864,7 @@ "h": 22 }, "frame": { - "x": 79, + "x": 133, "y": 63, "w": 29, "h": 22 @@ -822,33 +885,12 @@ "h": 22 }, "frame": { - "x": 108, + "x": 162, "y": 63, "w": 29, "h": 22 } }, - { - "filename": "52_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 23, - "h": 23 - }, - "frame": { - "x": 137, - "y": 63, - "w": 23, - "h": 23 - } - }, { "filename": "52_3", "rotated": false, @@ -864,30 +906,9 @@ "h": 23 }, "frame": { - "x": 160, - "y": 63, - "w": 23, - "h": 23 - } - }, - { - "filename": "135_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 23 - }, - "frame": { - "x": 183, + "x": 191, "y": 64, - "w": 22, + "w": 23, "h": 23 } }, @@ -906,8 +927,8 @@ "h": 23 }, "frame": { - "x": 205, - "y": 65, + "x": 214, + "y": 64, "w": 25, "h": 23 } @@ -927,35 +948,14 @@ "h": 23 }, "frame": { - "x": 230, + "x": 239, "y": 65, "w": 25, "h": 23 } }, { - "filename": "30_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 24 - }, - "frame": { - "x": 255, - "y": 65, - "w": 21, - "h": 24 - } - }, - { - "filename": "135_2", + "filename": "135_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -1075,11 +1075,32 @@ }, "frame": { "x": 124, - "y": 86, + "y": 85, "w": 25, "h": 23 } }, + { + "filename": "135_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 6, + "w": 22, + "h": 23 + }, + "frame": { + "x": 149, + "y": 85, + "w": 22, + "h": 23 + } + }, { "filename": "135_3", "rotated": false, @@ -1095,8 +1116,8 @@ "h": 23 }, "frame": { - "x": 149, - "y": 86, + "x": 171, + "y": 87, "w": 22, "h": 23 } @@ -1116,12 +1137,33 @@ "h": 23 }, "frame": { - "x": 171, + "x": 193, "y": 87, "w": 25, "h": 23 } }, + { + "filename": "30_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 21, + "h": 24 + }, + "frame": { + "x": 218, + "y": 87, + "w": 21, + "h": 24 + } + }, { "filename": "136_2", "rotated": false, @@ -1137,28 +1179,7 @@ "h": 23 }, "frame": { - "x": 196, - "y": 88, - "w": 25, - "h": 23 - } - }, - { - "filename": "136_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 23 - }, - "frame": { - "x": 221, + "x": 239, "y": 88, "w": 25, "h": 23 @@ -1179,14 +1200,14 @@ "h": 24 }, "frame": { - "x": 246, - "y": 89, + "x": 0, + "y": 106, "w": 21, "h": 24 } }, { - "filename": "36_2", + "filename": "136_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1194,16 +1215,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 25 + "x": 8, + "y": 6, + "w": 25, + "h": 23 }, "frame": { - "x": 0, - "y": 106, - "w": 22, - "h": 25 + "x": 21, + "y": 108, + "w": 25, + "h": 23 } }, { @@ -1221,7 +1242,7 @@ "h": 24 }, "frame": { - "x": 22, + "x": 46, "y": 108, "w": 28, "h": 24 @@ -1242,7 +1263,7 @@ "h": 24 }, "frame": { - "x": 50, + "x": 74, "y": 108, "w": 28, "h": 24 @@ -1263,7 +1284,7 @@ "h": 24 }, "frame": { - "x": 78, + "x": 102, "y": 108, "w": 28, "h": 24 @@ -1284,8 +1305,8 @@ "h": 24 }, "frame": { - "x": 106, - "y": 109, + "x": 130, + "y": 108, "w": 24, "h": 24 } @@ -1304,27 +1325,6 @@ "w": 24, "h": 24 }, - "frame": { - "x": 130, - "y": 109, - "w": 24, - "h": 24 - } - }, - { - "filename": "47_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 24 - }, "frame": { "x": 154, "y": 110, @@ -1332,6 +1332,27 @@ "h": 24 } }, + { + "filename": "47_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 24, + "h": 24 + }, + "frame": { + "x": 178, + "y": 110, + "w": 24, + "h": 24 + } + }, { "filename": "53_1", "rotated": false, @@ -1347,7 +1368,7 @@ "h": 24 }, "frame": { - "x": 178, + "x": 202, "y": 111, "w": 25, "h": 24 @@ -1368,7 +1389,7 @@ "h": 24 }, "frame": { - "x": 203, + "x": 227, "y": 111, "w": 25, "h": 24 @@ -1389,33 +1410,12 @@ "h": 24 }, "frame": { - "x": 228, - "y": 113, + "x": 252, + "y": 111, "w": 25, "h": 24 } }, - { - "filename": "36_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 25 - }, - "frame": { - "x": 253, - "y": 113, - "w": 22, - "h": 25 - } - }, { "filename": "83_2", "rotated": false, @@ -1432,7 +1432,7 @@ }, "frame": { "x": 0, - "y": 132, + "y": 131, "w": 28, "h": 24 } @@ -1516,11 +1516,32 @@ }, "frame": { "x": 104, - "y": 133, + "y": 132, "w": 27, "h": 24 } }, + { + "filename": "36_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 25 + }, + "frame": { + "x": 131, + "y": 132, + "w": 22, + "h": 25 + } + }, { "filename": "149_3", "rotated": false, @@ -1536,12 +1557,33 @@ "h": 24 }, "frame": { - "x": 131, + "x": 153, "y": 134, "w": 27, "h": 24 } }, + { + "filename": "36_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 25 + }, + "frame": { + "x": 180, + "y": 134, + "w": 22, + "h": 25 + } + }, { "filename": "31_1", "rotated": false, @@ -1557,7 +1599,7 @@ "h": 25 }, "frame": { - "x": 158, + "x": 202, "y": 135, "w": 25, "h": 25 @@ -1578,7 +1620,7 @@ "h": 25 }, "frame": { - "x": 183, + "x": 227, "y": 135, "w": 25, "h": 25 @@ -1599,12 +1641,33 @@ "h": 25 }, "frame": { - "x": 208, - "y": 137, + "x": 252, + "y": 135, "w": 25, "h": 25 } }, + { + "filename": "77_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 26, + "h": 25 + }, + "frame": { + "x": 0, + "y": 155, + "w": 26, + "h": 25 + } + }, { "filename": "71_2", "rotated": false, @@ -1620,8 +1683,8 @@ "h": 25 }, "frame": { - "x": 233, - "y": 138, + "x": 26, + "y": 156, "w": 30, "h": 25 } @@ -1641,33 +1704,12 @@ "h": 25 }, "frame": { - "x": 0, + "x": 56, "y": 156, "w": 30, "h": 25 } }, - { - "filename": "77_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 25 - }, - "frame": { - "x": 30, - "y": 156, - "w": 26, - "h": 25 - } - }, { "filename": "77_3", "rotated": false, @@ -1683,33 +1725,12 @@ "h": 25 }, "frame": { - "x": 56, + "x": 86, "y": 156, "w": 26, "h": 25 } }, - { - "filename": "150_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 22, - "h": 25 - }, - "frame": { - "x": 82, - "y": 156, - "w": 22, - "h": 25 - } - }, { "filename": "86_1", "rotated": false, @@ -1725,7 +1746,7 @@ "h": 25 }, "frame": { - "x": 104, + "x": 112, "y": 157, "w": 27, "h": 25 @@ -1746,7 +1767,7 @@ "h": 25 }, "frame": { - "x": 131, + "x": 139, "y": 158, "w": 27, "h": 25 @@ -1767,33 +1788,12 @@ "h": 25 }, "frame": { - "x": 158, - "y": 160, + "x": 166, + "y": 159, "w": 27, "h": 25 } }, - { - "filename": "150_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 22, - "h": 25 - }, - "frame": { - "x": 185, - "y": 160, - "w": 22, - "h": 25 - } - }, { "filename": "87_1", "rotated": false, @@ -1809,8 +1809,8 @@ "h": 25 }, "frame": { - "x": 207, - "y": 163, + "x": 193, + "y": 160, "w": 27, "h": 25 } @@ -1830,8 +1830,8 @@ "h": 25 }, "frame": { - "x": 234, - "y": 163, + "x": 220, + "y": 160, "w": 27, "h": 25 } @@ -1851,12 +1851,54 @@ "h": 25 }, "frame": { - "x": 0, - "y": 181, + "x": 247, + "y": 160, "w": 27, "h": 25 } }, + { + "filename": "150_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 22, + "h": 25 + }, + "frame": { + "x": 0, + "y": 180, + "w": 22, + "h": 25 + } + }, + { + "filename": "150_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 22, + "h": 25 + }, + "frame": { + "x": 22, + "y": 181, + "w": 22, + "h": 25 + } + }, { "filename": "94_1", "rotated": false, @@ -1872,7 +1914,7 @@ "h": 26 }, "frame": { - "x": 27, + "x": 44, "y": 181, "w": 26, "h": 26 @@ -1893,7 +1935,7 @@ "h": 26 }, "frame": { - "x": 53, + "x": 70, "y": 181, "w": 26, "h": 26 @@ -1914,7 +1956,7 @@ "h": 26 }, "frame": { - "x": 79, + "x": 96, "y": 182, "w": 26, "h": 26 @@ -1935,8 +1977,8 @@ "h": 27 }, "frame": { - "x": 105, - "y": 182, + "x": 122, + "y": 183, "w": 25, "h": 27 } @@ -1956,8 +1998,8 @@ "h": 27 }, "frame": { - "x": 130, - "y": 183, + "x": 147, + "y": 184, "w": 25, "h": 27 } @@ -1977,7 +2019,7 @@ "h": 28 }, "frame": { - "x": 155, + "x": 172, "y": 185, "w": 31, "h": 28 @@ -1998,8 +2040,8 @@ "h": 28 }, "frame": { - "x": 186, - "y": 188, + "x": 203, + "y": 185, "w": 31, "h": 28 } @@ -2019,54 +2061,12 @@ "h": 28 }, "frame": { - "x": 217, - "y": 188, + "x": 234, + "y": 185, "w": 32, "h": 28 } }, - { - "filename": "150-mega-x_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 23, - "h": 28 - }, - "frame": { - "x": 249, - "y": 188, - "w": 23, - "h": 28 - } - }, - { - "filename": "150-mega-x_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 23, - "h": 28 - }, - "frame": { - "x": 0, - "y": 206, - "w": 23, - "h": 28 - } - }, { "filename": "93_2", "rotated": false, @@ -2082,8 +2082,8 @@ "h": 28 }, "frame": { - "x": 23, - "y": 207, + "x": 0, + "y": 206, "w": 32, "h": 28 } @@ -2103,12 +2103,54 @@ "h": 28 }, "frame": { - "x": 55, - "y": 208, + "x": 32, + "y": 207, "w": 32, "h": 28 } }, + { + "filename": "150-mega-x_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 23, + "h": 28 + }, + "frame": { + "x": 64, + "y": 207, + "w": 23, + "h": 28 + } + }, + { + "filename": "150-mega-x_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 23, + "h": 28 + }, + "frame": { + "x": 87, + "y": 208, + "w": 23, + "h": 28 + } + }, { "filename": "131-gigantamax_2", "rotated": false, @@ -2124,28 +2166,7 @@ "h": 29 }, "frame": { - "x": 87, - "y": 209, - "w": 33, - "h": 29 - } - }, - { - "filename": "131-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 33, - "h": 29 - }, - "frame": { - "x": 120, + "x": 110, "y": 210, "w": 33, "h": 29 @@ -2166,12 +2187,33 @@ "h": 30 }, "frame": { - "x": 153, - "y": 213, + "x": 143, + "y": 211, "w": 25, "h": 30 } }, + { + "filename": "131-gigantamax_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 33, + "h": 29 + }, + "frame": { + "x": 168, + "y": 213, + "w": 33, + "h": 29 + } + }, { "filename": "52-gigantamax_2", "rotated": false, @@ -2187,8 +2229,8 @@ "h": 30 }, "frame": { - "x": 178, - "y": 216, + "x": 201, + "y": 213, "w": 25, "h": 30 } @@ -2208,14 +2250,14 @@ "h": 30 }, "frame": { - "x": 203, - "y": 216, + "x": 226, + "y": 213, "w": 25, "h": 30 } }, { - "filename": "94-gigantamax_1", + "filename": "150-mega-y_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -2223,20 +2265,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 3, + "x": 9, "y": 0, - "w": 34, + "w": 22, "h": 30 }, "frame": { - "x": 228, - "y": 216, - "w": 34, + "x": 251, + "y": 213, + "w": 22, "h": 30 } }, { - "filename": "150-mega-y_2", + "filename": "150-mega-y_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -2257,7 +2299,7 @@ } }, { - "filename": "150-mega-y_3", + "filename": "94-gigantamax_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -2265,15 +2307,15 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, + "x": 3, "y": 0, - "w": 22, + "w": 34, "h": 30 }, "frame": { "x": 22, "y": 235, - "w": 22, + "w": 34, "h": 30 } }, @@ -2292,7 +2334,7 @@ "h": 30 }, "frame": { - "x": 44, + "x": 56, "y": 236, "w": 34, "h": 30 @@ -2313,8 +2355,8 @@ "h": 30 }, "frame": { - "x": 78, - "y": 238, + "x": 90, + "y": 239, "w": 34, "h": 30 } @@ -2334,8 +2376,8 @@ "h": 30 }, "frame": { - "x": 112, - "y": 239, + "x": 124, + "y": 241, "w": 36, "h": 30 } @@ -2355,8 +2397,8 @@ "h": 30 }, "frame": { - "x": 148, - "y": 246, + "x": 160, + "y": 242, "w": 36, "h": 30 } @@ -2376,8 +2418,8 @@ "h": 30 }, "frame": { - "x": 184, - "y": 246, + "x": 196, + "y": 243, "w": 36, "h": 30 } @@ -2388,6 +2430,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ff8be1f0e8905cf57ed1af85a597a5be:63904eb65167f759420c4e4a5c2dc80c:2fc2d7db306a93e9369e20846ccef45c$" + "smartupdate": "$TexturePacker:SmartUpdate:429d90e6d126fba8a16e4abf1b881671:64ab0e3b54dd7c7e4e6017f2657aa1f5:2fc2d7db306a93e9369e20846ccef45c$" } } diff --git a/public/images/pokemon_icons_1v.png b/public/images/pokemon_icons_1v.png index 508d2411b..48eb12fe1 100644 Binary files a/public/images/pokemon_icons_1v.png and b/public/images/pokemon_icons_1v.png differ diff --git a/public/images/pokemon_icons_3v.json b/public/images/pokemon_icons_3v.json index c3b04ae5f..af6a027ac 100644 --- a/public/images/pokemon_icons_3v.json +++ b/public/images/pokemon_icons_3v.json @@ -4,8 +4,8 @@ "image": "pokemon_icons_3v.png", "format": "RGBA8888", "size": { - "w": 264, - "h": 264 + "w": 274, + "h": 274 }, "scale": 1, "frames": [ @@ -345,6 +345,27 @@ "h": 28 } }, + { + "filename": "376_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 6, + "w": 34, + "h": 24 + }, + "frame": { + "x": 0, + "y": 250, + "w": 34, + "h": 24 + } + }, { "filename": "308-mega_2", "rotated": false, @@ -451,7 +472,7 @@ } }, { - "filename": "304_1", + "filename": "351-rainy_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -459,20 +480,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, - "y": 15, - "w": 18, - "h": 14 + "x": 12, + "y": 6, + "w": 16, + "h": 23 }, "frame": { - "x": 0, - "y": 250, - "w": 18, - "h": 14 + "x": 258, + "y": 0, + "w": 16, + "h": 23 } }, { - "filename": "304_2", + "filename": "351-rainy_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -480,16 +501,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, - "y": 15, - "w": 18, - "h": 14 + "x": 12, + "y": 6, + "w": 16, + "h": 23 }, "frame": { - "x": 18, - "y": 250, - "w": 18, - "h": 14 + "x": 258, + "y": 23, + "w": 16, + "h": 23 } }, { @@ -514,7 +535,7 @@ } }, { - "filename": "376_2", + "filename": "376_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -535,7 +556,7 @@ } }, { - "filename": "376_3", + "filename": "321_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -543,16 +564,37 @@ "h": 30 }, "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 34, - "h": 24 + "x": 5, + "y": 4, + "w": 32, + "h": 25 }, "frame": { "x": 146, "y": 23, - "w": 34, - "h": 24 + "w": 32, + "h": 25 + } + }, + { + "filename": "321_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 32, + "h": 25 + }, + "frame": { + "x": 178, + "y": 23, + "w": 32, + "h": 25 } }, { @@ -570,8 +612,8 @@ "h": 26 }, "frame": { - "x": 180, - "y": 23, + "x": 73, + "y": 49, "w": 31, "h": 26 } @@ -591,12 +633,96 @@ "h": 26 }, "frame": { - "x": 73, - "y": 49, + "x": 210, + "y": 26, "w": 31, "h": 26 } }, + { + "filename": "358_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 7, + "w": 17, + "h": 23 + }, + "frame": { + "x": 241, + "y": 26, + "w": 17, + "h": 23 + } + }, + { + "filename": "351-rainy_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 16, + "h": 23 + }, + "frame": { + "x": 258, + "y": 46, + "w": 16, + "h": 23 + } + }, + { + "filename": "358_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 7, + "w": 17, + "h": 23 + }, + "frame": { + "x": 241, + "y": 49, + "w": 17, + "h": 23 + } + }, + { + "filename": "280_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 9, + "w": 16, + "h": 20 + }, + "frame": { + "x": 258, + "y": 69, + "w": 16, + "h": 20 + } + }, { "filename": "306_3", "rotated": false, @@ -612,54 +738,12 @@ "h": 26 }, "frame": { - "x": 211, - "y": 26, + "x": 73, + "y": 75, "w": 31, "h": 26 } }, - { - "filename": "334_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 26 - }, - "frame": { - "x": 242, - "y": 26, - "w": 22, - "h": 26 - } - }, - { - "filename": "282-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 28, - "h": 26 - }, - "frame": { - "x": 104, - "y": 49, - "w": 28, - "h": 26 - } - }, { "filename": "475-mega_3", "rotated": false, @@ -675,35 +759,14 @@ "h": 28 }, "frame": { - "x": 132, - "y": 47, + "x": 104, + "y": 49, "w": 27, "h": 28 } }, { - "filename": "308_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 2, - "w": 19, - "h": 27 - }, - "frame": { - "x": 159, - "y": 47, - "w": 19, - "h": 27 - } - }, - { - "filename": "330_2", + "filename": "282-mega_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -712,36 +775,15 @@ }, "spriteSourceSize": { "x": 7, - "y": 4, - "w": 29, - "h": 25 + "y": 3, + "w": 28, + "h": 26 }, "frame": { - "x": 178, - "y": 49, - "w": 29, - "h": 25 - } - }, - { - "filename": "330_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 29, - "h": 25 - }, - "frame": { - "x": 207, - "y": 52, - "w": 29, - "h": 25 + "x": 104, + "y": 77, + "w": 28, + "h": 26 } }, { @@ -759,54 +801,12 @@ "h": 26 }, "frame": { - "x": 236, - "y": 52, + "x": 131, + "y": 48, "w": 28, "h": 26 } }, - { - "filename": "334-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 29, - "h": 25 - }, - "frame": { - "x": 73, - "y": 75, - "w": 29, - "h": 25 - } - }, - { - "filename": "334-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 29, - "h": 25 - }, - "frame": { - "x": 102, - "y": 75, - "w": 29, - "h": 25 - } - }, { "filename": "282_2", "rotated": false, @@ -822,8 +822,8 @@ "h": 26 }, "frame": { - "x": 131, - "y": 75, + "x": 159, + "y": 48, "w": 28, "h": 26 } @@ -843,54 +843,12 @@ "h": 26 }, "frame": { - "x": 159, + "x": 132, "y": 74, "w": 28, "h": 26 } }, - { - "filename": "281_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 20, - "h": 25 - }, - "frame": { - "x": 187, - "y": 74, - "w": 20, - "h": 25 - } - }, - { - "filename": "375_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 29, - "h": 23 - }, - "frame": { - "x": 207, - "y": 77, - "w": 29, - "h": 23 - } - }, { "filename": "310-mega_2", "rotated": false, @@ -906,14 +864,266 @@ "h": 26 }, "frame": { - "x": 236, - "y": 78, + "x": 160, + "y": 74, "w": 28, "h": 26 } }, { - "filename": "375_3", + "filename": "334_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 26 + }, + "frame": { + "x": 187, + "y": 48, + "w": 22, + "h": 26 + } + }, + { + "filename": "330_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 29, + "h": 25 + }, + "frame": { + "x": 209, + "y": 52, + "w": 29, + "h": 25 + } + }, + { + "filename": "281_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 20, + "h": 25 + }, + "frame": { + "x": 188, + "y": 74, + "w": 20, + "h": 25 + } + }, + { + "filename": "330_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 29, + "h": 25 + }, + "frame": { + "x": 208, + "y": 77, + "w": 29, + "h": 25 + } + }, + { + "filename": "281_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 20, + "h": 25 + }, + "frame": { + "x": 238, + "y": 72, + "w": 20, + "h": 25 + } + }, + { + "filename": "280_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 9, + "w": 16, + "h": 20 + }, + "frame": { + "x": 258, + "y": 89, + "w": 16, + "h": 20 + } + }, + { + "filename": "309_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 12, + "w": 21, + "h": 17 + }, + "frame": { + "x": 237, + "y": 97, + "w": 21, + "h": 17 + } + }, + { + "filename": "334-mega_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 29, + "h": 25 + }, + "frame": { + "x": 132, + "y": 100, + "w": 29, + "h": 25 + } + }, + { + "filename": "310-mega_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 28, + "h": 26 + }, + "frame": { + "x": 161, + "y": 100, + "w": 28, + "h": 26 + } + }, + { + "filename": "308_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 2, + "w": 19, + "h": 27 + }, + "frame": { + "x": 189, + "y": 99, + "w": 19, + "h": 27 + } + }, + { + "filename": "334-mega_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 29, + "h": 25 + }, + "frame": { + "x": 208, + "y": 102, + "w": 29, + "h": 25 + } + }, + { + "filename": "263_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 11, + "w": 24, + "h": 18 + }, + "frame": { + "x": 237, + "y": 114, + "w": 24, + "h": 18 + } + }, + { + "filename": "375_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -933,153 +1143,6 @@ "h": 23 } }, - { - "filename": "310-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 28, - "h": 26 - }, - "frame": { - "x": 32, - "y": 215, - "w": 28, - "h": 26 - } - }, - { - "filename": "303_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 23 - }, - "frame": { - "x": 36, - "y": 241, - "w": 28, - "h": 23 - } - }, - { - "filename": "334_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 26 - }, - "frame": { - "x": 60, - "y": 215, - "w": 22, - "h": 26 - } - }, - { - "filename": "303_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 23 - }, - "frame": { - "x": 64, - "y": 241, - "w": 28, - "h": 23 - } - }, - { - "filename": "303_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 23 - }, - "frame": { - "x": 62, - "y": 192, - "w": 28, - "h": 23 - } - }, - { - "filename": "281_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 20, - "h": 25 - }, - "frame": { - "x": 82, - "y": 215, - "w": 20, - "h": 25 - } - }, - { - "filename": "351-rainy_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 - }, - "frame": { - "x": 92, - "y": 240, - "w": 16, - "h": 23 - } - }, { "filename": "286_2", "rotated": false, @@ -1095,8 +1158,8 @@ "h": 27 }, "frame": { - "x": 65, - "y": 106, + "x": 32, + "y": 215, "w": 25, "h": 27 } @@ -1116,14 +1179,14 @@ "h": 27 }, "frame": { - "x": 90, - "y": 100, + "x": 34, + "y": 242, "w": 25, "h": 27 } }, { - "filename": "351-rainy_2", + "filename": "308_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1131,121 +1194,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 + "x": 11, + "y": 2, + "w": 19, + "h": 27 }, "frame": { - "x": 115, - "y": 100, - "w": 16, - "h": 23 - } - }, - { - "filename": "329_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 27, - "h": 22 - }, - "frame": { - "x": 131, - "y": 101, - "w": 27, - "h": 22 - } - }, - { - "filename": "290_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 13, - "w": 25, - "h": 16 - }, - "frame": { - "x": 90, - "y": 127, - "w": 25, - "h": 16 - } - }, - { - "filename": "329_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 27, - "h": 22 - }, - "frame": { - "x": 115, - "y": 123, - "w": 27, - "h": 22 - } - }, - { - "filename": "264_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 142, - "y": 123, - "w": 24, - "h": 22 - } - }, - { - "filename": "290_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 13, - "w": 25, - "h": 16 - }, - "frame": { - "x": 65, - "y": 133, - "w": 25, - "h": 16 + "x": 57, + "y": 215, + "w": 19, + "h": 27 } }, { @@ -1263,14 +1221,14 @@ "h": 27 }, "frame": { - "x": 64, - "y": 149, + "x": 59, + "y": 242, "w": 24, "h": 27 } }, { - "filename": "290_3", + "filename": "279_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -1279,17 +1237,290 @@ }, "spriteSourceSize": { "x": 7, - "y": 13, + "y": 6, "w": 25, + "h": 23 + }, + "frame": { + "x": 62, + "y": 192, + "w": 25, + "h": 23 + } + }, + { + "filename": "334_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 26 + }, + "frame": { + "x": 76, + "y": 215, + "w": 22, + "h": 26 + } + }, + { + "filename": "310_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 25 + }, + "frame": { + "x": 83, + "y": 241, + "w": 22, + "h": 25 + } + }, + { + "filename": "329_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 27, + "h": 22 + }, + "frame": { + "x": 105, + "y": 103, + "w": 27, + "h": 22 + } + }, + { + "filename": "375_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 29, + "h": 23 + }, + "frame": { + "x": 68, + "y": 101, + "w": 29, + "h": 23 + } + }, + { + "filename": "278_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 13, + "w": 28, "h": 16 }, "frame": { - "x": 64, - "y": 176, - "w": 25, + "x": 65, + "y": 124, + "w": 28, "h": 16 } }, + { + "filename": "303_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 28, + "h": 23 + }, + "frame": { + "x": 64, + "y": 140, + "w": 28, + "h": 23 + } + }, + { + "filename": "303_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 28, + "h": 23 + }, + "frame": { + "x": 64, + "y": 163, + "w": 28, + "h": 23 + } + }, + { + "filename": "278_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 13, + "w": 28, + "h": 16 + }, + "frame": { + "x": 93, + "y": 125, + "w": 28, + "h": 16 + } + }, + { + "filename": "303_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 28, + "h": 23 + }, + "frame": { + "x": 92, + "y": 141, + "w": 28, + "h": 23 + } + }, + { + "filename": "329_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 27, + "h": 22 + }, + "frame": { + "x": 92, + "y": 164, + "w": 27, + "h": 22 + } + }, + { + "filename": "278_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 13, + "w": 28, + "h": 16 + }, + "frame": { + "x": 121, + "y": 125, + "w": 28, + "h": 16 + } + }, + { + "filename": "279_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 25, + "h": 23 + }, + "frame": { + "x": 120, + "y": 141, + "w": 25, + "h": 23 + } + }, + { + "filename": "279_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 25, + "h": 23 + }, + "frame": { + "x": 119, + "y": 164, + "w": 25, + "h": 23 + } + }, { "filename": "291_1", "rotated": false, @@ -1305,8 +1536,8 @@ "h": 22 }, "frame": { - "x": 90, - "y": 143, + "x": 87, + "y": 186, "w": 25, "h": 22 } @@ -1326,12 +1557,117 @@ "h": 22 }, "frame": { - "x": 115, - "y": 145, + "x": 112, + "y": 187, "w": 25, "h": 22 } }, + { + "filename": "264_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 24, + "h": 22 + }, + "frame": { + "x": 137, + "y": 187, + "w": 24, + "h": 22 + } + }, + { + "filename": "358_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 7, + "w": 17, + "h": 23 + }, + "frame": { + "x": 144, + "y": 164, + "w": 17, + "h": 23 + } + }, + { + "filename": "320_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 26, + "h": 20 + }, + "frame": { + "x": 149, + "y": 126, + "w": 26, + "h": 20 + } + }, + { + "filename": "263_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 11, + "w": 24, + "h": 18 + }, + "frame": { + "x": 145, + "y": 146, + "w": 24, + "h": 18 + } + }, + { + "filename": "320_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 26, + "h": 20 + }, + "frame": { + "x": 175, + "y": 126, + "w": 26, + "h": 20 + } + }, { "filename": "291_3", "rotated": false, @@ -1347,75 +1683,12 @@ "h": 22 }, "frame": { - "x": 140, - "y": 145, + "x": 169, + "y": 146, "w": 25, "h": 22 } }, - { - "filename": "308_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 2, - "w": 19, - "h": 27 - }, - "frame": { - "x": 89, - "y": 165, - "w": 19, - "h": 27 - } - }, - { - "filename": "358_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 23 - }, - "frame": { - "x": 90, - "y": 192, - "w": 17, - "h": 23 - } - }, - { - "filename": "310_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 25 - }, - "frame": { - "x": 108, - "y": 167, - "w": 22, - "h": 25 - } - }, { "filename": "310_3", "rotated": false, @@ -1431,8 +1704,8 @@ "h": 25 }, "frame": { - "x": 130, - "y": 167, + "x": 161, + "y": 168, "w": 22, "h": 25 } @@ -1452,33 +1725,12 @@ "h": 22 }, "frame": { - "x": 107, - "y": 192, + "x": 161, + "y": 193, "w": 24, "h": 22 } }, - { - "filename": "352_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 22 - }, - "frame": { - "x": 131, - "y": 192, - "w": 22, - "h": 22 - } - }, { "filename": "351-snowy_1", "rotated": false, @@ -1494,8 +1746,8 @@ "h": 25 }, "frame": { - "x": 152, - "y": 167, + "x": 183, + "y": 168, "w": 19, "h": 25 } @@ -1515,12 +1767,54 @@ "h": 22 }, "frame": { - "x": 153, - "y": 192, + "x": 185, + "y": 193, "w": 19, "h": 22 } }, + { + "filename": "305_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 25, + "h": 19 + }, + "frame": { + "x": 201, + "y": 127, + "w": 25, + "h": 19 + } + }, + { + "filename": "385_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 24, + "h": 22 + }, + "frame": { + "x": 194, + "y": 146, + "w": 24, + "h": 22 + } + }, { "filename": "351-snowy_2", "rotated": false, @@ -1536,117 +1830,12 @@ "h": 25 }, "frame": { - "x": 102, - "y": 215, + "x": 202, + "y": 168, "w": 19, "h": 25 } }, - { - "filename": "385_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 121, - "y": 214, - "w": 24, - "h": 22 - } - }, - { - "filename": "385_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 145, - "y": 214, - "w": 24, - "h": 22 - } - }, - { - "filename": "351-rainy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 - }, - "frame": { - "x": 108, - "y": 240, - "w": 16, - "h": 23 - } - }, - { - "filename": "385_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 124, - "y": 236, - "w": 24, - "h": 22 - } - }, - { - "filename": "352_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 22 - }, - "frame": { - "x": 148, - "y": 236, - "w": 22, - "h": 22 - } - }, { "filename": "307_3", "rotated": false, @@ -1662,12 +1851,33 @@ "h": 22 }, "frame": { - "x": 158, - "y": 101, + "x": 204, + "y": 193, "w": 19, "h": 22 } }, + { + "filename": "351-sunny_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 20, + "h": 22 + }, + "frame": { + "x": 218, + "y": 146, + "w": 20, + "h": 22 + } + }, { "filename": "351-snowy_3", "rotated": false, @@ -1683,75 +1893,12 @@ "h": 25 }, "frame": { - "x": 166, - "y": 123, + "x": 221, + "y": 168, "w": 19, "h": 25 } }, - { - "filename": "305_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 10, - "w": 25, - "h": 19 - }, - "frame": { - "x": 165, - "y": 148, - "w": 25, - "h": 19 - } - }, - { - "filename": "351-sunny_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 22 - }, - "frame": { - "x": 171, - "y": 167, - "w": 20, - "h": 22 - } - }, - { - "filename": "358_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 23 - }, - "frame": { - "x": 177, - "y": 100, - "w": 17, - "h": 23 - } - }, { "filename": "351-sunny_2", "rotated": false, @@ -1767,14 +1914,14 @@ "h": 22 }, "frame": { - "x": 172, - "y": 189, + "x": 223, + "y": 193, "w": 20, "h": 22 } }, { - "filename": "358_3", + "filename": "304_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -1782,16 +1929,163 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 23 + "x": 11, + "y": 15, + "w": 18, + "h": 14 }, "frame": { - "x": 185, - "y": 123, - "w": 17, - "h": 23 + "x": 226, + "y": 132, + "w": 18, + "h": 14 + } + }, + { + "filename": "285_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 12, + "w": 20, + "h": 17 + }, + "frame": { + "x": 244, + "y": 132, + "w": 20, + "h": 17 + } + }, + { + "filename": "305_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 25, + "h": 19 + }, + "frame": { + "x": 238, + "y": 149, + "w": 25, + "h": 19 + } + }, + { + "filename": "385_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 24, + "h": 22 + }, + "frame": { + "x": 240, + "y": 168, + "w": 24, + "h": 22 + } + }, + { + "filename": "352_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 22, + "h": 22 + }, + "frame": { + "x": 243, + "y": 190, + "w": 22, + "h": 22 + } + }, + { + "filename": "385_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 24, + "h": 22 + }, + "frame": { + "x": 98, + "y": 209, + "w": 24, + "h": 22 + } + }, + { + "filename": "305_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 25, + "h": 19 + }, + "frame": { + "x": 122, + "y": 209, + "w": 25, + "h": 19 + } + }, + { + "filename": "351-sunny_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 20, + "h": 22 + }, + "frame": { + "x": 105, + "y": 231, + "w": 20, + "h": 22 } }, { @@ -1809,12 +2103,33 @@ "h": 21 }, "frame": { - "x": 190, - "y": 146, + "x": 105, + "y": 253, "w": 22, "h": 21 } }, + { + "filename": "352_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 22, + "h": 22 + }, + "frame": { + "x": 125, + "y": 228, + "w": 22, + "h": 22 + } + }, { "filename": "352_3", "rotated": false, @@ -1830,8 +2145,8 @@ "h": 22 }, "frame": { - "x": 191, - "y": 167, + "x": 127, + "y": 250, "w": 22, "h": 22 } @@ -1851,159 +2166,12 @@ "h": 21 }, "frame": { - "x": 192, - "y": 189, + "x": 147, + "y": 215, "w": 22, "h": 21 } }, - { - "filename": "305_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 10, - "w": 25, - "h": 19 - }, - "frame": { - "x": 194, - "y": 100, - "w": 25, - "h": 19 - } - }, - { - "filename": "280_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 20 - }, - "frame": { - "x": 219, - "y": 100, - "w": 16, - "h": 20 - } - }, - { - "filename": "305_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 10, - "w": 25, - "h": 19 - }, - "frame": { - "x": 235, - "y": 104, - "w": 25, - "h": 19 - } - }, - { - "filename": "351_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 15, - "h": 22 - }, - "frame": { - "x": 202, - "y": 119, - "w": 15, - "h": 22 - } - }, - { - "filename": "280_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 20 - }, - "frame": { - "x": 217, - "y": 120, - "w": 16, - "h": 20 - } - }, - { - "filename": "263_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 24, - "h": 18 - }, - "frame": { - "x": 233, - "y": 123, - "w": 24, - "h": 18 - } - }, - { - "filename": "351-sunny_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 22 - }, - "frame": { - "x": 169, - "y": 214, - "w": 20, - "h": 22 - } - }, { "filename": "292_3", "rotated": false, @@ -2019,33 +2187,12 @@ "h": 21 }, "frame": { - "x": 170, - "y": 236, + "x": 169, + "y": 215, "w": 22, "h": 21 } }, - { - "filename": "263_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 24, - "h": 18 - }, - "frame": { - "x": 192, - "y": 210, - "w": 24, - "h": 18 - } - }, { "filename": "328_2", "rotated": false, @@ -2061,33 +2208,12 @@ "h": 21 }, "frame": { - "x": 192, - "y": 228, + "x": 191, + "y": 215, "w": 21, "h": 21 } }, - { - "filename": "304_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 15, - "w": 18, - "h": 14 - }, - "frame": { - "x": 192, - "y": 249, - "w": 18, - "h": 14 - } - }, { "filename": "328_3", "rotated": false, @@ -2103,12 +2229,96 @@ "h": 21 }, "frame": { - "x": 213, - "y": 228, + "x": 212, + "y": 215, "w": 21, "h": 21 } }, + { + "filename": "304_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 15, + "w": 18, + "h": 14 + }, + "frame": { + "x": 147, + "y": 236, + "w": 18, + "h": 14 + } + }, + { + "filename": "290_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 13, + "w": 25, + "h": 16 + }, + "frame": { + "x": 165, + "y": 236, + "w": 25, + "h": 16 + } + }, + { + "filename": "290_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 13, + "w": 25, + "h": 16 + }, + "frame": { + "x": 190, + "y": 236, + "w": 25, + "h": 16 + } + }, + { + "filename": "351_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 7, + "w": 15, + "h": 22 + }, + "frame": { + "x": 149, + "y": 250, + "w": 15, + "h": 22 + } + }, { "filename": "351_3", "rotated": false, @@ -2124,12 +2334,54 @@ "h": 22 }, "frame": { - "x": 212, - "y": 141, + "x": 164, + "y": 252, "w": 15, "h": 22 } }, + { + "filename": "290_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 13, + "w": 25, + "h": 16 + }, + "frame": { + "x": 179, + "y": 252, + "w": 25, + "h": 16 + } + }, + { + "filename": "285_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 12, + "w": 20, + "h": 17 + }, + "frame": { + "x": 215, + "y": 236, + "w": 20, + "h": 17 + } + }, { "filename": "374_2", "rotated": false, @@ -2145,8 +2397,8 @@ "h": 19 }, "frame": { - "x": 227, - "y": 141, + "x": 233, + "y": 215, "w": 21, "h": 19 } @@ -2166,12 +2418,33 @@ "h": 19 }, "frame": { - "x": 213, - "y": 163, + "x": 235, + "y": 234, "w": 21, "h": 19 } }, + { + "filename": "309_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 12, + "w": 21, + "h": 17 + }, + "frame": { + "x": 204, + "y": 253, + "w": 21, + "h": 17 + } + }, { "filename": "333_2", "rotated": false, @@ -2187,8 +2460,8 @@ "h": 18 }, "frame": { - "x": 214, - "y": 182, + "x": 225, + "y": 253, "w": 21, "h": 18 } @@ -2208,14 +2481,14 @@ "h": 18 }, "frame": { - "x": 234, - "y": 160, + "x": 246, + "y": 253, "w": 21, "h": 18 } }, { - "filename": "285_2", + "filename": "304_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -2223,79 +2496,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 17 + "x": 11, + "y": 15, + "w": 18, + "h": 14 }, "frame": { - "x": 235, - "y": 178, - "w": 20, - "h": 17 - } - }, - { - "filename": "285_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 17 - }, - "frame": { - "x": 216, - "y": 200, - "w": 20, - "h": 17 - } - }, - { - "filename": "309_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 21, - "h": 17 - }, - "frame": { - "x": 236, - "y": 195, - "w": 21, - "h": 17 - } - }, - { - "filename": "309_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 21, - "h": 17 - }, - "frame": { - "x": 236, + "x": 256, "y": 212, - "w": 21, - "h": 17 + "w": 18, + "h": 14 } } ] @@ -2304,6 +2514,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:1d5a45dd6af00e9ce100072d2cdd8e0b:9b35c744f171ab066952e4db2a5fb647:039b026190bf1878996b3e03190bcdf3$" + "smartupdate": "$TexturePacker:SmartUpdate:e451b3ae25328f4f0164e64e2faa5df4:c4df08d9a082c9097775d80382fd25da:039b026190bf1878996b3e03190bcdf3$" } } diff --git a/public/images/pokemon_icons_3v.png b/public/images/pokemon_icons_3v.png index 98e7c1a3b..d21f90524 100644 Binary files a/public/images/pokemon_icons_3v.png and b/public/images/pokemon_icons_3v.png differ diff --git a/public/images/pokemon_icons_4v.json b/public/images/pokemon_icons_4v.json index cbf00598f..bd10e099a 100644 --- a/public/images/pokemon_icons_4v.json +++ b/public/images/pokemon_icons_4v.json @@ -4,8 +4,8 @@ "image": "pokemon_icons_4v.png", "format": "RGBA8888", "size": { - "w": 239, - "h": 239 + "w": 242, + "h": 242 }, "scale": 1, "frames": [ @@ -198,6 +198,48 @@ "h": 26 } }, + { + "filename": "485_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 35, + "h": 22 + }, + "frame": { + "x": 132, + "y": 0, + "w": 35, + "h": 22 + } + }, + { + "filename": "485_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 35, + "h": 22 + }, + "frame": { + "x": 167, + "y": 0, + "w": 35, + "h": 22 + } + }, { "filename": "487-origin_2", "rotated": false, @@ -261,48 +303,6 @@ "h": 24 } }, - { - "filename": "445_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 132, - "y": 0, - "w": 31, - "h": 24 - } - }, - { - "filename": "445_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 163, - "y": 0, - "w": 31, - "h": 24 - } - }, { "filename": "475-mega_2", "rotated": false, @@ -324,27 +324,6 @@ "h": 28 } }, - { - "filename": "481_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 194, - "y": 0, - "w": 31, - "h": 24 - } - }, { "filename": "488_2", "rotated": false, @@ -367,7 +346,7 @@ } }, { - "filename": "481_2", + "filename": "447_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -375,7 +354,70 @@ "h": 30 }, "spriteSourceSize": { - "x": 6, + "x": 11, + "y": 9, + "w": 20, + "h": 20 + }, + "frame": { + "x": 0, + "y": 222, + "w": 20, + "h": 20 + } + }, + { + "filename": "445_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 31, + "h": 24 + }, + "frame": { + "x": 202, + "y": 0, + "w": 31, + "h": 24 + } + }, + { + "filename": "447_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 9, + "w": 20, + "h": 20 + }, + "frame": { + "x": 20, + "y": 222, + "w": 20, + "h": 20 + } + }, + { + "filename": "445_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, "y": 5, "w": 31, "h": 24 @@ -388,7 +430,7 @@ } }, { - "filename": "481_3", + "filename": "481_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -408,6 +450,69 @@ "h": 24 } }, + { + "filename": "481_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 31, + "h": 24 + }, + "frame": { + "x": 32, + "y": 76, + "w": 31, + "h": 24 + } + }, + { + "filename": "481_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 31, + "h": 24 + }, + "frame": { + "x": 63, + "y": 76, + "w": 31, + "h": 24 + } + }, + { + "filename": "468_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 30, + "h": 21 + }, + "frame": { + "x": 32, + "y": 100, + "w": 30, + "h": 21 + } + }, { "filename": "488_3", "rotated": false, @@ -423,12 +528,33 @@ "h": 28 }, "frame": { - "x": 32, - "y": 76, + "x": 30, + "y": 121, "w": 27, "h": 28 } }, + { + "filename": "468_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 30, + "h": 21 + }, + "frame": { + "x": 62, + "y": 100, + "w": 30, + "h": 21 + } + }, { "filename": "471_1", "rotated": false, @@ -444,8 +570,8 @@ "h": 25 }, "frame": { - "x": 59, - "y": 76, + "x": 57, + "y": 121, "w": 29, "h": 25 } @@ -465,8 +591,8 @@ "h": 24 }, "frame": { - "x": 32, - "y": 104, + "x": 30, + "y": 149, "w": 28, "h": 24 } @@ -485,72 +611,9 @@ "w": 29, "h": 25 }, - "frame": { - "x": 30, - "y": 128, - "w": 29, - "h": 25 - } - }, - { - "filename": "482_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 28, - "h": 26 - }, - "frame": { - "x": 60, - "y": 101, - "w": 28, - "h": 26 - } - }, - { - "filename": "468_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 30, - "h": 21 - }, - "frame": { - "x": 30, - "y": 153, - "w": 30, - "h": 21 - } - }, - { - "filename": "471_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 29, - "h": 25 - }, "frame": { "x": 27, - "y": 174, + "y": 173, "w": 29, "h": 25 } @@ -571,11 +634,53 @@ }, "frame": { "x": 27, - "y": 199, + "y": 198, "w": 28, "h": 24 } }, + { + "filename": "447_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 9, + "w": 20, + "h": 20 + }, + "frame": { + "x": 40, + "y": 222, + "w": 20, + "h": 20 + } + }, + { + "filename": "482_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 28, + "h": 26 + }, + "frame": { + "x": 58, + "y": 146, + "w": 28, + "h": 26 + } + }, { "filename": "429_1", "rotated": false, @@ -591,8 +696,8 @@ "h": 29 }, "frame": { - "x": 88, - "y": 76, + "x": 86, + "y": 121, "w": 21, "h": 29 } @@ -612,12 +717,33 @@ "h": 24 }, "frame": { - "x": 95, - "y": 52, + "x": 86, + "y": 150, "w": 24, "h": 24 } }, + { + "filename": "433_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 25, + "h": 21 + }, + "frame": { + "x": 92, + "y": 100, + "w": 25, + "h": 21 + } + }, { "filename": "400_3", "rotated": false, @@ -633,12 +759,33 @@ "h": 24 }, "frame": { - "x": 88, - "y": 105, + "x": 94, + "y": 76, "w": 24, "h": 24 } }, + { + "filename": "470_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 27, + "h": 24 + }, + "frame": { + "x": 95, + "y": 52, + "w": 27, + "h": 24 + } + }, { "filename": "429_2", "rotated": false, @@ -654,8 +801,8 @@ "h": 29 }, "frame": { - "x": 109, - "y": 76, + "x": 107, + "y": 121, "w": 21, "h": 29 } @@ -675,14 +822,14 @@ "h": 26 }, "frame": { - "x": 119, - "y": 50, + "x": 110, + "y": 150, "w": 26, "h": 26 } }, { - "filename": "429_3", + "filename": "468_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -690,16 +837,37 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 21, - "h": 29 + "x": 6, + "y": 6, + "w": 30, + "h": 21 }, "frame": { - "x": 130, - "y": 76, - "w": 21, - "h": 29 + "x": 132, + "y": 22, + "w": 30, + "h": 21 + } + }, + { + "filename": "471_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 29, + "h": 25 + }, + "frame": { + "x": 162, + "y": 22, + "w": 29, + "h": 25 } }, { @@ -717,91 +885,7 @@ "h": 24 }, "frame": { - "x": 112, - "y": 105, - "w": 28, - "h": 24 - } - }, - { - "filename": "482_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 28, - "h": 26 - }, - "frame": { - "x": 132, - "y": 24, - "w": 28, - "h": 26 - } - }, - { - "filename": "482_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 28, - "h": 26 - }, - "frame": { - "x": 160, - "y": 24, - "w": 28, - "h": 26 - } - }, - { - "filename": "426_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 26 - }, - "frame": { - "x": 145, - "y": 50, - "w": 26, - "h": 26 - } - }, - { - "filename": "480_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 28, - "h": 24 - }, - "frame": { - "x": 188, + "x": 191, "y": 24, "w": 28, "h": 24 @@ -822,14 +906,14 @@ "h": 24 }, "frame": { - "x": 216, + "x": 219, "y": 24, "w": 23, "h": 24 } }, { - "filename": "475_2", + "filename": "480_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -838,36 +922,15 @@ }, "spriteSourceSize": { "x": 9, - "y": 2, - "w": 24, - "h": 27 + "y": 5, + "w": 28, + "h": 24 }, "frame": { - "x": 151, - "y": 76, - "w": 24, - "h": 27 - } - }, - { - "filename": "448-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 21, - "h": 26 - }, - "frame": { - "x": 171, - "y": 50, - "w": 21, - "h": 26 + "x": 131, + "y": 43, + "w": 28, + "h": 24 } }, { @@ -885,14 +948,14 @@ "h": 24 }, "frame": { - "x": 192, - "y": 48, + "x": 159, + "y": 47, "w": 28, "h": 24 } }, { - "filename": "448-mega_2", + "filename": "482_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -900,100 +963,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, + "x": 9, "y": 3, - "w": 21, + "w": 28, "h": 26 }, "frame": { - "x": 175, - "y": 76, - "w": 21, - "h": 26 - } - }, - { - "filename": "470_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 24 - }, - "frame": { - "x": 196, - "y": 72, - "w": 27, - "h": 24 - } - }, - { - "filename": "425_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 24 - }, - "frame": { - "x": 220, + "x": 187, "y": 48, - "w": 17, - "h": 24 - } - }, - { - "filename": "440_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 21 - }, - "frame": { - "x": 223, - "y": 72, - "w": 16, - "h": 21 - } - }, - { - "filename": "440_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 21 - }, - "frame": { - "x": 223, - "y": 93, - "w": 16, - "h": 21 + "w": 28, + "h": 26 } }, { @@ -1011,75 +990,12 @@ "h": 24 }, "frame": { - "x": 196, - "y": 96, + "x": 215, + "y": 48, "w": 27, "h": 24 } }, - { - "filename": "440_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 21 - }, - "frame": { - "x": 223, - "y": 114, - "w": 16, - "h": 21 - } - }, - { - "filename": "443_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 21, - "h": 21 - }, - "frame": { - "x": 175, - "y": 102, - "w": 21, - "h": 21 - } - }, - { - "filename": "490_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 151, - "y": 103, - "w": 24, - "h": 22 - } - }, { "filename": "470_3", "rotated": false, @@ -1095,35 +1011,14 @@ "h": 24 }, "frame": { - "x": 196, - "y": 120, + "x": 215, + "y": 72, "w": 27, "h": 24 } }, { - "filename": "443_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 21, - "h": 21 - }, - "frame": { - "x": 175, - "y": 123, - "w": 21, - "h": 21 - } - }, - { - "filename": "448-mega_3", + "filename": "433_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1132,14 +1027,119 @@ }, "spriteSourceSize": { "x": 11, - "y": 3, + "y": 8, + "w": 25, + "h": 21 + }, + "frame": { + "x": 117, + "y": 100, + "w": 25, + "h": 21 + } + }, + { + "filename": "429_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, "w": 21, + "h": 29 + }, + "frame": { + "x": 128, + "y": 121, + "w": 21, + "h": 29 + } + }, + { + "filename": "492-sky_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 23, + "h": 24 + }, + "frame": { + "x": 118, + "y": 76, + "w": 23, + "h": 24 + } + }, + { + "filename": "426_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, "h": 26 }, "frame": { - "x": 56, - "y": 174, - "w": 21, + "x": 136, + "y": 150, + "w": 26, + "h": 26 + } + }, + { + "filename": "448_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 18, + "h": 23 + }, + "frame": { + "x": 141, + "y": 67, + "w": 18, + "h": 23 + } + }, + { + "filename": "482_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 28, + "h": 26 + }, + "frame": { + "x": 159, + "y": 71, + "w": 28, "h": 26 } }, @@ -1158,14 +1158,14 @@ "h": 23 }, "frame": { - "x": 55, - "y": 200, + "x": 187, + "y": 74, "w": 25, "h": 23 } }, { - "filename": "433_1", + "filename": "425_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1173,41 +1173,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 25, - "h": 21 - }, - "frame": { - "x": 60, - "y": 127, - "w": 25, - "h": 21 - } - }, - { - "filename": "468_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, + "x": 12, "y": 6, - "w": 30, - "h": 21 + "w": 17, + "h": 24 }, "frame": { - "x": 85, - "y": 129, - "w": 30, - "h": 21 + "x": 142, + "y": 90, + "w": 17, + "h": 24 } }, { - "filename": "433_2", + "filename": "433_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1221,8 +1200,8 @@ "h": 21 }, "frame": { - "x": 115, - "y": 129, + "x": 159, + "y": 97, "w": 25, "h": 21 } @@ -1242,14 +1221,14 @@ "h": 23 }, "frame": { - "x": 60, - "y": 148, + "x": 184, + "y": 97, "w": 25, "h": 23 } }, { - "filename": "468_3", + "filename": "475_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1257,37 +1236,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 30, - "h": 21 + "x": 9, + "y": 2, + "w": 24, + "h": 27 }, "frame": { - "x": 85, - "y": 150, - "w": 30, - "h": 21 - } - }, - { - "filename": "433_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 25, - "h": 21 - }, - "frame": { - "x": 115, - "y": 150, - "w": 25, - "h": 21 + "x": 149, + "y": 118, + "w": 24, + "h": 27 } }, { @@ -1305,138 +1263,12 @@ "h": 23 }, "frame": { - "x": 77, - "y": 171, + "x": 173, + "y": 120, "w": 25, "h": 23 } }, - { - "filename": "490_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 102, - "y": 171, - "w": 24, - "h": 22 - } - }, - { - "filename": "492-sky_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 23, - "h": 24 - }, - "frame": { - "x": 80, - "y": 194, - "w": 23, - "h": 24 - } - }, - { - "filename": "443_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 21, - "h": 21 - }, - "frame": { - "x": 80, - "y": 218, - "w": 21, - "h": 21 - } - }, - { - "filename": "442_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 22 - }, - "frame": { - "x": 103, - "y": 193, - "w": 23, - "h": 22 - } - }, - { - "filename": "427_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 20, - "h": 24 - }, - "frame": { - "x": 103, - "y": 215, - "w": 20, - "h": 24 - } - }, - { - "filename": "427_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 20, - "h": 24 - }, - "frame": { - "x": 123, - "y": 215, - "w": 20, - "h": 24 - } - }, { "filename": "425_3", "rotated": false, @@ -1452,14 +1284,14 @@ "h": 24 }, "frame": { - "x": 126, - "y": 171, + "x": 198, + "y": 120, "w": 17, "h": 24 } }, { - "filename": "447_1", + "filename": "448-mega_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -1468,120 +1300,15 @@ }, "spriteSourceSize": { "x": 11, - "y": 9, - "w": 20, - "h": 20 + "y": 3, + "w": 21, + "h": 26 }, "frame": { - "x": 126, - "y": 195, - "w": 20, - "h": 20 - } - }, - { - "filename": "494_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 24 - }, - "frame": { - "x": 143, - "y": 215, - "w": 20, - "h": 24 - } - }, - { - "filename": "490_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 24, - "h": 22 - }, - "frame": { - "x": 140, - "y": 125, - "w": 24, - "h": 22 - } - }, - { - "filename": "494_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 24 - }, - "frame": { - "x": 140, - "y": 147, - "w": 20, - "h": 24 - } - }, - { - "filename": "448_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 23 - }, - "frame": { - "x": 143, - "y": 171, - "w": 18, - "h": 23 - } - }, - { - "filename": "447_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 20, - "h": 20 - }, - "frame": { - "x": 146, - "y": 194, - "w": 20, - "h": 20 + "x": 162, + "y": 145, + "w": 21, + "h": 26 } }, { @@ -1599,14 +1326,14 @@ "h": 23 }, "frame": { - "x": 160, - "y": 147, + "x": 209, + "y": 97, "w": 18, "h": 23 } }, { - "filename": "442_3", + "filename": "427_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1614,15 +1341,141 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, + "x": 11, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 215, + "y": 120, + "w": 20, + "h": 24 + } + }, + { + "filename": "448-mega_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 3, + "w": 21, + "h": 26 + }, + "frame": { + "x": 183, + "y": 144, + "w": 21, + "h": 26 + } + }, + { + "filename": "448-mega_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 3, + "w": 21, + "h": 26 + }, + "frame": { + "x": 204, + "y": 144, + "w": 21, + "h": 26 + } + }, + { + "filename": "440_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 8, + "w": 16, + "h": 21 + }, + "frame": { + "x": 225, + "y": 144, + "w": 16, + "h": 21 + } + }, + { + "filename": "427_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 55, + "y": 198, + "w": 20, + "h": 24 + } + }, + { + "filename": "494_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 56, + "y": 174, + "w": 20, + "h": 24 + } + }, + { + "filename": "490_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, "y": 7, - "w": 23, + "w": 24, "h": 22 }, "frame": { - "x": 178, - "y": 144, - "w": 23, + "x": 76, + "y": 174, + "w": 24, "h": 22 } }, @@ -1641,50 +1494,8 @@ "h": 19 }, "frame": { - "x": 201, - "y": 144, - "w": 22, - "h": 19 - } - }, - { - "filename": "448_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 23 - }, - "frame": { - "x": 161, - "y": 170, - "w": 18, - "h": 23 - } - }, - { - "filename": "458_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 22, - "h": 19 - }, - "frame": { - "x": 179, - "y": 166, + "x": 60, + "y": 222, "w": 22, "h": 19 } @@ -1704,33 +1515,12 @@ "h": 19 }, "frame": { - "x": 201, - "y": 163, + "x": 100, + "y": 176, "w": 25, "h": 19 } }, - { - "filename": "447_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 20, - "h": 20 - }, - "frame": { - "x": 166, - "y": 193, - "w": 20, - "h": 20 - } - }, { "filename": "489_2", "rotated": false, @@ -1746,12 +1536,138 @@ "h": 19 }, "frame": { - "x": 201, - "y": 182, + "x": 125, + "y": 176, "w": 25, "h": 19 } }, + { + "filename": "494_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 75, + "y": 198, + "w": 20, + "h": 24 + } + }, + { + "filename": "458_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 9, + "w": 22, + "h": 19 + }, + "frame": { + "x": 82, + "y": 222, + "w": 22, + "h": 19 + } + }, + { + "filename": "440_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 8, + "w": 16, + "h": 21 + }, + "frame": { + "x": 150, + "y": 176, + "w": 16, + "h": 21 + } + }, + { + "filename": "448_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 18, + "h": 23 + }, + "frame": { + "x": 166, + "y": 171, + "w": 18, + "h": 23 + } + }, + { + "filename": "490_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 24, + "h": 22 + }, + "frame": { + "x": 184, + "y": 170, + "w": 24, + "h": 22 + } + }, + { + "filename": "442_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 23, + "h": 22 + }, + "frame": { + "x": 208, + "y": 170, + "w": 23, + "h": 22 + } + }, { "filename": "489_3", "rotated": false, @@ -1767,12 +1683,117 @@ "h": 19 }, "frame": { - "x": 186, - "y": 201, + "x": 184, + "y": 192, "w": 25, "h": 19 } }, + { + "filename": "442_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 23, + "h": 22 + }, + "frame": { + "x": 209, + "y": 192, + "w": 23, + "h": 22 + } + }, + { + "filename": "490_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 24, + "h": 22 + }, + "frame": { + "x": 100, + "y": 195, + "w": 24, + "h": 22 + } + }, + { + "filename": "443_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 21, + "h": 21 + }, + "frame": { + "x": 124, + "y": 195, + "w": 21, + "h": 21 + } + }, + { + "filename": "443_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 21, + "h": 21 + }, + "frame": { + "x": 104, + "y": 217, + "w": 21, + "h": 21 + } + }, + { + "filename": "443_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 21, + "h": 21 + }, + "frame": { + "x": 125, + "y": 216, + "w": 21, + "h": 21 + } + }, { "filename": "399_2", "rotated": false, @@ -1788,33 +1809,12 @@ "h": 18 }, "frame": { - "x": 211, - "y": 201, + "x": 145, + "y": 197, "w": 22, "h": 18 } }, - { - "filename": "492-land_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 11, - "w": 20, - "h": 18 - }, - "frame": { - "x": 166, - "y": 213, - "w": 20, - "h": 18 - } - }, { "filename": "399_3", "rotated": false, @@ -1830,12 +1830,54 @@ "h": 18 }, "frame": { - "x": 186, - "y": 220, + "x": 146, + "y": 215, "w": 22, "h": 18 } }, + { + "filename": "440_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 8, + "w": 16, + "h": 21 + }, + "frame": { + "x": 167, + "y": 194, + "w": 16, + "h": 21 + } + }, + { + "filename": "492-land_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 11, + "w": 20, + "h": 18 + }, + "frame": { + "x": 168, + "y": 215, + "w": 20, + "h": 18 + } + }, { "filename": "492-land_3", "rotated": false, @@ -1851,8 +1893,8 @@ "h": 18 }, "frame": { - "x": 211, - "y": 219, + "x": 188, + "y": 211, "w": 20, "h": 18 } @@ -1863,6 +1905,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:4b63c5647394176b03a33faa1261b5ce:a9e8c9029ae919f3288c88e736961ac4:ebc3f8ec5b2480b298192d752b6e57dc$" + "smartupdate": "$TexturePacker:SmartUpdate:cc5ef470e30914396d6fe36e218a5c9b:1eba0f8c1334e76461b01e852656e0cf:ebc3f8ec5b2480b298192d752b6e57dc$" } } diff --git a/public/images/pokemon_icons_4v.png b/public/images/pokemon_icons_4v.png index ec441236c..274a8a497 100644 Binary files a/public/images/pokemon_icons_4v.png and b/public/images/pokemon_icons_4v.png differ diff --git a/public/images/pokemon_icons_5v.json b/public/images/pokemon_icons_5v.json index 4091d3527..557aae7e1 100644 --- a/public/images/pokemon_icons_5v.json +++ b/public/images/pokemon_icons_5v.json @@ -4,8 +4,8 @@ "image": "pokemon_icons_5v.png", "format": "RGBA8888", "size": { - "w": 219, - "h": 219 + "w": 237, + "h": 237 }, "scale": 1, "frames": [ @@ -241,7 +241,7 @@ } }, { - "filename": "560_1", + "filename": "609_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -249,16 +249,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 23 + "x": 5, + "y": 4, + "w": 31, + "h": 25 }, "frame": { "x": 197, "y": 0, - "w": 22, - "h": 23 + "w": 31, + "h": 25 } }, { @@ -283,7 +283,7 @@ } }, { - "filename": "571_2", + "filename": "533_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -291,20 +291,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 31, - "h": 24 + "x": 7, + "y": 3, + "w": 29, + "h": 26 }, "frame": { "x": 0, "y": 195, - "w": 31, - "h": 24 + "w": 29, + "h": 26 } }, { - "filename": "560_2", + "filename": "546_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -313,40 +313,19 @@ }, "spriteSourceSize": { "x": 9, - "y": 6, - "w": 22, - "h": 23 + "y": 13, + "w": 23, + "h": 16 }, "frame": { - "x": 197, - "y": 23, - "w": 22, - "h": 23 + "x": 0, + "y": 221, + "w": 23, + "h": 16 } }, { - "filename": "571_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 166, - "y": 25, - "w": 31, - "h": 24 - } - }, - { - "filename": "560_3", + "filename": "546_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -355,15 +334,15 @@ }, "spriteSourceSize": { "x": 9, - "y": 6, - "w": 22, - "h": 23 + "y": 13, + "w": 23, + "h": 16 }, "frame": { - "x": 197, - "y": 46, - "w": 22, - "h": 23 + "x": 23, + "y": 221, + "w": 23, + "h": 16 } }, { @@ -423,14 +402,14 @@ "h": 23 }, "frame": { - "x": 33, - "y": 28, + "x": 166, + "y": 25, "w": 32, "h": 23 } }, { - "filename": "609_3", + "filename": "571_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -439,19 +418,19 @@ }, "spriteSourceSize": { "x": 5, - "y": 4, + "y": 5, "w": 31, - "h": 25 + "h": 24 }, "frame": { - "x": 32, - "y": 51, + "x": 198, + "y": 25, "w": 31, - "h": 25 + "h": 24 } }, { - "filename": "533_3", + "filename": "571_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -459,16 +438,37 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 29, - "h": 26 + "x": 5, + "y": 5, + "w": 31, + "h": 24 }, "frame": { - "x": 32, - "y": 76, - "w": 29, - "h": 26 + "x": 33, + "y": 28, + "w": 31, + "h": 24 + } + }, + { + "filename": "593_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 30, + "h": 24 + }, + "frame": { + "x": 64, + "y": 28, + "w": 30, + "h": 24 } }, { @@ -487,13 +487,13 @@ }, "frame": { "x": 32, - "y": 102, + "y": 52, "w": 27, "h": 27 } }, { - "filename": "538_2", + "filename": "593_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -502,36 +502,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 7, + "y": 5, "w": 30, - "h": 22 + "h": 24 }, "frame": { - "x": 65, - "y": 28, + "x": 59, + "y": 52, "w": 30, - "h": 22 - } - }, - { - "filename": "538_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 30, - "h": 22 - }, - "frame": { - "x": 32, - "y": 129, - "w": 30, - "h": 22 + "h": 24 } }, { @@ -549,54 +528,12 @@ "h": 26 }, "frame": { - "x": 29, - "y": 151, + "x": 32, + "y": 79, "w": 25, "h": 26 } }, - { - "filename": "562_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 24, - "h": 18 - }, - "frame": { - "x": 29, - "y": 177, - "w": 24, - "h": 18 - } - }, - { - "filename": "547_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 23, - "h": 24 - }, - "frame": { - "x": 31, - "y": 195, - "w": 23, - "h": 24 - } - }, { "filename": "586-summer_1", "rotated": false, @@ -612,14 +549,14 @@ "h": 26 }, "frame": { - "x": 54, - "y": 151, + "x": 32, + "y": 105, "w": 25, "h": 26 } }, { - "filename": "562_3", + "filename": "532_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -627,20 +564,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 24, - "h": 18 + "x": 7, + "y": 8, + "w": 26, + "h": 21 }, "frame": { - "x": 53, - "y": 177, - "w": 24, - "h": 18 + "x": 32, + "y": 131, + "w": 26, + "h": 21 } }, { - "filename": "547_3", + "filename": "593-f_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -648,15 +585,120 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, + "x": 6, "y": 5, - "w": 23, + "w": 29, "h": 24 }, "frame": { - "x": 54, - "y": 195, - "w": 23, + "x": 29, + "y": 152, + "w": 29, + "h": 24 + } + }, + { + "filename": "593-f_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 29, + "h": 24 + }, + "frame": { + "x": 29, + "y": 176, + "w": 29, + "h": 24 + } + }, + { + "filename": "532_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 8, + "w": 26, + "h": 21 + }, + "frame": { + "x": 29, + "y": 200, + "w": 26, + "h": 21 + } + }, + { + "filename": "577_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 13, + "w": 17, + "h": 16 + }, + "frame": { + "x": 46, + "y": 221, + "w": 17, + "h": 16 + } + }, + { + "filename": "538_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 30, + "h": 22 + }, + "frame": { + "x": 59, + "y": 76, + "w": 30, + "h": 22 + } + }, + { + "filename": "593-f_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 29, + "h": 24 + }, + "frame": { + "x": 57, + "y": 98, + "w": 29, "h": 24 } }, @@ -675,8 +717,8 @@ "h": 26 }, "frame": { - "x": 61, - "y": 76, + "x": 58, + "y": 122, "w": 25, "h": 26 } @@ -696,33 +738,12 @@ "h": 26 }, "frame": { - "x": 59, - "y": 102, + "x": 58, + "y": 148, "w": 24, "h": 26 } }, - { - "filename": "549_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 23 - }, - "frame": { - "x": 62, - "y": 128, - "w": 19, - "h": 23 - } - }, { "filename": "649-burn_3", "rotated": false, @@ -738,12 +759,54 @@ "h": 26 }, "frame": { - "x": 65, - "y": 50, + "x": 58, + "y": 174, "w": 24, "h": 26 } }, + { + "filename": "572_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 24, + "h": 21 + }, + "frame": { + "x": 55, + "y": 200, + "w": 24, + "h": 21 + } + }, + { + "filename": "577_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 13, + "w": 17, + "h": 16 + }, + "frame": { + "x": 63, + "y": 221, + "w": 17, + "h": 16 + } + }, { "filename": "649-chill_2", "rotated": false, @@ -760,11 +823,95 @@ }, "frame": { "x": 89, - "y": 50, + "y": 52, "w": 24, "h": 26 } }, + { + "filename": "538_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 7, + "w": 30, + "h": 22 + }, + "frame": { + "x": 113, + "y": 49, + "w": 30, + "h": 22 + } + }, + { + "filename": "572_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 8, + "w": 24, + "h": 21 + }, + "frame": { + "x": 89, + "y": 78, + "w": 24, + "h": 21 + } + }, + { + "filename": "620_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 27, + "h": 24 + }, + "frame": { + "x": 113, + "y": 71, + "w": 27, + "h": 24 + } + }, + { + "filename": "620_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 27, + "h": 24 + }, + "frame": { + "x": 86, + "y": 99, + "w": 27, + "h": 24 + } + }, { "filename": "649-chill_3", "rotated": false, @@ -780,8 +927,8 @@ "h": 26 }, "frame": { - "x": 86, - "y": 76, + "x": 113, + "y": 95, "w": 24, "h": 26 } @@ -802,7 +949,7 @@ }, "frame": { "x": 83, - "y": 102, + "y": 123, "w": 24, "h": 26 } @@ -822,8 +969,8 @@ "h": 26 }, "frame": { - "x": 113, - "y": 49, + "x": 82, + "y": 149, "w": 24, "h": 26 } @@ -843,12 +990,33 @@ "h": 26 }, "frame": { - "x": 137, - "y": 49, + "x": 82, + "y": 175, "w": 24, "h": 26 } }, + { + "filename": "547_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 23, + "h": 24 + }, + "frame": { + "x": 143, + "y": 49, + "w": 23, + "h": 24 + } + }, { "filename": "649-shock_3", "rotated": false, @@ -864,33 +1032,12 @@ "h": 26 }, "frame": { - "x": 161, - "y": 49, + "x": 166, + "y": 48, "w": 24, "h": 26 } }, - { - "filename": "532_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 26, - "h": 21 - }, - "frame": { - "x": 81, - "y": 128, - "w": 26, - "h": 21 - } - }, { "filename": "649_2", "rotated": false, @@ -906,8 +1053,8 @@ "h": 26 }, "frame": { - "x": 110, - "y": 76, + "x": 140, + "y": 73, "w": 24, "h": 26 } @@ -927,35 +1074,14 @@ "h": 26 }, "frame": { - "x": 107, - "y": 102, + "x": 164, + "y": 74, "w": 24, "h": 26 } }, { - "filename": "532_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 26, - "h": 21 - }, - "frame": { - "x": 134, - "y": 75, - "w": 26, - "h": 21 - } - }, - { - "filename": "572_2", + "filename": "547_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -964,19 +1090,19 @@ }, "spriteSourceSize": { "x": 8, - "y": 8, - "w": 24, - "h": 21 + "y": 5, + "w": 23, + "h": 24 }, "frame": { - "x": 107, - "y": 128, - "w": 24, - "h": 21 + "x": 137, + "y": 99, + "w": 23, + "h": 24 } }, { - "filename": "572_3", + "filename": "560_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -984,41 +1110,41 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 24, - "h": 21 + "x": 9, + "y": 6, + "w": 22, + "h": 23 }, "frame": { "x": 160, - "y": 75, + "y": 100, + "w": 22, + "h": 23 + } + }, + { + "filename": "562_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 11, "w": 24, - "h": 21 - } - }, - { - "filename": "546_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 13, - "w": 23, - "h": 16 + "h": 18 }, "frame": { - "x": 134, - "y": 96, - "w": 23, - "h": 16 + "x": 79, + "y": 201, + "w": 24, + "h": 18 } }, { - "filename": "585-autumn_1", + "filename": "562_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1026,83 +1152,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 20, - "h": 24 - }, - "frame": { - "x": 131, - "y": 112, - "w": 20, - "h": 24 - } - }, - { - "filename": "546_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 13, - "w": 23, - "h": 16 - }, - "frame": { - "x": 157, - "y": 96, - "w": 23, - "h": 16 - } - }, - { - "filename": "585-spring_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 20, - "h": 24 - }, - "frame": { - "x": 151, - "y": 112, - "w": 20, - "h": 24 - } - }, - { - "filename": "541_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, + "x": 8, "y": 11, - "w": 22, + "w": 24, "h": 18 }, "frame": { - "x": 131, - "y": 136, - "w": 22, + "x": 80, + "y": 219, + "w": 24, "h": 18 } }, { - "filename": "541_3", + "filename": "560_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1111,19 +1174,19 @@ }, "spriteSourceSize": { "x": 9, - "y": 11, + "y": 6, "w": 22, - "h": 18 + "h": 23 }, "frame": { - "x": 153, - "y": 136, + "x": 190, + "y": 49, "w": 22, - "h": 18 + "h": 23 } }, { - "filename": "585-summer_1", + "filename": "549_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1131,79 +1194,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 20, - "h": 24 + "x": 10, + "y": 6, + "w": 19, + "h": 23 }, "frame": { - "x": 171, - "y": 112, - "w": 20, - "h": 24 - } - }, - { - "filename": "540_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 17, - "h": 19 - }, - "frame": { - "x": 175, - "y": 136, - "w": 17, - "h": 19 - } - }, - { - "filename": "577_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 13, - "w": 17, - "h": 16 - }, - "frame": { - "x": 180, - "y": 96, - "w": 17, - "h": 16 - } - }, - { - "filename": "578_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 21 - }, - "frame": { - "x": 184, - "y": 75, - "w": 18, - "h": 21 + "x": 212, + "y": 49, + "w": 19, + "h": 23 } }, { @@ -1221,12 +1221,117 @@ "h": 25 }, "frame": { - "x": 202, - "y": 69, + "x": 107, + "y": 123, "w": 17, "h": 25 } }, + { + "filename": "560_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 6, + "w": 22, + "h": 23 + }, + "frame": { + "x": 124, + "y": 123, + "w": 22, + "h": 23 + } + }, + { + "filename": "585-autumn_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 146, + "y": 123, + "w": 20, + "h": 24 + } + }, + { + "filename": "585-spring_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 166, + "y": 123, + "w": 20, + "h": 24 + } + }, + { + "filename": "542_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 16, + "h": 23 + }, + "frame": { + "x": 182, + "y": 100, + "w": 16, + "h": 23 + } + }, + { + "filename": "585-summer_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 186, + "y": 123, + "w": 20, + "h": 24 + } + }, { "filename": "648-pirouette_3", "rotated": false, @@ -1242,8 +1347,8 @@ "h": 25 }, "frame": { - "x": 202, - "y": 94, + "x": 188, + "y": 74, "w": 17, "h": 25 } @@ -1263,14 +1368,14 @@ "h": 24 }, "frame": { - "x": 77, - "y": 177, + "x": 205, + "y": 72, "w": 20, "h": 24 } }, { - "filename": "559_1", + "filename": "542_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1279,15 +1384,15 @@ }, "spriteSourceSize": { "x": 12, - "y": 11, - "w": 17, - "h": 18 + "y": 6, + "w": 16, + "h": 23 }, "frame": { - "x": 77, - "y": 201, - "w": 17, - "h": 18 + "x": 198, + "y": 99, + "w": 16, + "h": 23 } }, { @@ -1305,14 +1410,14 @@ "h": 23 }, "frame": { - "x": 79, - "y": 154, + "x": 214, + "y": 96, "w": 19, "h": 23 } }, { - "filename": "559_2", + "filename": "648-aria_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1321,17 +1426,311 @@ }, "spriteSourceSize": { "x": 12, + "y": 6, + "w": 16, + "h": 23 + }, + "frame": { + "x": 206, + "y": 122, + "w": 16, + "h": 23 + } + }, + { + "filename": "607_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 9, + "w": 15, + "h": 20 + }, + "frame": { + "x": 222, + "y": 119, + "w": 15, + "h": 20 + } + }, + { + "filename": "607_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 9, + "w": 15, + "h": 20 + }, + "frame": { + "x": 222, + "y": 139, + "w": 15, + "h": 20 + } + }, + { + "filename": "648-aria_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 16, + "h": 23 + }, + "frame": { + "x": 206, + "y": 145, + "w": 16, + "h": 23 + } + }, + { + "filename": "541_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, "y": 11, - "w": 17, + "w": 22, "h": 18 }, "frame": { - "x": 94, - "y": 201, - "w": 17, + "x": 124, + "y": 146, + "w": 22, "h": 18 } }, + { + "filename": "541_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 11, + "w": 22, + "h": 18 + }, + "frame": { + "x": 146, + "y": 147, + "w": 22, + "h": 18 + } + }, + { + "filename": "592-f_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 21, + "h": 22 + }, + "frame": { + "x": 168, + "y": 147, + "w": 21, + "h": 22 + } + }, + { + "filename": "540_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 10, + "w": 17, + "h": 19 + }, + "frame": { + "x": 189, + "y": 147, + "w": 17, + "h": 19 + } + }, + { + "filename": "578_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 18, + "h": 21 + }, + "frame": { + "x": 106, + "y": 149, + "w": 18, + "h": 21 + } + }, + { + "filename": "592-f_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 21, + "h": 22 + }, + "frame": { + "x": 106, + "y": 170, + "w": 21, + "h": 22 + } + }, + { + "filename": "578_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 18, + "h": 21 + }, + "frame": { + "x": 127, + "y": 164, + "w": 18, + "h": 21 + } + }, + { + "filename": "592-f_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 21, + "h": 22 + }, + "frame": { + "x": 145, + "y": 165, + "w": 21, + "h": 22 + } + }, + { + "filename": "592_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 21, + "h": 22 + }, + "frame": { + "x": 166, + "y": 169, + "w": 21, + "h": 22 + } + }, + { + "filename": "592_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 21, + "h": 22 + }, + "frame": { + "x": 106, + "y": 192, + "w": 21, + "h": 22 + } + }, + { + "filename": "578_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 18, + "h": 21 + }, + "frame": { + "x": 127, + "y": 185, + "w": 18, + "h": 21 + } + }, { "filename": "608_2", "rotated": false, @@ -1347,8 +1746,8 @@ "h": 20 }, "frame": { - "x": 98, - "y": 149, + "x": 145, + "y": 187, "w": 21, "h": 20 } @@ -1368,56 +1767,14 @@ "h": 20 }, "frame": { - "x": 98, - "y": 169, + "x": 166, + "y": 191, "w": 21, "h": 20 } }, { - "filename": "542_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 - }, - "frame": { - "x": 119, - "y": 154, - "w": 16, - "h": 23 - } - }, - { - "filename": "542_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 - }, - "frame": { - "x": 135, - "y": 154, - "w": 16, - "h": 23 - } - }, - { - "filename": "578_2", + "filename": "619_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -1427,34 +1784,13 @@ "spriteSourceSize": { "x": 11, "y": 8, - "w": 18, + "w": 20, "h": 21 }, "frame": { - "x": 151, - "y": 154, - "w": 18, - "h": 21 - } - }, - { - "filename": "578_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 21 - }, - "frame": { - "x": 169, - "y": 155, - "w": 18, + "x": 104, + "y": 214, + "w": 20, "h": 21 } }, @@ -1473,14 +1809,14 @@ "h": 19 }, "frame": { - "x": 119, - "y": 177, + "x": 127, + "y": 206, "w": 18, "h": 19 } }, { - "filename": "648-aria_2", + "filename": "619_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1488,79 +1824,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 + "x": 11, + "y": 8, + "w": 20, + "h": 21 }, "frame": { - "x": 111, - "y": 196, - "w": 16, - "h": 23 - } - }, - { - "filename": "648-aria_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 23 - }, - "frame": { - "x": 127, - "y": 196, - "w": 16, - "h": 23 - } - }, - { - "filename": "540_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 17, - "h": 19 - }, - "frame": { - "x": 137, - "y": 177, - "w": 17, - "h": 19 - } - }, - { - "filename": "607_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 20 - }, - "frame": { - "x": 154, - "y": 175, - "w": 15, - "h": 20 + "x": 145, + "y": 207, + "w": 20, + "h": 21 } }, { @@ -1578,12 +1851,33 @@ "h": 19 }, "frame": { - "x": 169, - "y": 176, + "x": 165, + "y": 211, "w": 18, "h": 19 } }, + { + "filename": "540_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 10, + "w": 17, + "h": 19 + }, + "frame": { + "x": 183, + "y": 211, + "w": 17, + "h": 19 + } + }, { "filename": "548_1", "rotated": false, @@ -1599,33 +1893,12 @@ "h": 20 }, "frame": { - "x": 143, - "y": 196, + "x": 222, + "y": 159, "w": 14, "h": 20 } }, - { - "filename": "559_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 18 - }, - "frame": { - "x": 157, - "y": 195, - "w": 17, - "h": 18 - } - }, { "filename": "548_2", "rotated": false, @@ -1641,8 +1914,8 @@ "h": 20 }, "frame": { - "x": 174, - "y": 195, + "x": 187, + "y": 169, "w": 14, "h": 20 } @@ -1663,34 +1936,13 @@ }, "frame": { "x": 187, - "y": 155, + "y": 189, "w": 14, "h": 20 } }, { - "filename": "607_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 20 - }, - "frame": { - "x": 187, - "y": 175, - "w": 15, - "h": 20 - } - }, - { - "filename": "577_2", + "filename": "559_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -1699,15 +1951,57 @@ }, "spriteSourceSize": { "x": 12, - "y": 13, + "y": 11, "w": 17, - "h": 16 + "h": 18 }, "frame": { - "x": 202, - "y": 119, + "x": 201, + "y": 168, "w": 17, - "h": 16 + "h": 18 + } + }, + { + "filename": "559_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 11, + "w": 17, + "h": 18 + }, + "frame": { + "x": 201, + "y": 186, + "w": 17, + "h": 18 + } + }, + { + "filename": "559_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 11, + "w": 17, + "h": 18 + }, + "frame": { + "x": 218, + "y": 179, + "w": 17, + "h": 18 } }, { @@ -1725,8 +2019,8 @@ "h": 16 }, "frame": { - "x": 202, - "y": 135, + "x": 218, + "y": 197, "w": 17, "h": 16 } @@ -1737,6 +2031,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6a72d905f49c2e6c5a2043fc04e736e5:9d034b1095aa7c830432005b7740f0b5:f1931bc28ee7f32dba7543723757cf2a$" + "smartupdate": "$TexturePacker:SmartUpdate:c76d37eea220913a090b0aaebeba0416:dac99d4c8e287d30b7d345500e57da65:f1931bc28ee7f32dba7543723757cf2a$" } } diff --git a/public/images/pokemon_icons_5v.png b/public/images/pokemon_icons_5v.png index 0aa10cec7..c688b3e80 100644 Binary files a/public/images/pokemon_icons_5v.png and b/public/images/pokemon_icons_5v.png differ diff --git a/public/images/pokemon_icons_6.json b/public/images/pokemon_icons_6.json index 48a676cc9..f0d7a46c7 100644 --- a/public/images/pokemon_icons_6.json +++ b/public/images/pokemon_icons_6.json @@ -5,7 +5,7 @@ "format": "RGBA8888", "size": { "w": 254, - "h": 554 + "h": 557 }, "scale": 1, "frames": [ @@ -556,7 +556,7 @@ } }, { - "filename": "708", + "filename": "675", "rotated": false, "trimmed": true, "sourceSize": { @@ -564,16 +564,37 @@ "h": 30 }, "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 25, - "h": 21 + "x": 7, + "y": 4, + "w": 28, + "h": 24 }, "frame": { "x": 0, "y": 533, - "w": 25, - "h": 21 + "w": 28, + "h": 24 + } + }, + { + "filename": "675s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 28, + "h": 24 + }, + "frame": { + "x": 28, + "y": 533, + "w": 28, + "h": 24 } }, { @@ -597,27 +618,6 @@ "h": 27 } }, - { - "filename": "708s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 25, - "y": 533, - "w": 25, - "h": 21 - } - }, { "filename": "691", "rotated": false, @@ -661,7 +661,7 @@ } }, { - "filename": "675", + "filename": "715", "rotated": false, "trimmed": true, "sourceSize": { @@ -669,7 +669,7 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, + "x": 6, "y": 4, "w": 28, "h": 24 @@ -786,6 +786,27 @@ "h": 22 } }, + { + "filename": "658-ash", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 30, + "h": 23 + }, + "frame": { + "x": 132, + "y": 49, + "w": 30, + "h": 23 + } + }, { "filename": "658", "rotated": false, @@ -801,8 +822,8 @@ "h": 22 }, "frame": { - "x": 132, - "y": 49, + "x": 162, + "y": 50, "w": 30, "h": 22 } @@ -822,7 +843,7 @@ "h": 23 }, "frame": { - "x": 162, + "x": 192, "y": 50, "w": 30, "h": 23 @@ -843,8 +864,8 @@ "h": 22 }, "frame": { - "x": 192, - "y": 50, + "x": 222, + "y": 51, "w": 30, "h": 22 } @@ -864,51 +885,9 @@ "h": 22 }, "frame": { - "x": 222, - "y": 51, - "w": 30, - "h": 22 - } - }, - { - "filename": "654", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 50, + "x": 38, "y": 54, - "w": 20, - "h": 22 - } - }, - { - "filename": "705", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 35, - "y": 56, - "w": 15, + "w": 30, "h": 22 } }, @@ -927,119 +906,14 @@ "h": 22 }, "frame": { - "x": 70, - "y": 70, + "x": 35, + "y": 76, "w": 30, "h": 22 } }, { - "filename": "675s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 28, - "h": 24 - }, - "frame": { - "x": 100, - "y": 70, - "w": 28, - "h": 24 - } - }, - { - "filename": "715", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 28, - "h": 24 - }, - "frame": { - "x": 128, - "y": 71, - "w": 28, - "h": 24 - } - }, - { - "filename": "715s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 28, - "h": 24 - }, - "frame": { - "x": 156, - "y": 73, - "w": 28, - "h": 24 - } - }, - { - "filename": "654s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 50, - "y": 76, - "w": 20, - "h": 22 - } - }, - { - "filename": "705s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 35, - "y": 78, - "w": 15, - "h": 22 - } - }, - { - "filename": "676-diamond", + "filename": "671-orange", "rotated": false, "trimmed": true, "sourceSize": { @@ -1048,15 +922,15 @@ }, "spriteSourceSize": { "x": 8, - "y": 0, - "w": 24, - "h": 28 + "y": 3, + "w": 26, + "h": 27 }, "frame": { "x": 32, - "y": 100, - "w": 24, - "h": 28 + "y": 98, + "w": 26, + "h": 27 } }, { @@ -1075,32 +949,11 @@ }, "frame": { "x": 32, - "y": 128, + "y": 125, "w": 26, "h": 24 } }, - { - "filename": "671-orange", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 26, - "h": 27 - }, - "frame": { - "x": 29, - "y": 152, - "w": 26, - "h": 27 - } - }, { "filename": "671-red", "rotated": false, @@ -1117,7 +970,7 @@ }, "frame": { "x": 29, - "y": 179, + "y": 149, "w": 26, "h": 27 } @@ -1137,12 +990,54 @@ "h": 27 }, "frame": { - "x": 28, - "y": 206, + "x": 29, + "y": 176, "w": 26, "h": 27 } }, + { + "filename": "676-diamond", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 28 + }, + "frame": { + "x": 58, + "y": 98, + "w": 24, + "h": 28 + } + }, + { + "filename": "652s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 26, + "h": 24 + }, + "frame": { + "x": 58, + "y": 126, + "w": 26, + "h": 24 + } + }, { "filename": "671-yellow", "rotated": false, @@ -1158,8 +1053,8 @@ "h": 27 }, "frame": { - "x": 28, - "y": 233, + "x": 55, + "y": 150, "w": 26, "h": 27 } @@ -1179,12 +1074,33 @@ "h": 27 }, "frame": { - "x": 28, - "y": 260, + "x": 55, + "y": 177, "w": 26, "h": 27 } }, + { + "filename": "650", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 17, + "h": 22 + }, + "frame": { + "x": 65, + "y": 76, + "w": 17, + "h": 22 + } + }, { "filename": "671s-orange", "rotated": false, @@ -1200,8 +1116,29 @@ "h": 27 }, "frame": { - "x": 28, - "y": 287, + "x": 82, + "y": 70, + "w": 26, + "h": 27 + } + }, + { + "filename": "671s-red", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 26, + "h": 27 + }, + "frame": { + "x": 82, + "y": 97, "w": 26, "h": 27 } @@ -1221,33 +1158,12 @@ "h": 28 }, "frame": { - "x": 56, - "y": 98, + "x": 108, + "y": 70, "w": 24, "h": 28 } }, - { - "filename": "671s-red", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 26, - "h": 27 - }, - "frame": { - "x": 58, - "y": 126, - "w": 26, - "h": 27 - } - }, { "filename": "671s-white", "rotated": false, @@ -1263,8 +1179,8 @@ "h": 27 }, "frame": { - "x": 55, - "y": 153, + "x": 132, + "y": 72, "w": 26, "h": 27 } @@ -1284,12 +1200,54 @@ "h": 27 }, "frame": { - "x": 55, - "y": 180, + "x": 158, + "y": 72, "w": 26, "h": 27 } }, + { + "filename": "676-dandy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 24, + "h": 26 + }, + "frame": { + "x": 108, + "y": 98, + "w": 24, + "h": 26 + } + }, + { + "filename": "715s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 28, + "h": 24 + }, + "frame": { + "x": 132, + "y": 99, + "w": 28, + "h": 24 + } + }, { "filename": "676-star", "rotated": false, @@ -1305,8 +1263,8 @@ "h": 27 }, "frame": { - "x": 54, - "y": 207, + "x": 84, + "y": 124, "w": 26, "h": 27 } @@ -1326,12 +1284,54 @@ "h": 27 }, "frame": { - "x": 54, - "y": 234, + "x": 81, + "y": 151, "w": 26, "h": 27 } }, + { + "filename": "660", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 25 + }, + "frame": { + "x": 81, + "y": 178, + "w": 26, + "h": 25 + } + }, + { + "filename": "676", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 24, + "h": 27 + }, + "frame": { + "x": 110, + "y": 124, + "w": 24, + "h": 27 + } + }, { "filename": "721", "rotated": false, @@ -1347,138 +1347,12 @@ "h": 27 }, "frame": { - "x": 54, - "y": 261, + "x": 107, + "y": 151, "w": 25, "h": 27 } }, - { - "filename": "676-heart", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 54, - "y": 288, - "w": 25, - "h": 26 - } - }, - { - "filename": "685", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 80, - "y": 92, - "w": 20, - "h": 23 - } - }, - { - "filename": "655", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 100, - "y": 94, - "w": 27, - "h": 23 - } - }, - { - "filename": "655s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 127, - "y": 95, - "w": 27, - "h": 23 - } - }, - { - "filename": "707s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 27, - "h": 24 - }, - "frame": { - "x": 154, - "y": 97, - "w": 27, - "h": 24 - } - }, - { - "filename": "713", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 27, - "h": 24 - }, - "frame": { - "x": 28, - "y": 314, - "w": 27, - "h": 24 - } - }, { "filename": "721s", "rotated": false, @@ -1494,243 +1368,12 @@ "h": 27 }, "frame": { - "x": 27, - "y": 338, + "x": 134, + "y": 123, "w": 25, "h": 27 } }, - { - "filename": "652s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 55, - "y": 314, - "w": 26, - "h": 24 - } - }, - { - "filename": "660", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 338, - "w": 26, - "h": 25 - } - }, - { - "filename": "684", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 12, - "w": 17, - "h": 16 - }, - "frame": { - "x": 27, - "y": 365, - "w": 17, - "h": 16 - } - }, - { - "filename": "676", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 24, - "h": 27 - }, - "frame": { - "x": 30, - "y": 381, - "w": 24, - "h": 27 - } - }, - { - "filename": "676s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 24, - "h": 27 - }, - "frame": { - "x": 30, - "y": 408, - "w": 24, - "h": 27 - } - }, - { - "filename": "699", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 24, - "h": 27 - }, - "frame": { - "x": 30, - "y": 435, - "w": 24, - "h": 27 - } - }, - { - "filename": "699s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 24, - "h": 27 - }, - "frame": { - "x": 30, - "y": 462, - "w": 24, - "h": 27 - } - }, - { - "filename": "676-dandy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 30, - "y": 489, - "w": 24, - "h": 26 - } - }, - { - "filename": "672", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 30, - "y": 515, - "w": 17, - "h": 18 - } - }, - { - "filename": "682", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 15, - "h": 16 - }, - "frame": { - "x": 44, - "y": 365, - "w": 15, - "h": 16 - } - }, - { - "filename": "651", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 59, - "y": 363, - "w": 21, - "h": 22 - } - }, { "filename": "660s", "rotated": false, @@ -1746,8 +1389,8 @@ "h": 25 }, "frame": { - "x": 54, - "y": 385, + "x": 107, + "y": 178, "w": 26, "h": 25 } @@ -1767,8 +1410,8 @@ "h": 25 }, "frame": { - "x": 54, - "y": 410, + "x": 160, + "y": 99, "w": 26, "h": 25 } @@ -1788,12 +1431,33 @@ "h": 25 }, "frame": { - "x": 54, - "y": 435, + "x": 159, + "y": 124, "w": 26, "h": 25 } }, + { + "filename": "676-heart", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 25, + "h": 26 + }, + "frame": { + "x": 184, + "y": 73, + "w": 25, + "h": 26 + } + }, { "filename": "666-elegant", "rotated": false, @@ -1809,12 +1473,33 @@ "h": 25 }, "frame": { - "x": 54, - "y": 460, + "x": 209, + "y": 73, "w": 26, "h": 25 } }, + { + "filename": "683", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 19, + "h": 23 + }, + "frame": { + "x": 235, + "y": 73, + "w": 19, + "h": 23 + } + }, { "filename": "666-fancy", "rotated": false, @@ -1830,14 +1515,14 @@ "h": 25 }, "frame": { - "x": 54, - "y": 485, + "x": 186, + "y": 99, "w": 26, "h": 25 } }, { - "filename": "659", + "filename": "666-garden", "rotated": false, "trimmed": true, "sourceSize": { @@ -1845,20 +1530,83 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 16, + "x": 8, + "y": 2, + "w": 26, "h": 25 }, "frame": { - "x": 184, - "y": 73, - "w": 16, + "x": 185, + "y": 124, + "w": 26, "h": 25 } }, { - "filename": "695", + "filename": "676-pharaoh", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 24, + "h": 26 + }, + "frame": { + "x": 212, + "y": 98, + "w": 24, + "h": 26 + } + }, + { + "filename": "679", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 236, + "y": 96, + "w": 18, + "h": 24 + } + }, + { + "filename": "666-high-plains", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 211, + "y": 124, + "w": 26, + "h": 25 + } + }, + { + "filename": "698", "rotated": false, "trimmed": true, "sourceSize": { @@ -1868,13 +1616,1063 @@ "spriteSourceSize": { "x": 11, "y": 4, - "w": 22, + "w": 17, "h": 24 }, "frame": { - "x": 200, - "y": 72, - "w": 22, + "x": 237, + "y": 120, + "w": 17, + "h": 24 + } + }, + { + "filename": "698s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 237, + "y": 144, + "w": 17, + "h": 24 + } + }, + { + "filename": "676s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 24, + "h": 27 + }, + "frame": { + "x": 132, + "y": 151, + "w": 24, + "h": 27 + } + }, + { + "filename": "666-icy-snow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 133, + "y": 178, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-jungle", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 29, + "y": 203, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-marine", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 28, + "y": 228, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-meadow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 28, + "y": 253, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-modern", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 28, + "y": 278, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-monsoon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 55, + "y": 204, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-ocean", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 81, + "y": 203, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-poke-ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 107, + "y": 203, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-polar", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 133, + "y": 203, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-river", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 54, + "y": 229, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-sandstorm", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 54, + "y": 254, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-savanna", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 54, + "y": 279, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-sun", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 28, + "y": 303, + "w": 26, + "h": 25 + } + }, + { + "filename": "666-tundra", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 27, + "y": 328, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-archipelago", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 27, + "y": 353, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-continental", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 54, + "y": 304, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-elegant", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 53, + "y": 329, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-fancy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 53, + "y": 354, + "w": 26, + "h": 25 + } + }, + { + "filename": "711-large", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 23, + "h": 25 + }, + "frame": { + "x": 30, + "y": 378, + "w": 23, + "h": 25 + } + }, + { + "filename": "666s-garden", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 53, + "y": 379, + "w": 26, + "h": 25 + } + }, + { + "filename": "711-super", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 23, + "h": 25 + }, + "frame": { + "x": 30, + "y": 403, + "w": 23, + "h": 25 + } + }, + { + "filename": "666s-high-plains", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 53, + "y": 404, + "w": 26, + "h": 25 + } + }, + { + "filename": "711s-large", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 23, + "h": 25 + }, + "frame": { + "x": 30, + "y": 428, + "w": 23, + "h": 25 + } + }, + { + "filename": "666s-icy-snow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 53, + "y": 429, + "w": 26, + "h": 25 + } + }, + { + "filename": "711s-super", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 23, + "h": 25 + }, + "frame": { + "x": 30, + "y": 453, + "w": 23, + "h": 25 + } + }, + { + "filename": "666s-jungle", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 53, + "y": 454, + "w": 26, + "h": 25 + } + }, + { + "filename": "657", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 23, + "h": 22 + }, + "frame": { + "x": 30, + "y": 478, + "w": 23, + "h": 22 + } + }, + { + "filename": "699", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 24, + "h": 27 + }, + "frame": { + "x": 30, + "y": 500, + "w": 24, + "h": 27 + } + }, + { + "filename": "708", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 25, + "h": 21 + }, + "frame": { + "x": 53, + "y": 479, + "w": 25, + "h": 21 + } + }, + { + "filename": "699s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 24, + "h": 27 + }, + "frame": { + "x": 54, + "y": 500, + "w": 24, + "h": 27 + } + }, + { + "filename": "676s-dandy", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 24, + "h": 26 + }, + "frame": { + "x": 56, + "y": 527, + "w": 24, + "h": 26 + } + }, + { + "filename": "655", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 27, + "h": 23 + }, + "frame": { + "x": 159, + "y": 149, + "w": 27, + "h": 23 + } + }, + { + "filename": "655s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 27, + "h": 23 + }, + "frame": { + "x": 186, + "y": 149, + "w": 27, + "h": 23 + } + }, + { + "filename": "676-matron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 24, + "h": 25 + }, + "frame": { + "x": 213, + "y": 149, + "w": 24, + "h": 25 + } + }, + { + "filename": "650s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 17, + "h": 22 + }, + "frame": { + "x": 237, + "y": 168, + "w": 17, + "h": 22 + } + }, + { + "filename": "666s-marine", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 159, + "y": 172, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-meadow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 185, + "y": 172, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-modern", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 211, + "y": 174, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-monsoon", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 159, + "y": 197, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-ocean", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 185, + "y": 197, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-poke-ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 211, + "y": 199, + "w": 26, + "h": 25 + } + }, + { + "filename": "710-large", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 8, + "w": 17, + "h": 20 + }, + "frame": { + "x": 237, + "y": 190, + "w": 17, + "h": 20 + } + }, + { + "filename": "710s-large", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 8, + "w": 17, + "h": 20 + }, + "frame": { + "x": 237, + "y": 210, + "w": 17, + "h": 20 + } + }, + { + "filename": "707s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 27, + "h": 24 + }, + "frame": { + "x": 159, + "y": 222, + "w": 27, + "h": 24 + } + }, + { + "filename": "676-debutante", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 186, + "y": 222, + "w": 25, + "h": 25 + } + }, + { + "filename": "666s-polar", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 211, + "y": 224, + "w": 26, + "h": 25 + } + }, + { + "filename": "653", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 9, + "w": 17, + "h": 19 + }, + "frame": { + "x": 237, + "y": 230, + "w": 17, + "h": 19 + } + }, + { + "filename": "713", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 27, + "h": 24 + }, + "frame": { + "x": 81, + "y": 228, + "w": 27, "h": 24 } }, @@ -1893,14 +2691,35 @@ "h": 24 }, "frame": { - "x": 222, - "y": 73, + "x": 108, + "y": 228, "w": 27, "h": 24 } }, { - "filename": "666-garden", + "filename": "676s-matron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 24, + "h": 25 + }, + "frame": { + "x": 135, + "y": 228, + "w": 24, + "h": 25 + } + }, + { + "filename": "666s-river", "rotated": false, "trimmed": true, "sourceSize": { @@ -1914,14 +2733,14 @@ "h": 25 }, "frame": { - "x": 181, - "y": 98, + "x": 80, + "y": 252, "w": 26, "h": 25 } }, { - "filename": "666-high-plains", + "filename": "666s-sandstorm", "rotated": false, "trimmed": true, "sourceSize": { @@ -1935,12 +2754,264 @@ "h": 25 }, "frame": { - "x": 207, - "y": 97, + "x": 80, + "y": 277, "w": 26, "h": 25 } }, + { + "filename": "666s-savanna", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 106, + "y": 252, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-sun", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 80, + "y": 302, + "w": 26, + "h": 25 + } + }, + { + "filename": "666s-tundra", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 106, + "y": 277, + "w": 26, + "h": 25 + } + }, + { + "filename": "676-kabuki", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 106, + "y": 302, + "w": 25, + "h": 25 + } + }, + { + "filename": "676s-heart", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 25, + "h": 26 + }, + "frame": { + "x": 132, + "y": 253, + "w": 25, + "h": 26 + } + }, + { + "filename": "676-la-reine", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 132, + "y": 279, + "w": 25, + "h": 25 + } + }, + { + "filename": "676s-debutante", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 131, + "y": 304, + "w": 25, + "h": 25 + } + }, + { + "filename": "676s-kabuki", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 159, + "y": 246, + "w": 25, + "h": 25 + } + }, + { + "filename": "676s-la-reine", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 157, + "y": 271, + "w": 25, + "h": 25 + } + }, + { + "filename": "709", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 184, + "y": 247, + "w": 25, + "h": 25 + } + }, + { + "filename": "709s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 182, + "y": 272, + "w": 25, + "h": 25 + } + }, + { + "filename": "676s-pharaoh", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 24, + "h": 26 + }, + "frame": { + "x": 209, + "y": 249, + "w": 24, + "h": 26 + } + }, { "filename": "711", "rotated": false, @@ -1957,7 +3028,7 @@ }, "frame": { "x": 233, - "y": 97, + "y": 249, "w": 21, "h": 23 } @@ -1978,977 +3049,11 @@ }, "frame": { "x": 233, - "y": 120, + "y": 272, "w": 21, "h": 23 } }, - { - "filename": "666-icy-snow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 207, - "y": 122, - "w": 26, - "h": 25 - } - }, - { - "filename": "651s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 233, - "y": 143, - "w": 21, - "h": 22 - } - }, - { - "filename": "659s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 16, - "h": 25 - }, - "frame": { - "x": 84, - "y": 115, - "w": 16, - "h": 25 - } - }, - { - "filename": "666-jungle", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 100, - "y": 117, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-marine", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 126, - "y": 118, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-meadow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 152, - "y": 121, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-modern", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 178, - "y": 123, - "w": 26, - "h": 25 - } - }, - { - "filename": "665", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 84, - "y": 140, - "w": 16, - "h": 17 - } - }, - { - "filename": "666-monsoon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 100, - "y": 142, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-ocean", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 126, - "y": 143, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-poke-ball", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 152, - "y": 146, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-polar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 178, - "y": 148, - "w": 26, - "h": 25 - } - }, - { - "filename": "683", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 19, - "h": 23 - }, - "frame": { - "x": 81, - "y": 157, - "w": 19, - "h": 23 - } - }, - { - "filename": "666-river", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 204, - "y": 147, - "w": 26, - "h": 25 - } - }, - { - "filename": "676-pharaoh", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 230, - "y": 165, - "w": 24, - "h": 26 - } - }, - { - "filename": "666-sandstorm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 204, - "y": 172, - "w": 26, - "h": 25 - } - }, - { - "filename": "676s-dandy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 230, - "y": 191, - "w": 24, - "h": 26 - } - }, - { - "filename": "676s-heart", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 81, - "y": 180, - "w": 25, - "h": 26 - } - }, - { - "filename": "703", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 15, - "w": 14, - "h": 13 - }, - "frame": { - "x": 100, - "y": 167, - "w": 14, - "h": 13 - } - }, - { - "filename": "676s-pharaoh", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 106, - "y": 180, - "w": 24, - "h": 26 - } - }, - { - "filename": "695s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 130, - "y": 168, - "w": 22, - "h": 24 - } - }, - { - "filename": "666-savanna", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 152, - "y": 171, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-sun", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 178, - "y": 173, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-tundra", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 204, - "y": 197, - "w": 26, - "h": 25 - } - }, - { - "filename": "676-matron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 25 - }, - "frame": { - "x": 230, - "y": 217, - "w": 24, - "h": 25 - } - }, - { - "filename": "662", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 130, - "y": 192, - "w": 22, - "h": 20 - } - }, - { - "filename": "666s-archipelago", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 152, - "y": 196, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-continental", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 178, - "y": 198, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-elegant", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 204, - "y": 222, - "w": 26, - "h": 25 - } - }, - { - "filename": "676s-matron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 25 - }, - "frame": { - "x": 230, - "y": 242, - "w": 24, - "h": 25 - } - }, - { - "filename": "666s-fancy", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 54, - "y": 510, - "w": 26, - "h": 25 - } - }, - { - "filename": "701", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 9, - "w": 23, - "h": 19 - }, - "frame": { - "x": 50, - "y": 535, - "w": 23, - "h": 19 - } - }, - { - "filename": "701s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 9, - "w": 23, - "h": 19 - }, - "frame": { - "x": 73, - "y": 535, - "w": 23, - "h": 19 - } - }, - { - "filename": "666s-garden", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 78, - "y": 338, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-high-plains", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 363, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-icy-snow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 388, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-jungle", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 413, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-marine", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 438, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-meadow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 463, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-modern", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 488, - "w": 26, - "h": 25 - } - }, - { - "filename": "657", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 23, - "h": 22 - }, - "frame": { - "x": 80, - "y": 513, - "w": 23, - "h": 22 - } - }, - { - "filename": "720", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 19 - }, - "frame": { - "x": 96, - "y": 535, - "w": 21, - "h": 19 - } - }, - { - "filename": "650", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 22 - }, - "frame": { - "x": 103, - "y": 513, - "w": 17, - "h": 22 - } - }, - { - "filename": "720s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 19 - }, - "frame": { - "x": 117, - "y": 535, - "w": 21, - "h": 19 - } - }, - { - "filename": "666s-monsoon", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 104, - "y": 206, - "w": 26, - "h": 25 - } - }, - { - "filename": "662s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 130, - "y": 212, - "w": 22, - "h": 20 - } - }, { "filename": "687", "rotated": false, @@ -2964,14 +3069,14 @@ "h": 25 }, "frame": { - "x": 80, - "y": 207, + "x": 207, + "y": 275, "w": 24, "h": 25 } }, { - "filename": "666s-ocean", + "filename": "657s", "rotated": false, "trimmed": true, "sourceSize": { @@ -2979,16 +3084,37 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 + "x": 10, + "y": 8, + "w": 23, + "h": 22 }, "frame": { - "x": 80, - "y": 232, - "w": 26, - "h": 25 + "x": 231, + "y": 295, + "w": 23, + "h": 22 + } + }, + { + "filename": "708s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 25, + "h": 21 + }, + "frame": { + "x": 157, + "y": 296, + "w": 25, + "h": 21 } }, { @@ -3006,96 +3132,12 @@ "h": 25 }, "frame": { - "x": 106, - "y": 231, + "x": 182, + "y": 297, "w": 24, "h": 25 } }, - { - "filename": "666s-poke-ball", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 130, - "y": 232, - "w": 26, - "h": 25 - } - }, - { - "filename": "700", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 156, - "y": 221, - "w": 22, - "h": 23 - } - }, - { - "filename": "666s-polar", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 178, - "y": 223, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-river", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 204, - "y": 247, - "w": 26, - "h": 25 - } - }, { "filename": "706", "rotated": false, @@ -3111,75 +3153,12 @@ "h": 24 }, "frame": { - "x": 230, - "y": 267, + "x": 206, + "y": 300, "w": 24, "h": 24 } }, - { - "filename": "700s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 156, - "y": 244, - "w": 22, - "h": 23 - } - }, - { - "filename": "666s-sandstorm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 178, - "y": 248, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-savanna", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 204, - "y": 272, - "w": 26, - "h": 25 - } - }, { "filename": "706s", "rotated": false, @@ -3196,116 +3175,11 @@ }, "frame": { "x": 230, - "y": 291, + "y": 317, "w": 24, "h": 24 } }, - { - "filename": "685s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 81, - "y": 315, - "w": 20, - "h": 23 - } - }, - { - "filename": "666s-sun", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 80, - "y": 257, - "w": 26, - "h": 25 - } - }, - { - "filename": "666s-tundra", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 79, - "y": 282, - "w": 26, - "h": 25 - } - }, - { - "filename": "711-large", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 23, - "h": 25 - }, - "frame": { - "x": 106, - "y": 256, - "w": 23, - "h": 25 - } - }, - { - "filename": "676-debutante", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 129, - "y": 257, - "w": 25, - "h": 25 - } - }, { "filename": "692", "rotated": false, @@ -3321,14 +3195,14 @@ "h": 17 }, "frame": { - "x": 154, - "y": 267, + "x": 156, + "y": 317, "w": 24, "h": 17 } }, { - "filename": "676-kabuki", + "filename": "692s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3337,246 +3211,15 @@ }, "spriteSourceSize": { "x": 8, - "y": 3, - "w": 25, - "h": 25 + "y": 11, + "w": 24, + "h": 17 }, "frame": { - "x": 178, - "y": 273, - "w": 25, - "h": 25 - } - }, - { - "filename": "676-la-reine", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 105, - "y": 282, - "w": 25, - "h": 25 - } - }, - { - "filename": "711-super", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 23, - "h": 25 - }, - "frame": { - "x": 130, - "y": 282, - "w": 23, - "h": 25 - } - }, - { - "filename": "676s-debutante", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 153, - "y": 284, - "w": 25, - "h": 25 - } - }, - { - "filename": "676s-kabuki", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 101, - "y": 307, - "w": 25, - "h": 25 - } - }, - { - "filename": "676s-la-reine", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 126, - "y": 307, - "w": 25, - "h": 25 - } - }, - { - "filename": "709", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 151, - "y": 309, - "w": 25, - "h": 25 - } - }, - { - "filename": "709s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 104, - "y": 332, - "w": 25, - "h": 25 - } - }, - { - "filename": "678-female", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 129, - "y": 332, - "w": 21, - "h": 22 - } - }, - { - "filename": "657s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 23, - "h": 22 - }, - "frame": { - "x": 150, - "y": 334, - "w": 23, - "h": 22 - } - }, - { - "filename": "711s-large", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 23, - "h": 25 - }, - "frame": { - "x": 106, - "y": 357, - "w": 23, - "h": 25 - } - }, - { - "filename": "711s-super", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 23, - "h": 25 - }, - "frame": { - "x": 106, - "y": 382, - "w": 23, - "h": 25 + "x": 180, + "y": 322, + "w": 24, + "h": 17 } }, { @@ -3594,12 +3237,75 @@ "h": 22 }, "frame": { - "x": 106, - "y": 407, + "x": 204, + "y": 324, "w": 23, "h": 22 } }, + { + "filename": "659", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 3, + "w": 16, + "h": 25 + }, + "frame": { + "x": 78, + "y": 479, + "w": 16, + "h": 25 + } + }, + { + "filename": "683s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 19, + "h": 23 + }, + "frame": { + "x": 78, + "y": 504, + "w": 19, + "h": 23 + } + }, + { + "filename": "659s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 3, + "w": 16, + "h": 25 + }, + "frame": { + "x": 80, + "y": 527, + "w": 16, + "h": 25 + } + }, { "filename": "673s", "rotated": false, @@ -3615,14 +3321,119 @@ "h": 22 }, "frame": { - "x": 106, - "y": 429, + "x": 227, + "y": 341, "w": 23, "h": 22 } }, { - "filename": "678", + "filename": "679s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 79, + "y": 329, + "w": 18, + "h": 24 + } + }, + { + "filename": "695", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 97, + "y": 327, + "w": 22, + "h": 24 + } + }, + { + "filename": "695s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 79, + "y": 353, + "w": 22, + "h": 24 + } + }, + { + "filename": "700", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 79, + "y": 377, + "w": 22, + "h": 23 + } + }, + { + "filename": "700s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 79, + "y": 400, + "w": 22, + "h": 23 + } + }, + { + "filename": "651", "rotated": false, "trimmed": true, "sourceSize": { @@ -3636,56 +3447,14 @@ "h": 22 }, "frame": { - "x": 129, - "y": 354, + "x": 79, + "y": 423, "w": 21, "h": 22 } }, { - "filename": "2670", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 106, - "y": 451, - "w": 23, - "h": 21 - } - }, - { - "filename": "2670s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 106, - "y": 472, - "w": 23, - "h": 21 - } - }, - { - "filename": "667", + "filename": "651s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3694,15 +3463,120 @@ }, "spriteSourceSize": { "x": 10, - "y": 8, + "y": 6, "w": 21, - "h": 20 + "h": 22 }, "frame": { - "x": 106, - "y": 493, + "x": 79, + "y": 445, "w": 21, - "h": 20 + "h": 22 + } + }, + { + "filename": "685", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 20, + "h": 23 + }, + "frame": { + "x": 101, + "y": 351, + "w": 20, + "h": 23 + } + }, + { + "filename": "685s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 20, + "h": 23 + }, + "frame": { + "x": 101, + "y": 374, + "w": 20, + "h": 23 + } + }, + { + "filename": "654", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 20, + "h": 22 + }, + "frame": { + "x": 101, + "y": 397, + "w": 20, + "h": 22 + } + }, + { + "filename": "678-female", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 21, + "h": 22 + }, + "frame": { + "x": 119, + "y": 329, + "w": 21, + "h": 22 + } + }, + { + "filename": "688", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 140, + "y": 329, + "w": 16, + "h": 24 } }, { @@ -3720,12 +3594,117 @@ "h": 22 }, "frame": { - "x": 120, - "y": 513, + "x": 121, + "y": 351, "w": 19, "h": 22 } }, + { + "filename": "701", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 23, + "h": 19 + }, + "frame": { + "x": 156, + "y": 334, + "w": 23, + "h": 19 + } + }, + { + "filename": "2670", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 23, + "h": 21 + }, + "frame": { + "x": 140, + "y": 353, + "w": 23, + "h": 21 + } + }, + { + "filename": "670-orange", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 22 + }, + "frame": { + "x": 121, + "y": 373, + "w": 19, + "h": 22 + } + }, + { + "filename": "2670s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 23, + "h": 21 + }, + "frame": { + "x": 140, + "y": 374, + "w": 23, + "h": 21 + } + }, + { + "filename": "678", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 21, + "h": 22 + }, + "frame": { + "x": 121, + "y": 395, + "w": 21, + "h": 22 + } + }, { "filename": "678s-female", "rotated": false, @@ -3741,12 +3720,33 @@ "h": 22 }, "frame": { - "x": 129, - "y": 376, + "x": 142, + "y": 395, "w": 21, "h": 22 } }, + { + "filename": "688s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 163, + "y": 353, + "w": 16, + "h": 24 + } + }, { "filename": "678s", "rotated": false, @@ -3762,12 +3762,180 @@ "h": 22 }, "frame": { - "x": 150, - "y": 356, + "x": 179, + "y": 339, "w": 21, "h": 22 } }, + { + "filename": "654s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 20, + "h": 22 + }, + "frame": { + "x": 163, + "y": 377, + "w": 20, + "h": 22 + } + }, + { + "filename": "662", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 22, + "h": 20 + }, + "frame": { + "x": 163, + "y": 399, + "w": 22, + "h": 20 + } + }, + { + "filename": "684", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 12, + "w": 17, + "h": 16 + }, + "frame": { + "x": 179, + "y": 361, + "w": 17, + "h": 16 + } + }, + { + "filename": "670-red", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 22 + }, + "frame": { + "x": 183, + "y": 377, + "w": 19, + "h": 22 + } + }, + { + "filename": "662s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 22, + "h": 20 + }, + "frame": { + "x": 185, + "y": 399, + "w": 22, + "h": 20 + } + }, + { + "filename": "696", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 12, + "w": 20, + "h": 17 + }, + "frame": { + "x": 207, + "y": 346, + "w": 20, + "h": 17 + } + }, + { + "filename": "701s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 23, + "h": 19 + }, + "frame": { + "x": 121, + "y": 417, + "w": 23, + "h": 19 + } + }, + { + "filename": "696s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 12, + "w": 20, + "h": 17 + }, + "frame": { + "x": 101, + "y": 419, + "w": 20, + "h": 17 + } + }, { "filename": "719", "rotated": false, @@ -3783,8 +3951,8 @@ "h": 22 }, "frame": { - "x": 129, - "y": 398, + "x": 100, + "y": 436, "w": 21, "h": 22 } @@ -3804,14 +3972,14 @@ "h": 22 }, "frame": { - "x": 150, - "y": 378, + "x": 121, + "y": 436, "w": 21, "h": 22 } }, { - "filename": "679", + "filename": "670-white", "rotated": false, "trimmed": true, "sourceSize": { @@ -3819,20 +3987,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 14, - "y": 4, - "w": 18, - "h": 24 + "x": 10, + "y": 6, + "w": 19, + "h": 22 }, "frame": { - "x": 129, - "y": 420, - "w": 18, - "h": 24 + "x": 144, + "y": 417, + "w": 19, + "h": 22 } }, { - "filename": "679s", + "filename": "667", "rotated": false, "trimmed": true, "sourceSize": { @@ -3840,16 +4008,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 14, - "y": 4, - "w": 18, - "h": 24 + "x": 10, + "y": 8, + "w": 21, + "h": 20 }, "frame": { - "x": 129, - "y": 444, - "w": 18, - "h": 24 + "x": 163, + "y": 419, + "w": 21, + "h": 20 } }, { @@ -3867,117 +4035,12 @@ "h": 20 }, "frame": { - "x": 150, - "y": 400, + "x": 184, + "y": 419, "w": 21, "h": 20 } }, - { - "filename": "683s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 19, - "h": 23 - }, - "frame": { - "x": 147, - "y": 420, - "w": 19, - "h": 23 - } - }, - { - "filename": "670-orange", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 147, - "y": 443, - "w": 19, - "h": 22 - } - }, - { - "filename": "698", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 129, - "y": 468, - "w": 17, - "h": 24 - } - }, - { - "filename": "656", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 18, - "h": 19 - }, - "frame": { - "x": 138, - "y": 535, - "w": 18, - "h": 19 - } - }, - { - "filename": "692s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 24, - "h": 17 - }, - "frame": { - "x": 178, - "y": 298, - "w": 24, - "h": 17 - } - }, { "filename": "714", "rotated": false, @@ -3993,8 +4056,29 @@ "h": 20 }, "frame": { - "x": 176, - "y": 315, + "x": 142, + "y": 439, + "w": 21, + "h": 20 + } + }, + { + "filename": "714s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 6, + "w": 21, + "h": 20 + }, + "frame": { + "x": 163, + "y": 439, "w": 21, "h": 20 } @@ -4014,14 +4098,14 @@ "h": 21 }, "frame": { - "x": 173, - "y": 335, + "x": 184, + "y": 439, "w": 20, "h": 21 } }, { - "filename": "670-red", + "filename": "702", "rotated": false, "trimmed": true, "sourceSize": { @@ -4029,20 +4113,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 + "x": 8, + "y": 11, + "w": 22, + "h": 17 }, "frame": { - "x": 171, - "y": 356, - "w": 19, - "h": 22 + "x": 100, + "y": 458, + "w": 22, + "h": 17 } }, { - "filename": "670-white", + "filename": "710s-super", "rotated": false, "trimmed": true, "sourceSize": { @@ -4051,15 +4135,57 @@ }, "spriteSourceSize": { "x": 10, - "y": 6, - "w": 19, - "h": 22 + "y": 7, + "w": 20, + "h": 21 }, "frame": { - "x": 171, - "y": 378, - "w": 19, - "h": 22 + "x": 122, + "y": 458, + "w": 20, + "h": 21 + } + }, + { + "filename": "720", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 21, + "h": 19 + }, + "frame": { + "x": 142, + "y": 459, + "w": 21, + "h": 19 + } + }, + { + "filename": "720s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 21, + "h": 19 + }, + "frame": { + "x": 163, + "y": 459, + "w": 21, + "h": 19 } }, { @@ -4077,8 +4203,8 @@ "h": 22 }, "frame": { - "x": 171, - "y": 400, + "x": 184, + "y": 460, "w": 19, "h": 22 } @@ -4098,8 +4224,8 @@ "h": 22 }, "frame": { - "x": 166, - "y": 422, + "x": 94, + "y": 475, "w": 19, "h": 22 } @@ -4119,12 +4245,327 @@ "h": 22 }, "frame": { - "x": 166, - "y": 444, + "x": 97, + "y": 497, "w": 19, "h": 22 } }, + { + "filename": "702s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 11, + "w": 22, + "h": 17 + }, + "frame": { + "x": 113, + "y": 479, + "w": 22, + "h": 17 + } + }, + { + "filename": "670s-red", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 22 + }, + "frame": { + "x": 116, + "y": 496, + "w": 19, + "h": 22 + } + }, + { + "filename": "670s-white", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 22 + }, + "frame": { + "x": 135, + "y": 479, + "w": 19, + "h": 22 + } + }, + { + "filename": "670s-yellow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 22 + }, + "frame": { + "x": 154, + "y": 478, + "w": 19, + "h": 22 + } + }, + { + "filename": "656", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 10, + "w": 18, + "h": 19 + }, + "frame": { + "x": 135, + "y": 501, + "w": 18, + "h": 19 + } + }, + { + "filename": "656s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 10, + "w": 18, + "h": 19 + }, + "frame": { + "x": 97, + "y": 519, + "w": 18, + "h": 19 + } + }, + { + "filename": "653s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 9, + "w": 17, + "h": 19 + }, + "frame": { + "x": 96, + "y": 538, + "w": 17, + "h": 19 + } + }, + { + "filename": "710", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 9, + "w": 17, + "h": 19 + }, + "frame": { + "x": 113, + "y": 538, + "w": 17, + "h": 19 + } + }, + { + "filename": "674", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 9, + "w": 15, + "h": 19 + }, + "frame": { + "x": 115, + "y": 519, + "w": 15, + "h": 19 + } + }, + { + "filename": "711-small", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 18, + "h": 22 + }, + "frame": { + "x": 130, + "y": 520, + "w": 18, + "h": 22 + } + }, + { + "filename": "661", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 13, + "w": 18, + "h": 15 + }, + "frame": { + "x": 130, + "y": 542, + "w": 18, + "h": 15 + } + }, + { + "filename": "705", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 6, + "w": 15, + "h": 22 + }, + "frame": { + "x": 148, + "y": 520, + "w": 15, + "h": 22 + } + }, + { + "filename": "661s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 13, + "w": 18, + "h": 15 + }, + "frame": { + "x": 148, + "y": 542, + "w": 18, + "h": 15 + } + }, + { + "filename": "674s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 9, + "w": 15, + "h": 19 + }, + "frame": { + "x": 153, + "y": 501, + "w": 15, + "h": 19 + } + }, + { + "filename": "705s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 6, + "w": 15, + "h": 22 + }, + "frame": { + "x": 163, + "y": 520, + "w": 15, + "h": 22 + } + }, { "filename": "686", "rotated": false, @@ -4140,14 +4581,14 @@ "h": 20 }, "frame": { - "x": 127, - "y": 493, + "x": 168, + "y": 500, "w": 18, "h": 20 } }, { - "filename": "650s", + "filename": "672", "rotated": false, "trimmed": true, "sourceSize": { @@ -4155,16 +4596,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 6, + "x": 11, + "y": 10, "w": 17, - "h": 22 + "h": 18 }, "frame": { - "x": 139, - "y": 513, + "x": 173, + "y": 482, "w": 17, - "h": 22 + "h": 18 } }, { @@ -4182,119 +4623,14 @@ "h": 21 }, "frame": { - "x": 145, - "y": 492, + "x": 190, + "y": 482, "w": 14, "h": 21 } }, { - "filename": "688", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 146, - "y": 468, - "w": 16, - "h": 24 - } - }, - { - "filename": "670s-red", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 162, - "y": 466, - "w": 19, - "h": 22 - } - }, - { - "filename": "688s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 185, - "y": 422, - "w": 16, - "h": 24 - } - }, - { - "filename": "670s-white", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 185, - "y": 446, - "w": 19, - "h": 22 - } - }, - { - "filename": "714s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 20 - }, - "frame": { - "x": 181, - "y": 468, - "w": 21, - "h": 20 - } - }, - { - "filename": "698s", + "filename": "686s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4303,120 +4639,15 @@ }, "spriteSourceSize": { "x": 11, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 156, - "y": 513, - "w": 17, - "h": 24 - } - }, - { - "filename": "702", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 22, - "h": 17 - }, - "frame": { - "x": 156, - "y": 537, - "w": 22, - "h": 17 - } - }, - { - "filename": "664s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 159, - "y": 492, - "w": 14, - "h": 21 - } - }, - { - "filename": "670s-yellow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 173, - "y": 488, - "w": 19, - "h": 22 - } - }, - { - "filename": "710s-super", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 173, - "y": 510, - "w": 20, - "h": 21 - } - }, - { - "filename": "711-small", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, + "y": 8, "w": 18, - "h": 22 + "h": 20 }, "frame": { - "x": 192, - "y": 488, + "x": 186, + "y": 503, "w": 18, - "h": 22 + "h": 20 } }, { @@ -4434,14 +4665,14 @@ "h": 21 }, "frame": { - "x": 193, - "y": 510, + "x": 178, + "y": 523, "w": 18, "h": 21 } }, { - "filename": "696", + "filename": "664s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4449,16 +4680,58 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 17 + "x": 13, + "y": 7, + "w": 14, + "h": 21 }, "frame": { - "x": 210, - "y": 297, - "w": 20, - "h": 17 + "x": 196, + "y": 523, + "w": 14, + "h": 21 + } + }, + { + "filename": "703", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 15, + "w": 14, + "h": 13 + }, + "frame": { + "x": 166, + "y": 544, + "w": 14, + "h": 13 + } + }, + { + "filename": "703s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 15, + "w": 14, + "h": 13 + }, + "frame": { + "x": 180, + "y": 544, + "w": 14, + "h": 13 } }, { @@ -4476,8 +4749,8 @@ "h": 22 }, "frame": { - "x": 178, - "y": 531, + "x": 203, + "y": 460, "w": 18, "h": 22 } @@ -4497,243 +4770,12 @@ "h": 21 }, "frame": { - "x": 196, - "y": 531, + "x": 204, + "y": 439, "w": 18, "h": 21 } }, - { - "filename": "686s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 202, - "y": 468, - "w": 18, - "h": 20 - } - }, - { - "filename": "710-large", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 210, - "y": 488, - "w": 17, - "h": 20 - } - }, - { - "filename": "710s-large", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 211, - "y": 508, - "w": 17, - "h": 20 - } - }, - { - "filename": "653", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 214, - "y": 528, - "w": 17, - "h": 19 - } - }, - { - "filename": "653s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 197, - "y": 315, - "w": 17, - "h": 19 - } - }, - { - "filename": "677", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 16, - "h": 18 - }, - "frame": { - "x": 214, - "y": 314, - "w": 16, - "h": 18 - } - }, - { - "filename": "702s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 22, - "h": 17 - }, - "frame": { - "x": 230, - "y": 315, - "w": 22, - "h": 17 - } - }, - { - "filename": "656s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 18, - "h": 19 - }, - "frame": { - "x": 193, - "y": 335, - "w": 18, - "h": 19 - } - }, - { - "filename": "674", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 190, - "y": 356, - "w": 15, - "h": 19 - } - }, - { - "filename": "674s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 190, - "y": 375, - "w": 15, - "h": 19 - } - }, - { - "filename": "710", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 190, - "y": 394, - "w": 17, - "h": 19 - } - }, { "filename": "710s", "rotated": false, @@ -4749,8 +4791,8 @@ "h": 19 }, "frame": { - "x": 205, - "y": 354, + "x": 204, + "y": 482, "w": 17, "h": 19 } @@ -4770,8 +4812,8 @@ "h": 18 }, "frame": { - "x": 205, - "y": 373, + "x": 204, + "y": 501, "w": 17, "h": 18 } @@ -4791,14 +4833,14 @@ "h": 18 }, "frame": { - "x": 207, - "y": 391, + "x": 210, + "y": 519, "w": 15, "h": 18 } }, { - "filename": "696s", + "filename": "665", "rotated": false, "trimmed": true, "sourceSize": { @@ -4806,18 +4848,39 @@ "h": 30 }, "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, + "x": 12, + "y": 11, + "w": 16, "h": 17 }, "frame": { - "x": 214, - "y": 332, - "w": 20, + "x": 210, + "y": 537, + "w": 16, "h": 17 } }, + { + "filename": "704", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 14, + "w": 12, + "h": 14 + }, + "frame": { + "x": 196, + "y": 363, + "w": 12, + "h": 14 + } + }, { "filename": "694", "rotated": false, @@ -4833,8 +4896,8 @@ "h": 17 }, "frame": { - "x": 234, - "y": 332, + "x": 208, + "y": 363, "w": 18, "h": 17 } @@ -4854,33 +4917,12 @@ "h": 17 }, "frame": { - "x": 222, - "y": 349, + "x": 226, + "y": 363, "w": 18, "h": 17 } }, - { - "filename": "703s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 15, - "w": 14, - "h": 13 - }, - "frame": { - "x": 240, - "y": 349, - "w": 14, - "h": 13 - } - }, { "filename": "712", "rotated": false, @@ -4896,33 +4938,12 @@ "h": 18 }, "frame": { - "x": 222, - "y": 366, + "x": 202, + "y": 380, "w": 17, "h": 18 } }, - { - "filename": "669-orange", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 15, - "h": 18 - }, - "frame": { - "x": 239, - "y": 366, - "w": 15, - "h": 18 - } - }, { "filename": "712s", "rotated": false, @@ -4938,12 +4959,54 @@ "h": 18 }, "frame": { - "x": 222, - "y": 384, + "x": 219, + "y": 380, "w": 17, "h": 18 } }, + { + "filename": "677", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 10, + "w": 16, + "h": 18 + }, + "frame": { + "x": 207, + "y": 398, + "w": 16, + "h": 18 + } + }, + { + "filename": "669-orange", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 10, + "w": 15, + "h": 18 + }, + "frame": { + "x": 223, + "y": 398, + "w": 15, + "h": 18 + } + }, { "filename": "669-red", "rotated": false, @@ -4959,75 +5022,12 @@ "h": 18 }, "frame": { - "x": 239, - "y": 384, + "x": 236, + "y": 380, "w": 15, "h": 18 } }, - { - "filename": "661", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 13, - "w": 18, - "h": 15 - }, - "frame": { - "x": 222, - "y": 402, - "w": 18, - "h": 15 - } - }, - { - "filename": "669-white", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 15, - "h": 18 - }, - "frame": { - "x": 207, - "y": 409, - "w": 15, - "h": 18 - } - }, - { - "filename": "661s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 13, - "w": 18, - "h": 15 - }, - "frame": { - "x": 222, - "y": 417, - "w": 18, - "h": 15 - } - }, { "filename": "677s", "rotated": false, @@ -5043,14 +5043,14 @@ "h": 18 }, "frame": { - "x": 201, - "y": 427, + "x": 238, + "y": 398, "w": 16, "h": 18 } }, { - "filename": "669-yellow", + "filename": "669-white", "rotated": false, "trimmed": true, "sourceSize": { @@ -5064,54 +5064,12 @@ "h": 18 }, "frame": { - "x": 204, - "y": 445, + "x": 205, + "y": 419, "w": 15, "h": 18 } }, - { - "filename": "704", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 14, - "w": 12, - "h": 14 - }, - "frame": { - "x": 240, - "y": 402, - "w": 12, - "h": 14 - } - }, - { - "filename": "704s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 14, - "w": 12, - "h": 14 - }, - "frame": { - "x": 240, - "y": 416, - "w": 12, - "h": 14 - } - }, { "filename": "665s", "rotated": false, @@ -5127,8 +5085,8 @@ "h": 17 }, "frame": { - "x": 219, - "y": 432, + "x": 220, + "y": 416, "w": 16, "h": 17 } @@ -5148,12 +5106,33 @@ "h": 16 }, "frame": { - "x": 219, - "y": 449, + "x": 236, + "y": 416, "w": 17, "h": 16 } }, + { + "filename": "669-yellow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 10, + "w": 15, + "h": 18 + }, + "frame": { + "x": 222, + "y": 433, + "w": 15, + "h": 18 + } + }, { "filename": "669s-blue", "rotated": false, @@ -5169,31 +5148,10 @@ "h": 18 }, "frame": { - "x": 220, - "y": 465, - "w": 15, - "h": 18 - } - }, - { - "filename": "710-small", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 15, - "h": 17 - }, - "frame": { - "x": 235, + "x": 237, "y": 432, "w": 15, - "h": 17 + "h": 18 } }, { @@ -5211,8 +5169,8 @@ "h": 18 }, "frame": { - "x": 236, - "y": 449, + "x": 222, + "y": 451, "w": 15, "h": 18 } @@ -5232,8 +5190,8 @@ "h": 18 }, "frame": { - "x": 235, - "y": 467, + "x": 237, + "y": 450, "w": 15, "h": 18 } @@ -5253,8 +5211,8 @@ "h": 18 }, "frame": { - "x": 227, - "y": 485, + "x": 221, + "y": 469, "w": 15, "h": 18 } @@ -5274,12 +5232,54 @@ "h": 18 }, "frame": { - "x": 228, - "y": 503, + "x": 221, + "y": 487, "w": 15, "h": 18 } }, + { + "filename": "704s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 14, + "y": 14, + "w": 12, + "h": 14 + }, + "frame": { + "x": 221, + "y": 505, + "w": 12, + "h": 14 + } + }, + { + "filename": "710-small", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 9, + "w": 15, + "h": 17 + }, + "frame": { + "x": 225, + "y": 519, + "w": 15, + "h": 17 + } + }, { "filename": "710s-small", "rotated": false, @@ -5295,12 +5295,33 @@ "h": 17 }, "frame": { - "x": 231, - "y": 521, + "x": 226, + "y": 536, "w": 15, "h": 17 } }, + { + "filename": "682", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 12, + "w": 15, + "h": 16 + }, + "frame": { + "x": 236, + "y": 469, + "w": 15, + "h": 16 + } + }, { "filename": "682s", "rotated": false, @@ -5316,8 +5337,8 @@ "h": 16 }, "frame": { - "x": 231, - "y": 538, + "x": 236, + "y": 485, "w": 15, "h": 16 } @@ -5328,6 +5349,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:049c5b1c50b54f73bca369d3cece4336:2c861a7365c9c9423b050bde6e7e0742:96737d38f2029744a75c1ee001bc1929$" + "smartupdate": "$TexturePacker:SmartUpdate:a80f4550917ab6469d19d3cdd7fc8ebc:a52ccf05d060a2fd0a793e2f02508109:96737d38f2029744a75c1ee001bc1929$" } } diff --git a/public/images/pokemon_icons_6.png b/public/images/pokemon_icons_6.png index 9373aca8b..46ff8597c 100644 Binary files a/public/images/pokemon_icons_6.png and b/public/images/pokemon_icons_6.png differ diff --git a/public/images/pokemon_icons_8.json b/public/images/pokemon_icons_8.json index 20f95930b..430d114ff 100644 --- a/public/images/pokemon_icons_8.json +++ b/public/images/pokemon_icons_8.json @@ -4,8 +4,8 @@ "image": "pokemon_icons_8.png", "format": "RGBA8888", "size": { - "w": 251, - "h": 796 + "w": 254, + "h": 798 }, "scale": 1, "frames": [ @@ -282,27 +282,6 @@ "h": 24 } }, - { - "filename": "834", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 34, - "h": 23 - }, - "frame": { - "x": 217, - "y": 0, - "w": 34, - "h": 23 - } - }, { "filename": "815-gigantamax", "rotated": false, @@ -660,48 +639,6 @@ "h": 28 } }, - { - "filename": "834s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 3, - "w": 34, - "h": 23 - }, - "frame": { - "x": 217, - "y": 23, - "w": 34, - "h": 23 - } - }, - { - "filename": "4083s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 3, - "w": 38, - "h": 24 - }, - "frame": { - "x": 179, - "y": 24, - "w": 38, - "h": 24 - } - }, { "filename": "905-incarnate", "rotated": false, @@ -849,6 +786,27 @@ "h": 27 } }, + { + "filename": "834", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 34, + "h": 23 + }, + "frame": { + "x": 217, + "y": 0, + "w": 34, + "h": 23 + } + }, { "filename": "864", "rotated": false, @@ -871,7 +829,7 @@ } }, { - "filename": "864s", + "filename": "4083s", "rotated": false, "trimmed": true, "sourceSize": { @@ -879,20 +837,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 27 + "x": 1, + "y": 3, + "w": 38, + "h": 24 }, "frame": { "x": 34, "y": 117, - "w": 30, - "h": 27 + "w": 38, + "h": 24 } }, { - "filename": "879-gigantamax", + "filename": "834s", "rotated": false, "trimmed": true, "sourceSize": { @@ -900,457 +858,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 31, - "y": 144, - "w": 27, - "h": 30 - } - }, - { - "filename": "879s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 31, - "y": 174, - "w": 27, - "h": 30 - } - }, - { - "filename": "884-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 30, - "y": 204, - "w": 27, - "h": 30 - } - }, - { - "filename": "884s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 30, - "y": 234, - "w": 27, - "h": 30 - } - }, - { - "filename": "861-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 30, - "y": 264, - "w": 26, - "h": 30 - } - }, - { - "filename": "861s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 30, - "y": 294, - "w": 26, - "h": 30 - } - }, - { - "filename": "898-shadow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 30, - "y": 324, - "w": 26, - "h": 30 - } - }, - { - "filename": "898s-shadow", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 30, - "y": 354, - "w": 26, - "h": 30 - } - }, - { - "filename": "839-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 25, - "h": 30 - }, - "frame": { - "x": 30, - "y": 384, - "w": 25, - "h": 30 - } - }, - { - "filename": "839s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 25, - "h": 30 - }, - "frame": { - "x": 30, - "y": 414, - "w": 25, - "h": 30 - } - }, - { - "filename": "4555", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 25, - "h": 30 - }, - "frame": { - "x": 29, - "y": 444, - "w": 25, - "h": 30 - } - }, - { - "filename": "4555s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 25, - "h": 30 - }, - "frame": { - "x": 29, - "y": 474, - "w": 25, - "h": 30 - } - }, - { - "filename": "898-ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 29, - "y": 504, - "w": 24, - "h": 29 - } - }, - { - "filename": "898s-ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 29, - "y": 533, - "w": 24, - "h": 29 - } - }, - { - "filename": "841-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 21, - "h": 30 - }, - "frame": { - "x": 32, - "y": 562, - "w": 21, - "h": 30 - } - }, - { - "filename": "841s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 21, - "h": 30 - }, - "frame": { - "x": 32, - "y": 592, - "w": 21, - "h": 30 - } - }, - { - "filename": "842-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 21, - "h": 30 - }, - "frame": { - "x": 32, - "y": 622, - "w": 21, - "h": 30 - } - }, - { - "filename": "845", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 32, - "y": 652, - "w": 24, - "h": 26 - } - }, - { - "filename": "892-gigantamax-single", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 29 - }, - "frame": { - "x": 33, - "y": 678, - "w": 23, - "h": 29 - } - }, - { - "filename": "4110", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 29, - "h": 28 - }, - "frame": { - "x": 31, - "y": 707, - "w": 29, - "h": 28 - } - }, - { - "filename": "826-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, + "x": 3, "y": 3, - "w": 30, - "h": 25 + "w": 34, + "h": 23 }, "frame": { - "x": 31, - "y": 735, - "w": 30, - "h": 25 - } - }, - { - "filename": "834-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 29, - "h": 27 - }, - "frame": { - "x": 30, - "y": 760, - "w": 29, - "h": 27 + "x": 179, + "y": 24, + "w": 34, + "h": 23 } }, { @@ -1369,7 +886,7 @@ }, "frame": { "x": 178, - "y": 48, + "y": 47, "w": 33, "h": 24 } @@ -1411,7 +928,7 @@ }, "frame": { "x": 178, - "y": 72, + "y": 71, "w": 33, "h": 24 } @@ -1438,7 +955,7 @@ } }, { - "filename": "4110s", + "filename": "864s", "rotated": false, "trimmed": true, "sourceSize": { @@ -1448,14 +965,14 @@ "spriteSourceSize": { "x": 5, "y": 1, - "w": 29, - "h": 28 + "w": 30, + "h": 27 }, "frame": { "x": 70, "y": 80, - "w": 29, - "h": 28 + "w": 30, + "h": 27 } }, { @@ -1480,7 +997,7 @@ } }, { - "filename": "834s-gigantamax", + "filename": "887", "rotated": false, "trimmed": true, "sourceSize": { @@ -1489,14 +1006,329 @@ }, "spriteSourceSize": { "x": 5, - "y": 1, - "w": 29, - "h": 27 + "y": 2, + "w": 30, + "h": 26 + }, + "frame": { + "x": 100, + "y": 81, + "w": 30, + "h": 26 + } + }, + { + "filename": "879-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 27, + "h": 30 + }, + "frame": { + "x": 72, + "y": 107, + "w": 27, + "h": 30 + } + }, + { + "filename": "879s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 27, + "h": 30 }, "frame": { "x": 99, + "y": 107, + "w": 27, + "h": 30 + } + }, + { + "filename": "813", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 2, + "w": 17, + "h": 26 + }, + "frame": { + "x": 130, "y": 81, - "w": 29, + "w": 17, + "h": 26 + } + }, + { + "filename": "870", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 3, + "w": 31, + "h": 23 + }, + "frame": { + "x": 147, + "y": 80, + "w": 31, + "h": 23 + } + }, + { + "filename": "839-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 25, + "h": 30 + }, + "frame": { + "x": 126, + "y": 107, + "w": 25, + "h": 30 + } + }, + { + "filename": "884-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 27, + "h": 30 + }, + "frame": { + "x": 151, + "y": 103, + "w": 27, + "h": 30 + } + }, + { + "filename": "884s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 27, + "h": 30 + }, + "frame": { + "x": 178, + "y": 95, + "w": 27, + "h": 30 + } + }, + { + "filename": "839s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 25, + "h": 30 + }, + "frame": { + "x": 205, + "y": 95, + "w": 25, + "h": 30 + } + }, + { + "filename": "898-ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 29 + }, + "frame": { + "x": 230, + "y": 23, + "w": 24, + "h": 29 + } + }, + { + "filename": "869-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 0, + "w": 17, + "h": 30 + }, + "frame": { + "x": 213, + "y": 24, + "w": 17, + "h": 30 + } + }, + { + "filename": "898s-ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 29 + }, + "frame": { + "x": 230, + "y": 52, + "w": 24, + "h": 29 + } + }, + { + "filename": "876", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 24 + }, + "frame": { + "x": 211, + "y": 54, + "w": 19, + "h": 24 + } + }, + { + "filename": "6157", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 24, + "h": 27 + }, + "frame": { + "x": 230, + "y": 81, + "w": 24, + "h": 27 + } + }, + { + "filename": "852", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 17 + }, + "frame": { + "x": 211, + "y": 78, + "w": 19, + "h": 17 + } + }, + { + "filename": "6157s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 24, + "h": 27 + }, + "frame": { + "x": 230, + "y": 108, + "w": 24, "h": 27 } }, @@ -1515,14 +1347,14 @@ "h": 24 }, "frame": { - "x": 70, - "y": 108, + "x": 178, + "y": 125, "w": 32, "h": 24 } }, { - "filename": "812", + "filename": "863", "rotated": false, "trimmed": true, "sourceSize": { @@ -1530,251 +1362,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, + "x": 10, "y": 3, - "w": 26, + "w": 20, "h": 24 }, "frame": { - "x": 102, - "y": 108, - "w": 26, + "x": 210, + "y": 125, + "w": 20, "h": 24 } }, { - "filename": "842s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 21, - "h": 30 - }, - "frame": { - "x": 128, - "y": 81, - "w": 21, - "h": 30 - } - }, - { - "filename": "845-gulping", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 29, - "h": 27 - }, - "frame": { - "x": 149, - "y": 80, - "w": 29, - "h": 27 - } - }, - { - "filename": "811", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 24 - }, - "frame": { - "x": 128, - "y": 111, - "w": 22, - "h": 24 - } - }, - { - "filename": "845s-gulping", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 29, - "h": 27 - }, - "frame": { - "x": 150, - "y": 107, - "w": 29, - "h": 27 - } - }, - { - "filename": "887", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 179, - "y": 96, - "w": 30, - "h": 26 - } - }, - { - "filename": "826s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 30, - "h": 25 - }, - "frame": { - "x": 179, - "y": 122, - "w": 30, - "h": 25 - } - }, - { - "filename": "870", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 3, - "w": 31, - "h": 23 - }, - "frame": { - "x": 64, - "y": 132, - "w": 31, - "h": 23 - } - }, - { - "filename": "870s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 3, - "w": 31, - "h": 23 - }, - "frame": { - "x": 95, - "y": 132, - "w": 31, - "h": 23 - } - }, - { - "filename": "887s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 58, - "y": 155, - "w": 30, - "h": 26 - } - }, - { - "filename": "895", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 26 - }, - "frame": { - "x": 88, - "y": 155, - "w": 28, - "h": 26 - } - }, - { - "filename": "6503", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 31, - "h": 23 - }, - "frame": { - "x": 58, - "y": 181, - "w": 31, - "h": 23 - } - }, - { - "filename": "905-therian", + "filename": "845", "rotated": false, "trimmed": true, "sourceSize": { @@ -1783,36 +1384,15 @@ }, "spriteSourceSize": { "x": 8, - "y": 1, - "w": 28, - "h": 27 + "y": 2, + "w": 24, + "h": 26 }, "frame": { - "x": 57, - "y": 204, - "w": 28, - "h": 27 - } - }, - { - "filename": "905s-therian", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 28, - "h": 27 - }, - "frame": { - "x": 57, - "y": 231, - "w": 28, - "h": 27 + "x": 230, + "y": 135, + "w": 24, + "h": 26 } }, { @@ -1830,14 +1410,14 @@ "h": 24 }, "frame": { - "x": 89, - "y": 181, + "x": 151, + "y": 133, "w": 27, "h": 24 } }, { - "filename": "6059", + "filename": "870s", "rotated": false, "trimmed": true, "sourceSize": { @@ -1845,146 +1425,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 28, - "h": 27 - }, - "frame": { - "x": 85, - "y": 205, - "w": 28, - "h": 27 - } - }, - { - "filename": "895s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 26 - }, - "frame": { - "x": 85, - "y": 232, - "w": 28, - "h": 26 - } - }, - { - "filename": "812s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, + "x": 4, "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 126, - "y": 135, - "w": 26, - "h": 24 - } - }, - { - "filename": "823s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 152, - "y": 134, - "w": 27, - "h": 24 - } - }, - { - "filename": "6059s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 28, - "h": 27 - }, - "frame": { - "x": 116, - "y": 159, - "w": 28, - "h": 27 - } - }, - { - "filename": "888", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 116, - "y": 186, - "w": 28, - "h": 23 - } - }, - { - "filename": "6503s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, "w": 31, "h": 23 }, "frame": { - "x": 113, - "y": 209, + "x": 178, + "y": 149, "w": 31, "h": 23 } }, { - "filename": "894", + "filename": "814", "rotated": false, "trimmed": true, "sourceSize": { @@ -1992,20 +1446,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 5, + "x": 9, "y": 3, - "w": 30, + "w": 21, "h": 23 }, "frame": { - "x": 113, - "y": 232, - "w": 30, + "x": 209, + "y": 149, + "w": 21, "h": 23 } }, { - "filename": "894s", + "filename": "845s", "rotated": false, "trimmed": true, "sourceSize": { @@ -2013,100 +1467,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 30, - "h": 23 + "x": 8, + "y": 2, + "w": 24, + "h": 26 }, "frame": { - "x": 179, - "y": 147, - "w": 30, - "h": 23 - } - }, - { - "filename": "828", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 152, - "y": 158, - "w": 27, - "h": 24 - } - }, - { - "filename": "889", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 26, - "h": 27 - }, - "frame": { - "x": 144, - "y": 182, - "w": 26, - "h": 27 - } - }, - { - "filename": "828s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 144, - "y": 209, - "w": 27, - "h": 24 - } - }, - { - "filename": "888s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 143, - "y": 233, - "w": 28, - "h": 23 + "x": 230, + "y": 161, + "w": 24, + "h": 26 } }, { @@ -2124,8 +1494,8 @@ "h": 22 }, "frame": { - "x": 179, - "y": 170, + "x": 72, + "y": 137, "w": 31, "h": 22 } @@ -2145,14 +1515,287 @@ "h": 22 }, "frame": { - "x": 57, - "y": 258, + "x": 103, + "y": 137, "w": 31, "h": 22 } }, { - "filename": "889s", + "filename": "813s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 2, + "w": 17, + "h": 26 + }, + "frame": { + "x": 134, + "y": 137, + "w": 17, + "h": 26 + } + }, + { + "filename": "823s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 24 + }, + "frame": { + "x": 151, + "y": 157, + "w": 27, + "h": 24 + } + }, + { + "filename": "6503", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 31, + "h": 23 + }, + "frame": { + "x": 178, + "y": 172, + "w": 31, + "h": 23 + } + }, + { + "filename": "814s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 21, + "h": 23 + }, + "frame": { + "x": 209, + "y": 172, + "w": 21, + "h": 23 + } + }, + { + "filename": "892-gigantamax-rapid", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 24, + "h": 26 + }, + "frame": { + "x": 230, + "y": 187, + "w": 24, + "h": 26 + } + }, + { + "filename": "6503s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 31, + "h": 23 + }, + "frame": { + "x": 34, + "y": 141, + "w": 31, + "h": 23 + } + }, + { + "filename": "4110", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 29, + "h": 28 + }, + "frame": { + "x": 31, + "y": 164, + "w": 29, + "h": 28 + } + }, + { + "filename": "826-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 3, + "w": 30, + "h": 25 + }, + "frame": { + "x": 31, + "y": 192, + "w": 30, + "h": 25 + } + }, + { + "filename": "4110s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 29, + "h": 28 + }, + "frame": { + "x": 30, + "y": 217, + "w": 29, + "h": 28 + } + }, + { + "filename": "834-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 29, + "h": 27 + }, + "frame": { + "x": 30, + "y": 245, + "w": 29, + "h": 27 + } + }, + { + "filename": "834s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 29, + "h": 27 + }, + "frame": { + "x": 30, + "y": 272, + "w": 29, + "h": 27 + } + }, + { + "filename": "845-gulping", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 29, + "h": 27 + }, + "frame": { + "x": 30, + "y": 299, + "w": 29, + "h": 27 + } + }, + { + "filename": "845s-gulping", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 29, + "h": 27 + }, + "frame": { + "x": 30, + "y": 326, + "w": 29, + "h": 27 + } + }, + { + "filename": "861-gigantamax", "rotated": false, "trimmed": true, "sourceSize": { @@ -2161,15 +1804,57 @@ }, "spriteSourceSize": { "x": 7, - "y": 1, + "y": 0, "w": 26, - "h": 27 + "h": 30 }, "frame": { - "x": 56, - "y": 280, + "x": 30, + "y": 353, "w": 26, - "h": 27 + "h": 30 + } + }, + { + "filename": "861s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 26, + "h": 30 + }, + "frame": { + "x": 30, + "y": 383, + "w": 26, + "h": 30 + } + }, + { + "filename": "898-shadow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 26, + "h": 30 + }, + "frame": { + "x": 30, + "y": 413, + "w": 26, + "h": 30 } }, { @@ -2187,14 +1872,14 @@ "h": 28 }, "frame": { - "x": 56, - "y": 307, + "x": 60, + "y": 164, "w": 25, "h": 28 } }, { - "filename": "4555s-zen", + "filename": "887s", "rotated": false, "trimmed": true, "sourceSize": { @@ -2202,16 +1887,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 25, - "h": 28 + "x": 5, + "y": 2, + "w": 30, + "h": 26 }, "frame": { - "x": 56, - "y": 335, - "w": 25, - "h": 28 + "x": 85, + "y": 159, + "w": 30, + "h": 26 } }, { @@ -2229,14 +1914,182 @@ "h": 27 }, "frame": { - "x": 88, - "y": 258, + "x": 61, + "y": 192, "w": 25, "h": 27 } }, { - "filename": "904", + "filename": "898s-shadow", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 26, + "h": 30 + }, + "frame": { + "x": 59, + "y": 219, + "w": 26, + "h": 30 + } + }, + { + "filename": "4555", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 25, + "h": 30 + }, + "frame": { + "x": 59, + "y": 249, + "w": 25, + "h": 30 + } + }, + { + "filename": "4555s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 25, + "h": 30 + }, + "frame": { + "x": 59, + "y": 279, + "w": 25, + "h": 30 + } + }, + { + "filename": "4555s-zen", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 25, + "h": 28 + }, + "frame": { + "x": 59, + "y": 309, + "w": 25, + "h": 28 + } + }, + { + "filename": "905-therian", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, + "w": 28, + "h": 27 + }, + "frame": { + "x": 86, + "y": 185, + "w": 28, + "h": 27 + } + }, + { + "filename": "876s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 24 + }, + "frame": { + "x": 115, + "y": 159, + "w": 19, + "h": 24 + } + }, + { + "filename": "859", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 17, + "h": 20 + }, + "frame": { + "x": 134, + "y": 163, + "w": 17, + "h": 20 + } + }, + { + "filename": "828", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 24 + }, + "frame": { + "x": 151, + "y": 181, + "w": 27, + "h": 24 + } + }, + { + "filename": "812", "rotated": false, "trimmed": true, "sourceSize": { @@ -2246,18 +2099,249 @@ "spriteSourceSize": { "x": 7, "y": 3, + "w": 26, + "h": 24 + }, + "frame": { + "x": 59, + "y": 337, + "w": 26, + "h": 24 + } + }, + { + "filename": "905s-therian", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 1, "w": 28, + "h": 27 + }, + "frame": { + "x": 56, + "y": 361, + "w": 28, + "h": 27 + } + }, + { + "filename": "6059", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 28, + "h": 27 + }, + "frame": { + "x": 56, + "y": 388, + "w": 28, + "h": 27 + } + }, + { + "filename": "6059s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 28, + "h": 27 + }, + "frame": { + "x": 56, + "y": 415, + "w": 28, + "h": 27 + } + }, + { + "filename": "826s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 3, + "w": 30, "h": 25 }, "frame": { - "x": 113, - "y": 255, - "w": 28, + "x": 178, + "y": 195, + "w": 30, "h": 25 } }, { - "filename": "904s", + "filename": "818", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 22, + "h": 27 + }, + "frame": { + "x": 208, + "y": 195, + "w": 22, + "h": 27 + } + }, + { + "filename": "892s-gigantamax-rapid", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 24, + "h": 26 + }, + "frame": { + "x": 230, + "y": 213, + "w": 24, + "h": 26 + } + }, + { + "filename": "888", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 28, + "h": 23 + }, + "frame": { + "x": 86, + "y": 212, + "w": 28, + "h": 23 + } + }, + { + "filename": "894", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 3, + "w": 30, + "h": 23 + }, + "frame": { + "x": 85, + "y": 235, + "w": 30, + "h": 23 + } + }, + { + "filename": "895", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 2, + "w": 28, + "h": 26 + }, + "frame": { + "x": 84, + "y": 258, + "w": 28, + "h": 26 + } + }, + { + "filename": "895s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 2, + "w": 28, + "h": 26 + }, + "frame": { + "x": 84, + "y": 284, + "w": 28, + "h": 26 + } + }, + { + "filename": "889", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 26, + "h": 27 + }, + "frame": { + "x": 84, + "y": 310, + "w": 26, + "h": 27 + } + }, + { + "filename": "812s", "rotated": false, "trimmed": true, "sourceSize": { @@ -2267,14 +2351,35 @@ "spriteSourceSize": { "x": 7, "y": 3, - "w": 28, - "h": 25 + "w": 26, + "h": 24 }, "frame": { - "x": 141, - "y": 256, - "w": 28, - "h": 25 + "x": 85, + "y": 337, + "w": 26, + "h": 24 + } + }, + { + "filename": "889s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 26, + "h": 27 + }, + "frame": { + "x": 84, + "y": 361, + "w": 26, + "h": 27 } }, { @@ -2292,8 +2397,8 @@ "h": 27 }, "frame": { - "x": 56, - "y": 363, + "x": 84, + "y": 388, "w": 25, "h": 27 } @@ -2313,56 +2418,14 @@ "h": 27 }, "frame": { - "x": 55, - "y": 390, + "x": 84, + "y": 415, "w": 25, "h": 27 } }, { - "filename": "862s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 25, - "h": 27 - }, - "frame": { - "x": 55, - "y": 417, - "w": 25, - "h": 27 - } - }, - { - "filename": "892s-gigantamax-single", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 29 - }, - "frame": { - "x": 54, - "y": 444, - "w": 23, - "h": 29 - } - }, - { - "filename": "6157", + "filename": "841-gigantamax", "rotated": false, "trimmed": true, "sourceSize": { @@ -2371,124 +2434,19 @@ }, "spriteSourceSize": { "x": 9, - "y": 1, - "w": 24, - "h": 27 - }, - "frame": { - "x": 54, - "y": 473, - "w": 24, - "h": 27 - } - }, - { - "filename": "901", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 82, - "y": 285, - "w": 28, - "h": 23 - } - }, - { - "filename": "841", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 81, - "y": 308, - "w": 27, - "h": 24 - } - }, - { - "filename": "841s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 81, - "y": 332, - "w": 27, - "h": 24 - } - }, - { - "filename": "842", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 81, - "y": 356, - "w": 26, - "h": 25 - } - }, - { - "filename": "869-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, "y": 0, - "w": 17, + "w": 21, "h": 30 }, "frame": { - "x": 211, - "y": 48, - "w": 17, + "x": 112, + "y": 258, + "w": 21, "h": 30 } }, { - "filename": "892", + "filename": "811", "rotated": false, "trimmed": true, "sourceSize": { @@ -2496,270 +2454,18 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 228, - "y": 46, - "w": 23, - "h": 25 - } - }, - { - "filename": "892s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 228, - "y": 71, - "w": 23, - "h": 25 - } - }, - { - "filename": "813", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 2, - "w": 17, - "h": 26 - }, - "frame": { - "x": 211, - "y": 78, - "w": 17, - "h": 26 - } - }, - { - "filename": "820", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, + "x": 9, "y": 3, - "w": 23, + "w": 22, "h": 24 }, "frame": { - "x": 228, - "y": 96, - "w": 23, + "x": 112, + "y": 288, + "w": 22, "h": 24 } }, - { - "filename": "876", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 24 - }, - "frame": { - "x": 209, - "y": 104, - "w": 19, - "h": 24 - } - }, - { - "filename": "820s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 23, - "h": 24 - }, - "frame": { - "x": 228, - "y": 120, - "w": 23, - "h": 24 - } - }, - { - "filename": "876s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 24 - }, - "frame": { - "x": 209, - "y": 128, - "w": 19, - "h": 24 - } - }, - { - "filename": "866", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 23, - "h": 24 - }, - "frame": { - "x": 228, - "y": 144, - "w": 23, - "h": 24 - } - }, - { - "filename": "852", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 17 - }, - "frame": { - "x": 209, - "y": 152, - "w": 19, - "h": 17 - } - }, - { - "filename": "866s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 23, - "h": 24 - }, - "frame": { - "x": 228, - "y": 168, - "w": 23, - "h": 24 - } - }, - { - "filename": "881", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 18, - "h": 23 - }, - "frame": { - "x": 210, - "y": 169, - "w": 18, - "h": 23 - } - }, - { - "filename": "842s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 81, - "y": 381, - "w": 26, - "h": 25 - } - }, - { - "filename": "861", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 80, - "y": 406, - "w": 25, - "h": 26 - } - }, { "filename": "839", "rotated": false, @@ -2775,96 +2481,12 @@ "h": 25 }, "frame": { - "x": 80, - "y": 432, + "x": 110, + "y": 312, "w": 25, "h": 25 } }, - { - "filename": "847", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 27, - "h": 16 - }, - "frame": { - "x": 77, - "y": 457, - "w": 27, - "h": 16 - } - }, - { - "filename": "861s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 78, - "y": 473, - "w": 25, - "h": 26 - } - }, - { - "filename": "847s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 27, - "h": 16 - }, - "frame": { - "x": 170, - "y": 192, - "w": 27, - "h": 16 - } - }, - { - "filename": "6157s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 24, - "h": 27 - }, - "frame": { - "x": 171, - "y": 208, - "w": 24, - "h": 27 - } - }, { "filename": "817", "rotated": false, @@ -2880,14 +2502,14 @@ "h": 24 }, "frame": { - "x": 171, - "y": 235, + "x": 111, + "y": 337, "w": 24, "h": 24 } }, { - "filename": "880", + "filename": "862s", "rotated": false, "trimmed": true, "sourceSize": { @@ -2896,271 +2518,19 @@ }, "spriteSourceSize": { "x": 7, - "y": 4, - "w": 26, - "h": 22 - }, - "frame": { - "x": 169, - "y": 259, - "w": 26, - "h": 22 - } - }, - { - "filename": "901s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 197, - "y": 192, - "w": 28, - "h": 23 - } - }, - { - "filename": "6706", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 26, - "h": 25 - }, - "frame": { - "x": 225, - "y": 192, - "w": 26, - "h": 25 - } - }, - { - "filename": "4145", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 195, - "y": 215, - "w": 28, - "h": 23 - } - }, - { - "filename": "4145s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 223, - "y": 217, - "w": 28, - "h": 23 - } - }, - { - "filename": "6706s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 26, - "h": 25 - }, - "frame": { - "x": 195, - "y": 238, - "w": 26, - "h": 25 - } - }, - { - "filename": "4078", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 23 - }, - "frame": { - "x": 221, - "y": 240, - "w": 27, - "h": 23 - } - }, - { - "filename": "4146", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 18 - }, - "frame": { - "x": 195, - "y": 263, - "w": 28, - "h": 18 - } - }, - { - "filename": "4146s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 18 - }, - "frame": { - "x": 223, - "y": 263, - "w": 28, - "h": 18 - } - }, - { - "filename": "869s-gigantamax", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 0, - "w": 17, - "h": 30 - }, - "frame": { - "x": 108, - "y": 308, - "w": 17, - "h": 30 - } - }, - { - "filename": "810", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 + "y": 1, + "w": 25, + "h": 27 }, "frame": { "x": 110, - "y": 285, - "w": 19, - "h": 23 - } - }, - { - "filename": "810s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 108, - "y": 338, - "w": 19, - "h": 23 - } - }, - { - "filename": "818", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 107, "y": 361, - "w": 22, + "w": 25, "h": 27 } }, { - "filename": "811s", + "filename": "892-gigantamax-single", "rotated": false, "trimmed": true, "sourceSize": { @@ -3168,58 +2538,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 24 + "x": 8, + "y": 0, + "w": 23, + "h": 29 }, "frame": { - "x": 107, + "x": 109, "y": 388, - "w": 22, - "h": 24 - } - }, - { - "filename": "845s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 105, - "y": 412, - "w": 24, - "h": 26 - } - }, - { - "filename": "817s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 105, - "y": 438, - "w": 24, - "h": 24 + "w": 23, + "h": 29 } }, { @@ -3237,14 +2565,14 @@ "h": 25 }, "frame": { - "x": 104, - "y": 462, + "x": 109, + "y": 417, "w": 25, "h": 25 } }, { - "filename": "880s", + "filename": "881", "rotated": false, "trimmed": true, "sourceSize": { @@ -3252,20 +2580,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 22 + "x": 11, + "y": 3, + "w": 18, + "h": 23 }, "frame": { - "x": 103, - "y": 487, - "w": 26, - "h": 22 + "x": 133, + "y": 183, + "w": 18, + "h": 23 } }, { - "filename": "844", + "filename": "810", "rotated": false, "trimmed": true, "sourceSize": { @@ -3273,79 +2601,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 25, - "h": 19 + "x": 10, + "y": 3, + "w": 19, + "h": 23 }, "frame": { - "x": 78, - "y": 499, - "w": 25, - "h": 19 - } - }, - { - "filename": "827", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 21 - }, - "frame": { - "x": 54, - "y": 500, - "w": 24, - "h": 21 - } - }, - { - "filename": "892-gigantamax-rapid", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 53, - "y": 521, - "w": 24, - "h": 26 - } - }, - { - "filename": "892s-gigantamax-rapid", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 53, - "y": 547, - "w": 24, - "h": 26 + "x": 114, + "y": 185, + "w": 19, + "h": 23 } }, { @@ -3363,35 +2628,14 @@ "h": 27 }, "frame": { - "x": 53, - "y": 573, + "x": 114, + "y": 208, "w": 22, "h": 27 } }, { - "filename": "899", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 53, - "y": 600, - "w": 22, - "h": 27 - } - }, - { - "filename": "858", + "filename": "816", "rotated": false, "trimmed": true, "sourceSize": { @@ -3400,539 +2644,14 @@ }, "spriteSourceSize": { "x": 9, - "y": 2, + "y": 3, "w": 22, - "h": 25 + "h": 23 }, "frame": { - "x": 53, - "y": 627, + "x": 115, + "y": 235, "w": 22, - "h": 25 - } - }, - { - "filename": "899s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 56, - "y": 652, - "w": 22, - "h": 27 - } - }, - { - "filename": "6724", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 1, - "w": 17, - "h": 28 - }, - "frame": { - "x": 56, - "y": 679, - "w": 17, - "h": 28 - } - }, - { - "filename": "6724s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 1, - "w": 17, - "h": 28 - }, - "frame": { - "x": 60, - "y": 707, - "w": 17, - "h": 28 - } - }, - { - "filename": "813s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 2, - "w": 17, - "h": 26 - }, - "frame": { - "x": 61, - "y": 735, - "w": 17, - "h": 26 - } - }, - { - "filename": "903", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 21, - "h": 27 - }, - "frame": { - "x": 59, - "y": 761, - "w": 21, - "h": 27 - } - }, - { - "filename": "886", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 103, - "y": 509, - "w": 26, - "h": 24 - } - }, - { - "filename": "844s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 25, - "h": 19 - }, - "frame": { - "x": 78, - "y": 518, - "w": 25, - "h": 19 - } - }, - { - "filename": "886s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 77, - "y": 537, - "w": 26, - "h": 24 - } - }, - { - "filename": "897", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 103, - "y": 533, - "w": 26, - "h": 24 - } - }, - { - "filename": "892-rapid-strike", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 22 - }, - "frame": { - "x": 77, - "y": 561, - "w": 26, - "h": 22 - } - }, - { - "filename": "897s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 103, - "y": 557, - "w": 26, - "h": 24 - } - }, - { - "filename": "900", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 75, - "y": 583, - "w": 25, - "h": 25 - } - }, - { - "filename": "900s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 75, - "y": 608, - "w": 25, - "h": 25 - } - }, - { - "filename": "6628", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 10, - "w": 25, - "h": 19 - }, - "frame": { - "x": 75, - "y": 633, - "w": 25, - "h": 19 - } - }, - { - "filename": "903s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 21, - "h": 27 - }, - "frame": { - "x": 78, - "y": 652, - "w": 21, - "h": 27 - } - }, - { - "filename": "4078s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 23 - }, - "frame": { - "x": 73, - "y": 679, - "w": 27, - "h": 23 - } - }, - { - "filename": "858s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 77, - "y": 702, - "w": 22, - "h": 25 - } - }, - { - "filename": "4199", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 20, - "h": 27 - }, - "frame": { - "x": 78, - "y": 727, - "w": 20, - "h": 27 - } - }, - { - "filename": "4199s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 20, - "h": 27 - }, - "frame": { - "x": 80, - "y": 754, - "w": 20, - "h": 27 - } - }, - { - "filename": "846", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 25, - "h": 15 - }, - "frame": { - "x": 80, - "y": 781, - "w": 25, - "h": 15 - } - }, - { - "filename": "6713", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 129, - "y": 281, - "w": 27, - "h": 23 - } - }, - { - "filename": "6713s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 156, - "y": 281, - "w": 27, - "h": 23 - } - }, - { - "filename": "879", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 23 - }, - "frame": { - "x": 183, - "y": 281, - "w": 25, - "h": 23 - } - }, - { - "filename": "879s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 23 - }, - "frame": { - "x": 208, - "y": 281, - "w": 25, - "h": 23 - } - }, - { - "filename": "881s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 18, - "h": 23 - }, - "frame": { - "x": 233, - "y": 281, - "w": 18, "h": 23 } }, @@ -3951,14 +2670,14 @@ "h": 29 }, "frame": { - "x": 125, - "y": 308, + "x": 136, + "y": 206, "w": 15, "h": 29 } }, { - "filename": "892s-rapid-strike", + "filename": "828s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3966,20 +2685,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 22 + "x": 6, + "y": 3, + "w": 27, + "h": 24 }, "frame": { - "x": 140, - "y": 304, - "w": 26, - "h": 22 + "x": 151, + "y": 205, + "w": 27, + "h": 24 } }, { - "filename": "873", + "filename": "894s", "rotated": false, "trimmed": true, "sourceSize": { @@ -3987,62 +2706,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 + "x": 5, + "y": 3, + "w": 30, + "h": 23 }, "frame": { - "x": 166, - "y": 304, - "w": 25, - "h": 22 + "x": 178, + "y": 220, + "w": 30, + "h": 23 } }, { - "filename": "873s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 - }, - "frame": { - "x": 191, - "y": 304, - "w": 25, - "h": 22 - } - }, - { - "filename": "878", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 - }, - "frame": { - "x": 216, - "y": 304, - "w": 25, - "h": 22 - } - }, - { - "filename": "838", + "filename": "811s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4056,14 +2733,14 @@ "h": 24 }, "frame": { - "x": 127, - "y": 337, + "x": 208, + "y": 222, "w": 22, "h": 24 } }, { - "filename": "884", + "filename": "817s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4071,60 +2748,270 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 129, - "y": 361, - "w": 22, - "h": 25 - } - }, - { - "filename": "884s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 129, - "y": 386, - "w": 22, - "h": 25 - } - }, - { - "filename": "838s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, + "x": 8, "y": 3, - "w": 22, + "w": 24, "h": 24 }, "frame": { - "x": 129, - "y": 411, - "w": 22, + "x": 230, + "y": 239, + "w": 24, "h": 24 } }, + { + "filename": "841", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 24 + }, + "frame": { + "x": 151, + "y": 229, + "w": 27, + "h": 24 + } + }, + { + "filename": "875-no-ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 3, + "w": 14, + "h": 23 + }, + "frame": { + "x": 137, + "y": 235, + "w": 14, + "h": 23 + } + }, + { + "filename": "841s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 21, + "h": 30 + }, + "frame": { + "x": 133, + "y": 258, + "w": 21, + "h": 30 + } + }, + { + "filename": "892s-gigantamax-single", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 23, + "h": 29 + }, + "frame": { + "x": 154, + "y": 253, + "w": 23, + "h": 29 + } + }, + { + "filename": "820", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 23, + "h": 24 + }, + "frame": { + "x": 134, + "y": 288, + "w": 23, + "h": 24 + } + }, + { + "filename": "842-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 21, + "h": 30 + }, + "frame": { + "x": 135, + "y": 312, + "w": 21, + "h": 30 + } + }, + { + "filename": "842s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 21, + "h": 30 + }, + "frame": { + "x": 135, + "y": 342, + "w": 21, + "h": 30 + } + }, + { + "filename": "869s-gigantamax", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 0, + "w": 17, + "h": 30 + }, + "frame": { + "x": 157, + "y": 282, + "w": 17, + "h": 30 + } + }, + { + "filename": "899", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 22, + "h": 27 + }, + "frame": { + "x": 156, + "y": 312, + "w": 22, + "h": 27 + } + }, + { + "filename": "899s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 1, + "w": 22, + "h": 27 + }, + "frame": { + "x": 156, + "y": 339, + "w": 22, + "h": 27 + } + }, + { + "filename": "888s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 28, + "h": 23 + }, + "frame": { + "x": 178, + "y": 243, + "w": 28, + "h": 23 + } + }, + { + "filename": "827", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 24, + "h": 21 + }, + "frame": { + "x": 206, + "y": 246, + "w": 24, + "h": 21 + } + }, { "filename": "896", "rotated": false, @@ -4140,12 +3027,54 @@ "h": 24 }, "frame": { - "x": 129, - "y": 435, + "x": 230, + "y": 263, "w": 24, "h": 24 } }, + { + "filename": "901", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 28, + "h": 23 + }, + "frame": { + "x": 177, + "y": 266, + "w": 28, + "h": 23 + } + }, + { + "filename": "861", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 25, + "h": 26 + }, + "frame": { + "x": 205, + "y": 267, + "w": 25, + "h": 26 + } + }, { "filename": "896s", "rotated": false, @@ -4161,12 +3090,54 @@ "h": 24 }, "frame": { - "x": 129, - "y": 459, + "x": 230, + "y": 287, "w": 24, "h": 24 } }, + { + "filename": "901s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 28, + "h": 23 + }, + "frame": { + "x": 174, + "y": 289, + "w": 28, + "h": 23 + } + }, + { + "filename": "904", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 28, + "h": 25 + }, + "frame": { + "x": 202, + "y": 293, + "w": 28, + "h": 25 + } + }, { "filename": "4080", "rotated": false, @@ -4182,8 +3153,8 @@ "h": 23 }, "frame": { - "x": 129, - "y": 483, + "x": 230, + "y": 311, "w": 24, "h": 23 } @@ -4203,14 +3174,14 @@ "h": 23 }, "frame": { - "x": 129, - "y": 506, + "x": 178, + "y": 312, "w": 24, "h": 23 } }, { - "filename": "6571", + "filename": "904s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4219,57 +3190,15 @@ }, "spriteSourceSize": { "x": 7, - "y": 5, - "w": 25, - "h": 23 + "y": 3, + "w": 28, + "h": 25 }, "frame": { - "x": 129, - "y": 529, - "w": 25, - "h": 23 - } - }, - { - "filename": "6571s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 129, - "y": 552, - "w": 25, - "h": 23 - } - }, - { - "filename": "878s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 - }, - "frame": { - "x": 149, - "y": 326, - "w": 25, - "h": 22 + "x": 202, + "y": 318, + "w": 28, + "h": 25 } }, { @@ -4287,8 +3216,8 @@ "h": 21 }, "frame": { - "x": 174, - "y": 326, + "x": 230, + "y": 334, "w": 24, "h": 21 } @@ -4308,14 +3237,14 @@ "h": 21 }, "frame": { - "x": 198, - "y": 326, + "x": 178, + "y": 335, "w": 24, "h": 21 } }, { - "filename": "814", + "filename": "4145", "rotated": false, "trimmed": true, "sourceSize": { @@ -4323,20 +3252,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, + "x": 6, "y": 3, - "w": 21, + "w": 28, "h": 23 }, "frame": { - "x": 222, - "y": 326, - "w": 21, + "x": 202, + "y": 343, + "w": 28, "h": 23 } }, { - "filename": "853", + "filename": "4077s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4345,19 +3274,19 @@ }, "spriteSourceSize": { "x": 8, - "y": 3, - "w": 23, - "h": 23 + "y": 4, + "w": 24, + "h": 21 }, "frame": { - "x": 151, - "y": 348, - "w": 23, - "h": 23 + "x": 230, + "y": 355, + "w": 24, + "h": 21 } }, { - "filename": "853s", + "filename": "885", "rotated": false, "trimmed": true, "sourceSize": { @@ -4366,19 +3295,19 @@ }, "spriteSourceSize": { "x": 8, - "y": 3, - "w": 23, - "h": 23 + "y": 6, + "w": 24, + "h": 17 }, "frame": { - "x": 174, - "y": 347, - "w": 23, - "h": 23 + "x": 178, + "y": 356, + "w": 24, + "h": 17 } }, { - "filename": "6628s", + "filename": "4145s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4386,20 +3315,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 10, - "w": 25, - "h": 19 + "x": 6, + "y": 3, + "w": 28, + "h": 23 }, "frame": { - "x": 197, - "y": 347, - "w": 25, - "h": 19 + "x": 202, + "y": 366, + "w": 28, + "h": 23 } }, { - "filename": "816", + "filename": "6211", "rotated": false, "trimmed": true, "sourceSize": { @@ -4407,16 +3336,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 + "x": 8, + "y": 9, + "w": 24, + "h": 19 }, "frame": { - "x": 151, - "y": 371, - "w": 22, - "h": 23 + "x": 230, + "y": 376, + "w": 24, + "h": 19 } }, { @@ -4434,14 +3363,203 @@ "h": 23 }, "frame": { - "x": 151, - "y": 394, + "x": 135, + "y": 372, "w": 22, "h": 23 } }, { - "filename": "4618", + "filename": "903", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 1, + "w": 21, + "h": 27 + }, + "frame": { + "x": 157, + "y": 366, + "w": 21, + "h": 27 + } + }, + { + "filename": "6211s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 24, + "h": 19 + }, + "frame": { + "x": 178, + "y": 373, + "w": 24, + "h": 19 + } + }, + { + "filename": "873", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 25, + "h": 22 + }, + "frame": { + "x": 132, + "y": 395, + "w": 25, + "h": 22 + } + }, + { + "filename": "842", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 134, + "y": 417, + "w": 26, + "h": 25 + } + }, + { + "filename": "820s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 23, + "h": 24 + }, + "frame": { + "x": 157, + "y": 393, + "w": 23, + "h": 24 + } + }, + { + "filename": "842s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 2, + "w": 26, + "h": 25 + }, + "frame": { + "x": 180, + "y": 392, + "w": 26, + "h": 25 + } + }, + { + "filename": "841s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 24 + }, + "frame": { + "x": 160, + "y": 417, + "w": 27, + "h": 24 + } + }, + { + "filename": "892", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 2, + "w": 23, + "h": 25 + }, + "frame": { + "x": 206, + "y": 389, + "w": 23, + "h": 25 + } + }, + { + "filename": "861s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 25, + "h": 26 + }, + "frame": { + "x": 229, + "y": 395, + "w": 25, + "h": 26 + } + }, + { + "filename": "838", "rotated": false, "trimmed": true, "sourceSize": { @@ -4450,15 +3568,57 @@ }, "spriteSourceSize": { "x": 9, - "y": 6, + "y": 3, "w": 22, - "h": 18 + "h": 24 }, "frame": { - "x": 151, + "x": 187, "y": 417, "w": 22, - "h": 18 + "h": 24 + } + }, + { + "filename": "4199", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 1, + "w": 20, + "h": 27 + }, + "frame": { + "x": 209, + "y": 414, + "w": 20, + "h": 27 + } + }, + { + "filename": "900", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 229, + "y": 421, + "w": 25, + "h": 25 } }, { @@ -4476,12 +3636,33 @@ "h": 29 }, "frame": { - "x": 153, - "y": 435, + "x": 31, + "y": 706, "w": 15, "h": 29 } }, + { + "filename": "849", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 2, + "w": 16, + "h": 25 + }, + "frame": { + "x": 31, + "y": 735, + "w": 16, + "h": 25 + } + }, { "filename": "875", "rotated": false, @@ -4497,12 +3678,411 @@ "h": 27 }, "frame": { - "x": 153, - "y": 464, + "x": 30, + "y": 760, "w": 17, "h": 27 } }, + { + "filename": "850", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 10, + "w": 21, + "h": 10 + }, + "frame": { + "x": 0, + "y": 787, + "w": 21, + "h": 10 + } + }, + { + "filename": "850s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 10, + "w": 21, + "h": 10 + }, + "frame": { + "x": 21, + "y": 787, + "w": 21, + "h": 10 + } + }, + { + "filename": "4146", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 28, + "h": 18 + }, + "frame": { + "x": 56, + "y": 442, + "w": 28, + "h": 18 + } + }, + { + "filename": "4146s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 28, + "h": 18 + }, + "frame": { + "x": 84, + "y": 442, + "w": 28, + "h": 18 + } + }, + { + "filename": "4078", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 23 + }, + "frame": { + "x": 112, + "y": 442, + "w": 27, + "h": 23 + } + }, + { + "filename": "838s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 24 + }, + "frame": { + "x": 139, + "y": 442, + "w": 22, + "h": 24 + } + }, + { + "filename": "6706", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 26, + "h": 25 + }, + "frame": { + "x": 161, + "y": 441, + "w": 26, + "h": 25 + } + }, + { + "filename": "6706s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 26, + "h": 25 + }, + "frame": { + "x": 187, + "y": 441, + "w": 26, + "h": 25 + } + }, + { + "filename": "849s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 2, + "w": 16, + "h": 25 + }, + "frame": { + "x": 213, + "y": 441, + "w": 16, + "h": 25 + } + }, + { + "filename": "900s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 25, + "h": 25 + }, + "frame": { + "x": 229, + "y": 446, + "w": 25, + "h": 25 + } + }, + { + "filename": "880", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 26, + "h": 22 + }, + "frame": { + "x": 30, + "y": 443, + "w": 26, + "h": 22 + } + }, + { + "filename": "886", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 24 + }, + "frame": { + "x": 29, + "y": 465, + "w": 26, + "h": 24 + } + }, + { + "filename": "886s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 24 + }, + "frame": { + "x": 29, + "y": 489, + "w": 26, + "h": 24 + } + }, + { + "filename": "897", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 24 + }, + "frame": { + "x": 29, + "y": 513, + "w": 26, + "h": 24 + } + }, + { + "filename": "903s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 1, + "w": 21, + "h": 27 + }, + "frame": { + "x": 29, + "y": 537, + "w": 21, + "h": 27 + } + }, + { + "filename": "4199s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 1, + "w": 20, + "h": 27 + }, + "frame": { + "x": 32, + "y": 564, + "w": 20, + "h": 27 + } + }, + { + "filename": "858", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 22, + "h": 25 + }, + "frame": { + "x": 32, + "y": 591, + "w": 22, + "h": 25 + } + }, + { + "filename": "858s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 22, + "h": 25 + }, + "frame": { + "x": 32, + "y": 616, + "w": 22, + "h": 25 + } + }, + { + "filename": "884", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 22, + "h": 25 + }, + "frame": { + "x": 32, + "y": 641, + "w": 22, + "h": 25 + } + }, { "filename": "875s", "rotated": false, @@ -4518,14 +4098,14 @@ "h": 27 }, "frame": { - "x": 153, - "y": 491, + "x": 50, + "y": 537, "w": 17, "h": 27 } }, { - "filename": "814s", + "filename": "884s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4534,40 +4114,19 @@ }, "spriteSourceSize": { "x": 9, - "y": 3, - "w": 21, - "h": 23 + "y": 2, + "w": 22, + "h": 25 }, "frame": { - "x": 222, - "y": 349, - "w": 21, - "h": 23 + "x": 52, + "y": 564, + "w": 22, + "h": 25 } }, { - "filename": "846s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 25, - "h": 15 - }, - "frame": { - "x": 197, - "y": 366, - "w": 25, - "h": 15 - } - }, - { - "filename": "883", + "filename": "892s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4576,19 +4135,19 @@ }, "spriteSourceSize": { "x": 8, - "y": 4, + "y": 2, "w": 23, - "h": 21 + "h": 25 }, "frame": { - "x": 174, - "y": 370, + "x": 54, + "y": 589, "w": 23, - "h": 21 + "h": 25 } }, { - "filename": "855", + "filename": "866", "rotated": false, "trimmed": true, "sourceSize": { @@ -4596,15 +4155,162 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, + "x": 8, "y": 3, - "w": 22, + "w": 23, + "h": 24 + }, + "frame": { + "x": 54, + "y": 614, + "w": 23, + "h": 24 + } + }, + { + "filename": "866s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 23, + "h": 24 + }, + "frame": { + "x": 54, + "y": 638, + "w": 23, + "h": 24 + } + }, + { + "filename": "897s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 24 + }, + "frame": { + "x": 33, + "y": 666, + "w": 26, + "h": 24 + } + }, + { + "filename": "847", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 27, + "h": 16 + }, + "frame": { + "x": 33, + "y": 690, + "w": 27, + "h": 16 + } + }, + { + "filename": "6724", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 1, + "w": 17, + "h": 28 + }, + "frame": { + "x": 46, + "y": 706, + "w": 17, + "h": 28 + } + }, + { + "filename": "6724s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 1, + "w": 17, + "h": 28 + }, + "frame": { + "x": 47, + "y": 734, + "w": 17, + "h": 28 + } + }, + { + "filename": "863s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 20, + "h": 24 + }, + "frame": { + "x": 47, + "y": 762, + "w": 20, + "h": 24 + } + }, + { + "filename": "810s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, "h": 23 }, "frame": { - "x": 173, - "y": 391, - "w": 22, + "x": 59, + "y": 662, + "w": 19, "h": 23 } }, @@ -4623,35 +4329,14 @@ "h": 21 }, "frame": { - "x": 173, - "y": 414, + "x": 60, + "y": 685, "w": 22, "h": 21 } }, { - "filename": "855s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 168, - "y": 435, - "w": 22, - "h": 23 - } - }, - { - "filename": "863", + "filename": "830", "rotated": false, "trimmed": true, "sourceSize": { @@ -4661,18 +4346,18 @@ "spriteSourceSize": { "x": 10, "y": 3, - "w": 20, - "h": 24 + "w": 19, + "h": 23 }, "frame": { - "x": 170, - "y": 458, - "w": 20, - "h": 24 + "x": 63, + "y": 706, + "w": 19, + "h": 23 } }, { - "filename": "863s", + "filename": "830s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4682,18 +4367,60 @@ "spriteSourceSize": { "x": 10, "y": 3, - "w": 20, - "h": 24 + "w": 19, + "h": 23 }, "frame": { - "x": 170, - "y": 482, - "w": 20, - "h": 24 + "x": 64, + "y": 729, + "w": 19, + "h": 23 } }, { - "filename": "4079", + "filename": "847s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 27, + "h": 16 + }, + "frame": { + "x": 56, + "y": 460, + "w": 27, + "h": 16 + } + }, + { + "filename": "4078s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 23 + }, + "frame": { + "x": 55, + "y": 476, + "w": 27, + "h": 23 + } + }, + { + "filename": "6713", "rotated": false, "trimmed": true, "sourceSize": { @@ -4702,19 +4429,19 @@ }, "spriteSourceSize": { "x": 7, - "y": 8, - "w": 26, - "h": 14 + "y": 5, + "w": 27, + "h": 23 }, "frame": { - "x": 197, - "y": 381, - "w": 26, - "h": 14 + "x": 55, + "y": 499, + "w": 27, + "h": 23 } }, { - "filename": "860", + "filename": "846", "rotated": false, "trimmed": true, "sourceSize": { @@ -4722,20 +4449,62 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, + "x": 7, + "y": 7, + "w": 25, + "h": 15 + }, + "frame": { + "x": 55, + "y": 522, + "w": 25, + "h": 15 + } + }, + { + "filename": "6713s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 27, + "h": 23 + }, + "frame": { + "x": 83, + "y": 460, + "w": 27, + "h": 23 + } + }, + { + "filename": "879", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, "y": 3, - "w": 22, + "w": 25, "h": 23 }, "frame": { - "x": 195, - "y": 395, - "w": 22, + "x": 82, + "y": 483, + "w": 25, "h": 23 } }, { - "filename": "819s", + "filename": "880s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4743,20 +4512,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, + "x": 7, "y": 4, - "w": 22, - "h": 21 + "w": 26, + "h": 22 }, "frame": { - "x": 195, - "y": 418, - "w": 22, - "h": 21 + "x": 110, + "y": 465, + "w": 26, + "h": 22 } }, { - "filename": "860s", + "filename": "892-rapid-strike", "rotated": false, "trimmed": true, "sourceSize": { @@ -4764,20 +4533,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 + "x": 7, + "y": 4, + "w": 26, + "h": 22 }, "frame": { - "x": 190, - "y": 439, - "w": 22, - "h": 23 + "x": 136, + "y": 466, + "w": 26, + "h": 22 } }, { - "filename": "876-female", + "filename": "892s-rapid-strike", "rotated": false, "trimmed": true, "sourceSize": { @@ -4785,15 +4554,183 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, + "x": 7, + "y": 4, + "w": 26, + "h": 22 + }, + "frame": { + "x": 162, + "y": 466, + "w": 26, + "h": 22 + } + }, + { + "filename": "873s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 25, + "h": 22 + }, + "frame": { + "x": 188, + "y": 466, + "w": 25, + "h": 22 + } + }, + { + "filename": "833", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, "y": 3, - "w": 22, + "w": 16, "h": 23 }, "frame": { - "x": 190, - "y": 462, - "w": 22, + "x": 213, + "y": 466, + "w": 16, + "h": 23 + } + }, + { + "filename": "879s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 25, + "h": 23 + }, + "frame": { + "x": 229, + "y": 471, + "w": 25, + "h": 23 + } + }, + { + "filename": "844", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 25, + "h": 19 + }, + "frame": { + "x": 82, + "y": 506, + "w": 25, + "h": 19 + } + }, + { + "filename": "6571", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 25, + "h": 23 + }, + "frame": { + "x": 107, + "y": 487, + "w": 25, + "h": 23 + } + }, + { + "filename": "878", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 25, + "h": 22 + }, + "frame": { + "x": 132, + "y": 488, + "w": 25, + "h": 22 + } + }, + { + "filename": "878s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 25, + "h": 22 + }, + "frame": { + "x": 157, + "y": 488, + "w": 25, + "h": 22 + } + }, + { + "filename": "6571s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 5, + "w": 25, + "h": 23 + }, + "frame": { + "x": 182, + "y": 488, + "w": 25, "h": 23 } }, @@ -4812,14 +4749,14 @@ "h": 22 }, "frame": { - "x": 190, - "y": 485, + "x": 207, + "y": 489, "w": 22, "h": 22 } }, { - "filename": "876s-female", + "filename": "844s", "rotated": false, "trimmed": true, "sourceSize": { @@ -4827,440 +4764,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 223, - "y": 372, - "w": 22, - "h": 23 - } - }, - { - "filename": "882", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 217, - "y": 395, - "w": 22, - "h": 23 - } - }, - { - "filename": "832s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 217, - "y": 418, - "w": 22, - "h": 22 - } - }, - { - "filename": "882s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 212, - "y": 440, - "w": 22, - "h": 23 - } - }, - { - "filename": "877-hangry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 234, - "y": 440, - "w": 17, - "h": 21 - } - }, - { - "filename": "836", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 212, - "y": 463, - "w": 22, - "h": 22 - } - }, - { - "filename": "877", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 234, - "y": 461, - "w": 17, - "h": 21 - } - }, - { - "filename": "836s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 212, - "y": 485, - "w": 22, - "h": 22 - } - }, - { - "filename": "877s-hangry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 234, - "y": 482, - "w": 17, - "h": 21 - } - }, - { - "filename": "877s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 234, - "y": 503, - "w": 17, - "h": 21 - } - }, - { - "filename": "825", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 18 - }, - "frame": { - "x": 170, - "y": 506, - "w": 20, - "h": 18 - } - }, - { - "filename": "885", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 24, - "h": 17 - }, - "frame": { - "x": 190, - "y": 507, - "w": 24, - "h": 17 - } - }, - { - "filename": "825s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 18 - }, - "frame": { - "x": 214, - "y": 507, - "w": 20, - "h": 18 - } - }, - { - "filename": "6215", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 234, - "y": 524, - "w": 17, - "h": 21 - } - }, - { - "filename": "849", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 2, - "w": 16, - "h": 25 - }, - "frame": { - "x": 154, - "y": 518, - "w": 16, - "h": 25 - } - }, - { - "filename": "4077s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 21 - }, - "frame": { - "x": 170, - "y": 524, - "w": 24, - "h": 21 - } - }, - { - "filename": "849s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 2, - "w": 16, - "h": 25 - }, - "frame": { - "x": 154, - "y": 543, - "w": 16, - "h": 25 - } - }, - { - "filename": "857", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 170, - "y": 545, - "w": 22, - "h": 22 - } - }, - { - "filename": "830", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 194, - "y": 524, - "w": 19, - "h": 23 - } - }, - { - "filename": "4052", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 21, - "h": 21 - }, - "frame": { - "x": 213, - "y": 525, - "w": 21, - "h": 21 - } - }, - { - "filename": "835", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, + "x": 7, "y": 5, - "w": 22, - "h": 20 + "w": 25, + "h": 19 }, "frame": { - "x": 192, - "y": 547, - "w": 22, - "h": 20 + "x": 229, + "y": 494, + "w": 25, + "h": 19 } }, { - "filename": "857s", + "filename": "846s", "rotated": false, "trimmed": true, "sourceSize": { @@ -5268,20 +4785,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 + "x": 7, + "y": 7, + "w": 25, + "h": 15 }, "frame": { - "x": 214, - "y": 546, - "w": 22, - "h": 22 + "x": 107, + "y": 510, + "w": 25, + "h": 15 } }, { - "filename": "849-lowkey", + "filename": "4079", "rotated": false, "trimmed": true, "sourceSize": { @@ -5289,35 +4806,14 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, - "y": 3, - "w": 15, - "h": 23 - }, - "frame": { - "x": 236, - "y": 545, - "w": 15, - "h": 23 - } - }, - { - "filename": "4079s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 14, + "x": 7, + "y": 8, "w": 26, "h": 14 }, "frame": { - "x": 129, - "y": 575, + "x": 132, + "y": 510, "w": 26, "h": 14 } @@ -5337,14 +4833,14 @@ "h": 17 }, "frame": { - "x": 105, - "y": 581, + "x": 158, + "y": 510, "w": 24, "h": 17 } }, { - "filename": "883s", + "filename": "6628", "rotated": false, "trimmed": true, "sourceSize": { @@ -5352,83 +4848,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 23, - "h": 21 - }, - "frame": { - "x": 100, - "y": 598, - "w": 23, - "h": 21 - } - }, - { - "filename": "830s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 100, - "y": 619, - "w": 19, - "h": 23 - } - }, - { - "filename": "6211", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 9, - "w": 24, + "x": 7, + "y": 10, + "w": 25, "h": 19 }, "frame": { - "x": 129, - "y": 589, - "w": 24, + "x": 182, + "y": 511, + "w": 25, "h": 19 } }, { - "filename": "821", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 100, - "y": 642, - "w": 19, - "h": 16 - } - }, - { - "filename": "4052s", + "filename": "819s", "rotated": false, "trimmed": true, "sourceSize": { @@ -5438,16 +4871,247 @@ "spriteSourceSize": { "x": 9, "y": 4, - "w": 21, + "w": 22, "h": 21 }, "frame": { - "x": 99, - "y": 658, - "w": 21, + "x": 207, + "y": 511, + "w": 22, "h": 21 } }, + { + "filename": "6628s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 10, + "w": 25, + "h": 19 + }, + "frame": { + "x": 229, + "y": 513, + "w": 25, + "h": 19 + } + }, + { + "filename": "833s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 3, + "w": 16, + "h": 23 + }, + "frame": { + "x": 67, + "y": 537, + "w": 16, + "h": 23 + } + }, + { + "filename": "853", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 23, + "h": 23 + }, + "frame": { + "x": 83, + "y": 525, + "w": 23, + "h": 23 + } + }, + { + "filename": "853s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 23, + "h": 23 + }, + "frame": { + "x": 106, + "y": 525, + "w": 23, + "h": 23 + } + }, + { + "filename": "4079s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 14, + "w": 26, + "h": 14 + }, + "frame": { + "x": 83, + "y": 548, + "w": 26, + "h": 14 + } + }, + { + "filename": "822", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 22, + "h": 19 + }, + "frame": { + "x": 109, + "y": 548, + "w": 22, + "h": 19 + } + }, + { + "filename": "855", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 74, + "y": 562, + "w": 22, + "h": 23 + } + }, + { + "filename": "855s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 77, + "y": 585, + "w": 22, + "h": 23 + } + }, + { + "filename": "860", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 77, + "y": 608, + "w": 22, + "h": 23 + } + }, + { + "filename": "860s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 77, + "y": 631, + "w": 22, + "h": 23 + } + }, + { + "filename": "876-female", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 78, + "y": 654, + "w": 22, + "h": 23 + } + }, { "filename": "856", "rotated": false, @@ -5463,8 +5127,8 @@ "h": 23 }, "frame": { - "x": 100, - "y": 679, + "x": 82, + "y": 677, "w": 19, "h": 23 } @@ -5484,285 +5148,12 @@ "h": 23 }, "frame": { - "x": 99, - "y": 702, + "x": 82, + "y": 700, "w": 19, "h": 23 } }, - { - "filename": "824", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 15, - "h": 21 - }, - "frame": { - "x": 155, - "y": 568, - "w": 15, - "h": 21 - } - }, - { - "filename": "6211s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 9, - "w": 24, - "h": 19 - }, - "frame": { - "x": 170, - "y": 567, - "w": 24, - "h": 19 - } - }, - { - "filename": "831", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 19 - }, - "frame": { - "x": 194, - "y": 567, - "w": 20, - "h": 19 - } - }, - { - "filename": "822", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 214, - "y": 568, - "w": 22, - "h": 19 - } - }, - { - "filename": "849s-lowkey", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 3, - "w": 15, - "h": 23 - }, - "frame": { - "x": 236, - "y": 568, - "w": 15, - "h": 23 - } - }, - { - "filename": "822s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 153, - "y": 589, - "w": 22, - "h": 19 - } - }, - { - "filename": "835s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 20 - }, - "frame": { - "x": 175, - "y": 586, - "w": 22, - "h": 20 - } - }, - { - "filename": "859", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 17, - "h": 20 - }, - "frame": { - "x": 197, - "y": 586, - "w": 17, - "h": 20 - } - }, - { - "filename": "4144", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 214, - "y": 587, - "w": 22, - "h": 19 - } - }, - { - "filename": "6705", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 236, - "y": 591, - "w": 15, - "h": 22 - } - }, - { - "filename": "833", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 3, - "w": 16, - "h": 23 - }, - "frame": { - "x": 119, - "y": 619, - "w": 16, - "h": 23 - } - }, - { - "filename": "821s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 119, - "y": 642, - "w": 19, - "h": 16 - } - }, - { - "filename": "848", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 21 - }, - "frame": { - "x": 120, - "y": 658, - "w": 18, - "h": 21 - } - }, { "filename": "869-caramel-swirl", "rotated": false, @@ -5778,12 +5169,33 @@ "h": 23 }, "frame": { - "x": 119, - "y": 679, + "x": 83, + "y": 723, "w": 19, "h": 23 } }, + { + "filename": "4618", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 6, + "w": 22, + "h": 18 + }, + "frame": { + "x": 96, + "y": 567, + "w": 22, + "h": 18 + } + }, { "filename": "869-lemon-cream", "rotated": false, @@ -5799,8 +5211,8 @@ "h": 23 }, "frame": { - "x": 118, - "y": 702, + "x": 99, + "y": 585, "w": 19, "h": 23 } @@ -5820,7 +5232,7 @@ "h": 23 }, "frame": { - "x": 135, + "x": 99, "y": 608, "w": 19, "h": 23 @@ -5841,33 +5253,12 @@ "h": 23 }, "frame": { - "x": 154, - "y": 608, + "x": 99, + "y": 631, "w": 19, "h": 23 } }, - { - "filename": "850", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 10 - }, - "frame": { - "x": 135, - "y": 631, - "w": 21, - "h": 10 - } - }, { "filename": "869-rainbow-swirl", "rotated": false, @@ -5883,8 +5274,8 @@ "h": 23 }, "frame": { - "x": 138, - "y": 641, + "x": 100, + "y": 654, "w": 19, "h": 23 } @@ -5904,75 +5295,12 @@ "h": 23 }, "frame": { - "x": 138, - "y": 664, + "x": 101, + "y": 677, "w": 19, "h": 23 } }, - { - "filename": "831s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 19 - }, - "frame": { - "x": 138, - "y": 687, - "w": 20, - "h": 19 - } - }, - { - "filename": "4144s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 137, - "y": 706, - "w": 22, - "h": 19 - } - }, - { - "filename": "833s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 3, - "w": 16, - "h": 23 - }, - "frame": { - "x": 157, - "y": 631, - "w": 16, - "h": 23 - } - }, { "filename": "869-ruby-swirl", "rotated": false, @@ -5988,8 +5316,8 @@ "h": 23 }, "frame": { - "x": 157, - "y": 654, + "x": 101, + "y": 700, "w": 19, "h": 23 } @@ -6009,12 +5337,54 @@ "h": 23 }, "frame": { - "x": 158, - "y": 677, + "x": 102, + "y": 723, "w": 19, "h": 23 } }, + { + "filename": "849-lowkey", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 3, + "w": 15, + "h": 23 + }, + "frame": { + "x": 118, + "y": 567, + "w": 15, + "h": 23 + } + }, + { + "filename": "849s-lowkey", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 3, + "w": 15, + "h": 23 + }, + "frame": { + "x": 118, + "y": 590, + "w": 15, + "h": 23 + } + }, { "filename": "869", "rotated": false, @@ -6030,12 +5400,390 @@ "h": 23 }, "frame": { - "x": 159, + "x": 118, + "y": 613, + "w": 19, + "h": 23 + } + }, + { + "filename": "825", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 20, + "h": 18 + }, + "frame": { + "x": 118, + "y": 636, + "w": 20, + "h": 18 + } + }, + { + "filename": "869s-caramel-swirl", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 119, + "y": 654, + "w": 19, + "h": 23 + } + }, + { + "filename": "869s-lemon-cream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 120, + "y": 677, + "w": 19, + "h": 23 + } + }, + { + "filename": "869s-matcha-cream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 120, "y": 700, "w": 19, "h": 23 } }, + { + "filename": "869s-mint-cream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 121, + "y": 723, + "w": 19, + "h": 23 + } + }, + { + "filename": "869s-rainbow-swirl", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 67, + "y": 752, + "w": 19, + "h": 23 + } + }, + { + "filename": "876s-female", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 67, + "y": 775, + "w": 22, + "h": 23 + } + }, + { + "filename": "882", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 86, + "y": 746, + "w": 22, + "h": 23 + } + }, + { + "filename": "882s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 22, + "h": 23 + }, + "frame": { + "x": 108, + "y": 746, + "w": 22, + "h": 23 + } + }, + { + "filename": "832s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 22 + }, + "frame": { + "x": 89, + "y": 769, + "w": 22, + "h": 22 + } + }, + { + "filename": "836", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 22 + }, + "frame": { + "x": 111, + "y": 769, + "w": 22, + "h": 22 + } + }, + { + "filename": "869s-ruby-cream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 130, + "y": 746, + "w": 19, + "h": 23 + } + }, + { + "filename": "836s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 22 + }, + "frame": { + "x": 133, + "y": 769, + "w": 22, + "h": 22 + } + }, + { + "filename": "869s-ruby-swirl", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 129, + "y": 525, + "w": 19, + "h": 23 + } + }, + { + "filename": "822s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 22, + "h": 19 + }, + "frame": { + "x": 131, + "y": 548, + "w": 22, + "h": 19 + } + }, + { + "filename": "857", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 22 + }, + "frame": { + "x": 133, + "y": 567, + "w": 22, + "h": 22 + } + }, + { + "filename": "857s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 22, + "h": 22 + }, + "frame": { + "x": 133, + "y": 589, + "w": 22, + "h": 22 + } + }, + { + "filename": "869s-salted-cream", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 137, + "y": 611, + "w": 19, + "h": 23 + } + }, { "filename": "869s", "rotated": false, @@ -6051,12 +5799,180 @@ "h": 23 }, "frame": { - "x": 173, - "y": 608, + "x": 138, + "y": 634, "w": 19, "h": 23 } }, + { + "filename": "835", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 22, + "h": 20 + }, + "frame": { + "x": 138, + "y": 657, + "w": 22, + "h": 20 + } + }, + { + "filename": "883", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 23, + "h": 21 + }, + "frame": { + "x": 139, + "y": 677, + "w": 23, + "h": 21 + } + }, + { + "filename": "883s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 23, + "h": 21 + }, + "frame": { + "x": 139, + "y": 698, + "w": 23, + "h": 21 + } + }, + { + "filename": "835s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 22, + "h": 20 + }, + "frame": { + "x": 140, + "y": 719, + "w": 22, + "h": 20 + } + }, + { + "filename": "4052", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 21, + "h": 21 + }, + "frame": { + "x": 148, + "y": 527, + "w": 21, + "h": 21 + } + }, + { + "filename": "831", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 20, + "h": 19 + }, + "frame": { + "x": 153, + "y": 548, + "w": 20, + "h": 19 + } + }, + { + "filename": "881s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 3, + "w": 18, + "h": 23 + }, + "frame": { + "x": 155, + "y": 567, + "w": 18, + "h": 23 + } + }, + { + "filename": "848", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 18, + "h": 21 + }, + "frame": { + "x": 155, + "y": 590, + "w": 18, + "h": 21 + } + }, { "filename": "6549", "rotated": false, @@ -6072,12 +5988,264 @@ "h": 23 }, "frame": { - "x": 173, - "y": 631, + "x": 156, + "y": 611, "w": 16, "h": 23 } }, + { + "filename": "6549s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 16, + "h": 23 + }, + "frame": { + "x": 157, + "y": 634, + "w": 16, + "h": 23 + } + }, + { + "filename": "859s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 17, + "h": 20 + }, + "frame": { + "x": 160, + "y": 657, + "w": 17, + "h": 20 + } + }, + { + "filename": "875s-no-ice", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 3, + "w": 14, + "h": 23 + }, + "frame": { + "x": 162, + "y": 677, + "w": 14, + "h": 23 + } + }, + { + "filename": "891", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 18, + "h": 22 + }, + "frame": { + "x": 162, + "y": 700, + "w": 18, + "h": 22 + } + }, + { + "filename": "825s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 20, + "h": 18 + }, + "frame": { + "x": 162, + "y": 722, + "w": 20, + "h": 18 + } + }, + { + "filename": "4618s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 6, + "w": 22, + "h": 18 + }, + "frame": { + "x": 169, + "y": 530, + "w": 22, + "h": 18 + } + }, + { + "filename": "891s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 18, + "h": 22 + }, + "frame": { + "x": 173, + "y": 548, + "w": 18, + "h": 22 + } + }, + { + "filename": "898", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 4, + "w": 19, + "h": 22 + }, + "frame": { + "x": 173, + "y": 570, + "w": 19, + "h": 22 + } + }, + { + "filename": "831s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 20, + "h": 19 + }, + "frame": { + "x": 173, + "y": 592, + "w": 20, + "h": 19 + } + }, + { + "filename": "4052s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 21, + "h": 21 + }, + "frame": { + "x": 172, + "y": 611, + "w": 21, + "h": 21 + } + }, + { + "filename": "898s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 4, + "w": 19, + "h": 22 + }, + "frame": { + "x": 173, + "y": 632, + "w": 19, + "h": 22 + } + }, + { + "filename": "6705", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 6, + "w": 15, + "h": 22 + }, + "frame": { + "x": 191, + "y": 530, + "w": 15, + "h": 22 + } + }, { "filename": "4264", "rotated": false, @@ -6093,8 +6261,8 @@ "h": 20 }, "frame": { - "x": 192, - "y": 606, + "x": 206, + "y": 532, "w": 22, "h": 20 } @@ -6114,96 +6282,12 @@ "h": 20 }, "frame": { - "x": 214, - "y": 606, + "x": 228, + "y": 532, "w": 22, "h": 20 } }, - { - "filename": "6705s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 236, - "y": 613, - "w": 15, - "h": 22 - } - }, - { - "filename": "875-no-ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 3, - "w": 14, - "h": 23 - }, - "frame": { - "x": 176, - "y": 654, - "w": 14, - "h": 23 - } - }, - { - "filename": "875s-no-ice", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 3, - "w": 14, - "h": 23 - }, - "frame": { - "x": 177, - "y": 677, - "w": 14, - "h": 23 - } - }, - { - "filename": "6549s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 16, - "h": 23 - }, - "frame": { - "x": 178, - "y": 700, - "w": 16, - "h": 23 - } - }, { "filename": "4263", "rotated": false, @@ -6218,221 +6302,11 @@ "w": 22, "h": 16 }, - "frame": { - "x": 192, - "y": 626, - "w": 22, - "h": 16 - } - }, - { - "filename": "4263s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 16 - }, - "frame": { - "x": 214, - "y": 626, - "w": 22, - "h": 16 - } - }, - { - "filename": "824s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 15, - "h": 21 - }, - "frame": { - "x": 236, - "y": 635, - "w": 15, - "h": 21 - } - }, - { - "filename": "850s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 10 - }, - "frame": { - "x": 189, - "y": 642, - "w": 21, - "h": 10 - } - }, - { - "filename": "898", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 19, - "h": 22 - }, - "frame": { - "x": 190, - "y": 652, - "w": 19, - "h": 22 - } - }, - { - "filename": "891", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 22 - }, "frame": { "x": 191, - "y": 674, - "w": 18, - "h": 22 - } - }, - { - "filename": "891s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 22 - }, - "frame": { - "x": 194, - "y": 696, - "w": 18, - "h": 22 - } - }, - { - "filename": "4562", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, + "y": 552, "w": 22, "h": 16 - }, - "frame": { - "x": 210, - "y": 642, - "w": 22, - "h": 16 - } - }, - { - "filename": "898s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 19, - "h": 22 - }, - "frame": { - "x": 209, - "y": 658, - "w": 19, - "h": 22 - } - }, - { - "filename": "4562s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 16 - }, - "frame": { - "x": 209, - "y": 680, - "w": 22, - "h": 16 - } - }, - { - "filename": "6570", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 212, - "y": 696, - "w": 18, - "h": 22 } }, { @@ -6450,14 +6324,14 @@ "h": 20 }, "frame": { - "x": 230, - "y": 696, + "x": 192, + "y": 568, "w": 21, "h": 20 } }, { - "filename": "4222s", + "filename": "4144", "rotated": false, "trimmed": true, "sourceSize": { @@ -6467,14 +6341,14 @@ "spriteSourceSize": { "x": 9, "y": 5, - "w": 21, - "h": 20 + "w": 22, + "h": 19 }, "frame": { - "x": 230, - "y": 716, - "w": 21, - "h": 20 + "x": 213, + "y": 552, + "w": 22, + "h": 19 } }, { @@ -6492,35 +6366,14 @@ "h": 19 }, "frame": { - "x": 232, - "y": 656, + "x": 235, + "y": 552, "w": 19, "h": 19 } }, { - "filename": "848s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 21 - }, - "frame": { - "x": 231, - "y": 675, - "w": 18, - "h": 21 - } - }, - { - "filename": "4618s", + "filename": "4144s", "rotated": false, "trimmed": true, "sourceSize": { @@ -6529,99 +6382,15 @@ }, "spriteSourceSize": { "x": 9, - "y": 6, + "y": 5, "w": 22, - "h": 18 + "h": 19 }, "frame": { - "x": 194, - "y": 718, + "x": 213, + "y": 571, "w": 22, - "h": 18 - } - }, - { - "filename": "6100", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 14, - "h": 14 - }, - "frame": { - "x": 216, - "y": 718, - "w": 14, - "h": 14 - } - }, - { - "filename": "6058", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 99, - "y": 725, - "w": 21, - "h": 20 - } - }, - { - "filename": "6058s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 120, - "y": 725, - "w": 21, - "h": 20 - } - }, - { - "filename": "6570s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 141, - "y": 725, - "w": 18, - "h": 22 + "h": 19 } }, { @@ -6639,14 +6408,14 @@ "h": 19 }, "frame": { - "x": 159, - "y": 723, + "x": 235, + "y": 571, "w": 19, "h": 19 } }, { - "filename": "868", + "filename": "6570", "rotated": false, "trimmed": true, "sourceSize": { @@ -6656,18 +6425,18 @@ "spriteSourceSize": { "x": 12, "y": 6, - "w": 16, - "h": 17 + "w": 18, + "h": 22 }, "frame": { - "x": 178, - "y": 723, - "w": 16, - "h": 17 + "x": 193, + "y": 588, + "w": 18, + "h": 22 } }, { - "filename": "6215s", + "filename": "6570s", "rotated": false, "trimmed": true, "sourceSize": { @@ -6676,17 +6445,206 @@ }, "spriteSourceSize": { "x": 12, + "y": 6, + "w": 18, + "h": 22 + }, + "frame": { + "x": 193, + "y": 610, + "w": 18, + "h": 22 + } + }, + { + "filename": "848s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 18, + "h": 21 + }, + "frame": { + "x": 192, + "y": 632, + "w": 18, + "h": 21 + } + }, + { + "filename": "4222s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 5, + "w": 21, + "h": 20 + }, + "frame": { + "x": 211, + "y": 590, + "w": 21, + "h": 20 + } + }, + { + "filename": "4263s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, "y": 7, + "w": 22, + "h": 16 + }, + "frame": { + "x": 232, + "y": 590, + "w": 22, + "h": 16 + } + }, + { + "filename": "4562", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 22, + "h": 16 + }, + "frame": { + "x": 232, + "y": 606, + "w": 22, + "h": 16 + } + }, + { + "filename": "6058", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 21, + "h": 20 + }, + "frame": { + "x": 211, + "y": 610, + "w": 21, + "h": 20 + } + }, + { + "filename": "4562s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 22, + "h": 16 + }, + "frame": { + "x": 232, + "y": 622, + "w": 22, + "h": 16 + } + }, + { + "filename": "6705s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 6, + "w": 15, + "h": 22 + }, + "frame": { + "x": 177, + "y": 654, + "w": 15, + "h": 22 + } + }, + { + "filename": "877-hangry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, "w": 17, "h": 21 }, "frame": { - "x": 100, - "y": 745, + "x": 192, + "y": 653, "w": 17, "h": 21 } }, + { + "filename": "6058s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 21, + "h": 20 + }, + "frame": { + "x": 211, + "y": 630, + "w": 21, + "h": 20 + } + }, { "filename": "837", "rotated": false, @@ -6702,12 +6660,411 @@ "h": 17 }, "frame": { - "x": 117, - "y": 745, + "x": 232, + "y": 638, "w": 20, "h": 17 } }, + { + "filename": "824", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 4, + "w": 15, + "h": 21 + }, + "frame": { + "x": 176, + "y": 677, + "w": 15, + "h": 21 + } + }, + { + "filename": "824s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 4, + "w": 15, + "h": 21 + }, + "frame": { + "x": 180, + "y": 698, + "w": 15, + "h": 21 + } + }, + { + "filename": "877", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 17, + "h": 21 + }, + "frame": { + "x": 182, + "y": 719, + "w": 17, + "h": 21 + } + }, + { + "filename": "837s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 20, + "h": 17 + }, + "frame": { + "x": 210, + "y": 650, + "w": 20, + "h": 17 + } + }, + { + "filename": "821", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 19, + "h": 16 + }, + "frame": { + "x": 230, + "y": 655, + "w": 19, + "h": 16 + } + }, + { + "filename": "821s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 19, + "h": 16 + }, + "frame": { + "x": 209, + "y": 667, + "w": 19, + "h": 16 + } + }, + { + "filename": "852s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 17 + }, + "frame": { + "x": 228, + "y": 671, + "w": 19, + "h": 17 + } + }, + { + "filename": "829", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 17, + "h": 18 + }, + "frame": { + "x": 192, + "y": 674, + "w": 17, + "h": 18 + } + }, + { + "filename": "871", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 17 + }, + "frame": { + "x": 209, + "y": 683, + "w": 19, + "h": 17 + } + }, + { + "filename": "871s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 6, + "w": 19, + "h": 17 + }, + "frame": { + "x": 228, + "y": 688, + "w": 19, + "h": 17 + } + }, + { + "filename": "6100", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 13, + "y": 14, + "w": 14, + "h": 14 + }, + "frame": { + "x": 195, + "y": 692, + "w": 14, + "h": 14 + } + }, + { + "filename": "843", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 18, + "h": 19 + }, + "frame": { + "x": 209, + "y": 700, + "w": 18, + "h": 19 + } + }, + { + "filename": "843s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 18, + "h": 19 + }, + "frame": { + "x": 227, + "y": 705, + "w": 18, + "h": 19 + } + }, + { + "filename": "877s-hangry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 17, + "h": 21 + }, + "frame": { + "x": 199, + "y": 719, + "w": 17, + "h": 21 + } + }, + { + "filename": "829s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 17, + "h": 18 + }, + "frame": { + "x": 216, + "y": 724, + "w": 17, + "h": 18 + } + }, + { + "filename": "877s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 17, + "h": 21 + }, + "frame": { + "x": 233, + "y": 724, + "w": 17, + "h": 21 + } + }, + { + "filename": "6215", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 7, + "w": 17, + "h": 21 + }, + "frame": { + "x": 149, + "y": 745, + "w": 17, + "h": 21 + } + }, + { + "filename": "6215s", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 7, + "w": 17, + "h": 21 + }, + "frame": { + "x": 166, + "y": 740, + "w": 17, + "h": 21 + } + }, + { + "filename": "868", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 16, + "h": 17 + }, + "frame": { + "x": 183, + "y": 740, + "w": 16, + "h": 17 + } + }, { "filename": "4554", "rotated": false, @@ -6723,96 +7080,12 @@ "h": 15 }, "frame": { - "x": 100, - "y": 766, + "x": 199, + "y": 740, "w": 17, "h": 15 } }, - { - "filename": "4554s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 17, - "h": 15 - }, - "frame": { - "x": 105, - "y": 781, - "w": 17, - "h": 15 - } - }, - { - "filename": "843", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 18, - "h": 19 - }, - "frame": { - "x": 117, - "y": 762, - "w": 18, - "h": 19 - } - }, - { - "filename": "837s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 17 - }, - "frame": { - "x": 137, - "y": 747, - "w": 20, - "h": 17 - } - }, - { - "filename": "852s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 17 - }, - "frame": { - "x": 135, - "y": 764, - "w": 19, - "h": 17 - } - }, { "filename": "854", "rotated": false, @@ -6828,8 +7101,8 @@ "h": 14 }, "frame": { - "x": 122, - "y": 781, + "x": 216, + "y": 742, "w": 17, "h": 14 } @@ -6849,75 +7122,12 @@ "h": 14 }, "frame": { - "x": 139, - "y": 781, + "x": 233, + "y": 745, "w": 17, "h": 14 } }, - { - "filename": "871", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 17 - }, - "frame": { - "x": 159, - "y": 742, - "w": 19, - "h": 17 - } - }, - { - "filename": "843s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 18, - "h": 19 - }, - "frame": { - "x": 178, - "y": 740, - "w": 18, - "h": 19 - } - }, - { - "filename": "859s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 17, - "h": 20 - }, - "frame": { - "x": 196, - "y": 736, - "w": 17, - "h": 20 - } - }, { "filename": "840", "rotated": false, @@ -6933,35 +7143,14 @@ "h": 17 }, "frame": { - "x": 154, - "y": 764, + "x": 155, + "y": 766, "w": 15, "h": 17 } }, { - "filename": "871s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 17 - }, - "frame": { - "x": 169, - "y": 759, - "w": 19, - "h": 17 - } - }, - { - "filename": "872", + "filename": "4554s", "rotated": false, "trimmed": true, "sourceSize": { @@ -6970,36 +7159,15 @@ }, "spriteSourceSize": { "x": 11, - "y": 8, + "y": 7, "w": 17, - "h": 14 + "h": 15 }, "frame": { - "x": 156, - "y": 781, + "x": 155, + "y": 783, "w": 17, - "h": 14 - } - }, - { - "filename": "829", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 17, - "h": 18 - }, - "frame": { - "x": 173, - "y": 776, - "w": 17, - "h": 18 + "h": 15 } }, { @@ -7017,33 +7185,12 @@ "h": 17 }, "frame": { - "x": 188, - "y": 759, + "x": 170, + "y": 761, "w": 15, "h": 17 } }, - { - "filename": "829s", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 17, - "h": 18 - }, - "frame": { - "x": 190, - "y": 776, - "w": 17, - "h": 18 - } - }, { "filename": "868s", "rotated": false, @@ -7059,33 +7206,12 @@ "h": 17 }, "frame": { - "x": 203, - "y": 756, + "x": 185, + "y": 757, "w": 16, "h": 17 } }, - { - "filename": "6101", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 16, - "h": 16 - }, - "frame": { - "x": 207, - "y": 773, - "w": 16, - "h": 16 - } - }, { "filename": "6100s", "rotated": false, @@ -7101,12 +7227,33 @@ "h": 14 }, "frame": { - "x": 216, - "y": 732, + "x": 201, + "y": 755, "w": 14, "h": 14 } }, + { + "filename": "872", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 8, + "w": 17, + "h": 14 + }, + "frame": { + "x": 215, + "y": 756, + "w": 17, + "h": 14 + } + }, { "filename": "872s", "rotated": false, @@ -7122,12 +7269,33 @@ "h": 14 }, "frame": { - "x": 230, - "y": 736, + "x": 232, + "y": 759, "w": 17, "h": 14 } }, + { + "filename": "6101", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 12, + "w": 16, + "h": 16 + }, + "frame": { + "x": 172, + "y": 778, + "w": 16, + "h": 16 + } + }, { "filename": "6101s", "rotated": false, @@ -7143,8 +7311,8 @@ "h": 16 }, "frame": { - "x": 219, - "y": 750, + "x": 188, + "y": 774, "w": 16, "h": 16 } @@ -7155,6 +7323,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a5e8bbe68acd6fa6a6192a11dcd3d8dd:daf54543be918b4f74a0d25a8e946ce0:8190d2ecf16422e962cfb1a751b5e1fc$" + "smartupdate": "$TexturePacker:SmartUpdate:76f12e2db074120d5e364d7bac497210:e1ea47956220c560d403105ff317eb1a:8190d2ecf16422e962cfb1a751b5e1fc$" } } diff --git a/public/images/pokemon_icons_8.png b/public/images/pokemon_icons_8.png index 0d2ddcec2..70b4e280c 100644 Binary files a/public/images/pokemon_icons_8.png and b/public/images/pokemon_icons_8.png differ diff --git a/public/images/pokemon_icons_8v.json b/public/images/pokemon_icons_8v.json index 0f1b8c30a..f4af38d82 100644 --- a/public/images/pokemon_icons_8v.json +++ b/public/images/pokemon_icons_8v.json @@ -4,8 +4,8 @@ "image": "pokemon_icons_8v.png", "format": "RGBA8888", "size": { - "w": 196, - "h": 196 + "w": 203, + "h": 203 }, "scale": 1, "frames": [ @@ -44,11 +44,53 @@ "w": 40, "h": 30 }, + "frame": { + "x": 0, + "y": 30, + "w": 40, + "h": 30 + } + }, + { + "filename": "851_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 30 + }, "frame": { "x": 40, "y": 0, + "w": 39, + "h": 30 + } + }, + { + "filename": "851_3", + "rotated": false, + "trimmed": true, + "sourceSize": { "w": 40, "h": 30 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 39, + "h": 30 + }, + "frame": { + "x": 0, + "y": 60, + "w": 39, + "h": 30 } }, { @@ -66,8 +108,8 @@ "h": 30 }, "frame": { - "x": 80, - "y": 0, + "x": 40, + "y": 30, "w": 35, "h": 30 } @@ -87,7 +129,7 @@ "h": 30 }, "frame": { - "x": 115, + "x": 79, "y": 0, "w": 35, "h": 30 @@ -108,8 +150,8 @@ "h": 30 }, "frame": { - "x": 150, - "y": 0, + "x": 0, + "y": 90, "w": 31, "h": 30 } @@ -129,8 +171,8 @@ "h": 30 }, "frame": { - "x": 0, - "y": 30, + "x": 39, + "y": 60, "w": 31, "h": 30 } @@ -150,8 +192,8 @@ "h": 28 }, "frame": { - "x": 0, - "y": 60, + "x": 75, + "y": 30, "w": 32, "h": 28 } @@ -171,8 +213,8 @@ "h": 28 }, "frame": { - "x": 31, - "y": 30, + "x": 114, + "y": 0, "w": 32, "h": 28 } @@ -192,8 +234,8 @@ "h": 28 }, "frame": { - "x": 0, - "y": 88, + "x": 31, + "y": 90, "w": 32, "h": 28 } @@ -214,7 +256,7 @@ }, "frame": { "x": 0, - "y": 116, + "y": 120, "w": 28, "h": 27 } @@ -234,117 +276,12 @@ "h": 27 }, "frame": { - "x": 0, - "y": 143, + "x": 146, + "y": 0, "w": 28, "h": 27 } }, - { - "filename": "886_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 26 - }, - "frame": { - "x": 0, - "y": 170, - "w": 28, - "h": 26 - } - }, - { - "filename": "900_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 27, - "h": 27 - }, - "frame": { - "x": 28, - "y": 116, - "w": 27, - "h": 27 - } - }, - { - "filename": "900_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 27, - "h": 27 - }, - "frame": { - "x": 28, - "y": 143, - "w": 27, - "h": 27 - } - }, - { - "filename": "886_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 26 - }, - "frame": { - "x": 28, - "y": 170, - "w": 28, - "h": 26 - } - }, - { - "filename": "886_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 26 - }, - "frame": { - "x": 32, - "y": 58, - "w": 28, - "h": 26 - } - }, { "filename": "4078_2", "rotated": false, @@ -360,8 +297,8 @@ "h": 25 }, "frame": { - "x": 32, - "y": 84, + "x": 174, + "y": 0, "w": 29, "h": 25 } @@ -381,14 +318,14 @@ "h": 25 }, "frame": { - "x": 60, - "y": 58, + "x": 174, + "y": 25, "w": 29, "h": 25 } }, { - "filename": "6571_2", + "filename": "886_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -397,19 +334,19 @@ }, "spriteSourceSize": { "x": 6, - "y": 4, - "w": 27, - "h": 25 + "y": 2, + "w": 28, + "h": 26 }, "frame": { - "x": 63, - "y": 30, - "w": 27, - "h": 25 + "x": 0, + "y": 147, + "w": 28, + "h": 26 } }, { - "filename": "6571_3", + "filename": "886_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -418,19 +355,19 @@ }, "spriteSourceSize": { "x": 6, - "y": 4, - "w": 27, - "h": 25 + "y": 2, + "w": 28, + "h": 26 }, "frame": { - "x": 55, - "y": 109, - "w": 27, - "h": 25 + "x": 0, + "y": 173, + "w": 28, + "h": 26 } }, { - "filename": "873_1", + "filename": "886_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -439,15 +376,15 @@ }, "spriteSourceSize": { "x": 6, - "y": 3, - "w": 27, - "h": 24 + "y": 2, + "w": 28, + "h": 26 }, "frame": { - "x": 61, - "y": 83, - "w": 27, - "h": 24 + "x": 146, + "y": 27, + "w": 28, + "h": 26 } }, { @@ -465,8 +402,8 @@ "h": 27 }, "frame": { - "x": 55, - "y": 134, + "x": 63, + "y": 90, "w": 24, "h": 27 } @@ -486,14 +423,14 @@ "h": 27 }, "frame": { - "x": 56, - "y": 161, + "x": 107, + "y": 30, "w": 24, "h": 27 } }, { - "filename": "873_2", + "filename": "900_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -502,19 +439,19 @@ }, "spriteSourceSize": { "x": 6, - "y": 3, + "y": 2, "w": 27, - "h": 24 + "h": 27 }, "frame": { - "x": 79, - "y": 134, + "x": 70, + "y": 60, "w": 27, - "h": 24 + "h": 27 } }, { - "filename": "873_3", + "filename": "900_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -523,204 +460,15 @@ }, "spriteSourceSize": { "x": 6, - "y": 3, + "y": 2, "w": 27, - "h": 24 + "h": 27 }, "frame": { - "x": 82, - "y": 107, + "x": 97, + "y": 58, "w": 27, - "h": 24 - } - }, - { - "filename": "4077_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 23 - }, - "frame": { - "x": 88, - "y": 83, - "w": 26, - "h": 23 - } - }, - { - "filename": "4077_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 23 - }, - "frame": { - "x": 89, - "y": 55, - "w": 26, - "h": 23 - } - }, - { - "filename": "857_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 90, - "y": 30, - "w": 24, - "h": 24 - } - }, - { - "filename": "857_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 114, - "y": 30, - "w": 24, - "h": 24 - } - }, - { - "filename": "4264_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 22 - }, - "frame": { - "x": 80, - "y": 158, - "w": 24, - "h": 22 - } - }, - { - "filename": "872_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 80, - "y": 180, - "w": 19, - "h": 16 - } - }, - { - "filename": "872_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 99, - "y": 180, - "w": 19, - "h": 16 - } - }, - { - "filename": "4264_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 22 - }, - "frame": { - "x": 104, - "y": 158, - "w": 24, - "h": 22 - } - }, - { - "filename": "872_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 118, - "y": 180, - "w": 19, - "h": 16 + "h": 27 } }, { @@ -738,8 +486,8 @@ "h": 25 }, "frame": { - "x": 106, - "y": 131, + "x": 87, + "y": 87, "w": 21, "h": 25 } @@ -759,8 +507,8 @@ "h": 25 }, "frame": { - "x": 109, - "y": 106, + "x": 108, + "y": 85, "w": 21, "h": 25 } @@ -780,14 +528,14 @@ "h": 25 }, "frame": { - "x": 127, - "y": 131, + "x": 124, + "y": 57, "w": 21, "h": 25 } }, { - "filename": "885_1", + "filename": "6571_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -795,37 +543,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 19 + "x": 6, + "y": 4, + "w": 27, + "h": 25 }, "frame": { - "x": 128, - "y": 156, - "w": 26, - "h": 19 - } - }, - { - "filename": "885_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 19 - }, - "frame": { - "x": 137, - "y": 175, - "w": 26, - "h": 19 + "x": 145, + "y": 53, + "w": 27, + "h": 25 } }, { @@ -843,14 +570,77 @@ "h": 25 }, "frame": { - "x": 114, - "y": 78, + "x": 129, + "y": 82, "w": 21, "h": 25 } }, { - "filename": "885_3", + "filename": "6571_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 27, + "h": 25 + }, + "frame": { + "x": 150, + "y": 78, + "w": 27, + "h": 25 + } + }, + { + "filename": "4077_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 23 + }, + "frame": { + "x": 177, + "y": 50, + "w": 26, + "h": 23 + } + }, + { + "filename": "4077_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 3, + "w": 26, + "h": 23 + }, + "frame": { + "x": 177, + "y": 73, + "w": 26, + "h": 23 + } + }, + { + "filename": "885_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -864,14 +654,14 @@ "h": 19 }, "frame": { - "x": 130, - "y": 103, + "x": 177, + "y": 96, "w": 26, "h": 19 } }, { - "filename": "6570_2", + "filename": "873_1", "rotated": false, "trimmed": true, "sourceSize": { @@ -879,20 +669,20 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 20, + "x": 6, + "y": 3, + "w": 27, "h": 24 }, "frame": { - "x": 148, - "y": 122, - "w": 20, + "x": 150, + "y": 103, + "w": 27, "h": 24 } }, { - "filename": "6570_3", + "filename": "885_2", "rotated": false, "trimmed": true, "sourceSize": { @@ -900,18 +690,144 @@ "h": 30 }, "spriteSourceSize": { - "x": 11, + "x": 7, "y": 5, - "w": 20, + "w": 26, + "h": 19 + }, + "frame": { + "x": 177, + "y": 115, + "w": 26, + "h": 19 + } + }, + { + "filename": "873_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, "h": 24 }, "frame": { - "x": 154, - "y": 146, - "w": 20, + "x": 31, + "y": 118, + "w": 27, "h": 24 } }, + { + "filename": "873_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 3, + "w": 27, + "h": 24 + }, + "frame": { + "x": 28, + "y": 142, + "w": 27, + "h": 24 + } + }, + { + "filename": "857_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 24, + "h": 24 + }, + "frame": { + "x": 28, + "y": 166, + "w": 24, + "h": 24 + } + }, + { + "filename": "850_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 23, + "h": 12 + }, + "frame": { + "x": 28, + "y": 190, + "w": 23, + "h": 12 + } + }, + { + "filename": "857_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 24, + "h": 24 + }, + "frame": { + "x": 58, + "y": 118, + "w": 24, + "h": 24 + } + }, + { + "filename": "4264_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 24, + "h": 22 + }, + "frame": { + "x": 55, + "y": 142, + "w": 24, + "h": 22 + } + }, { "filename": "6549_2", "rotated": false, @@ -927,203 +843,35 @@ "h": 25 }, "frame": { - "x": 163, - "y": 170, - "w": 18, - "h": 25 - } - }, - { - "filename": "877-hangry_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 115, - "y": 54, - "w": 19, - "h": 23 - } - }, - { - "filename": "877-hangry_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 134, - "y": 54, - "w": 19, - "h": 23 - } - }, - { - "filename": "877-hangry_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 138, - "y": 30, - "w": 19, - "h": 23 - } - }, - { - "filename": "6549_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 25 - }, - "frame": { - "x": 135, - "y": 77, - "w": 18, - "h": 25 - } - }, - { - "filename": "877_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 153, - "y": 53, - "w": 19, - "h": 23 - } - }, - { - "filename": "877_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 157, - "y": 30, - "w": 19, - "h": 23 - } - }, - { - "filename": "877_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 153, - "y": 76, - "w": 19, - "h": 23 - } - }, - { - "filename": "4263_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 24, - "h": 18 - }, - "frame": { - "x": 156, - "y": 99, - "w": 24, - "h": 18 - } - }, - { - "filename": "4263_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 24, - "h": 18 - }, - "frame": { - "x": 168, + "x": 82, "y": 117, + "w": 18, + "h": 25 + } + }, + { + "filename": "4264_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, "w": 24, - "h": 18 + "h": 22 + }, + "frame": { + "x": 79, + "y": 142, + "w": 24, + "h": 22 } }, { - "filename": "6705_2", + "filename": "885_3", "rotated": false, "trimmed": true, "sourceSize": { @@ -1131,37 +879,16 @@ "h": 30 }, "spriteSourceSize": { - "x": 12, + "x": 7, "y": 5, - "w": 17, - "h": 24 + "w": 26, + "h": 19 }, "frame": { - "x": 174, - "y": 135, - "w": 17, - "h": 24 - } - }, - { - "filename": "6705_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 17, - "h": 24 - }, - "frame": { - "x": 172, - "y": 53, - "w": 17, - "h": 24 + "x": 55, + "y": 164, + "w": 26, + "h": 19 } }, { @@ -1179,8 +906,8 @@ "h": 20 }, "frame": { - "x": 176, - "y": 30, + "x": 52, + "y": 183, "w": 19, "h": 20 } @@ -1200,11 +927,368 @@ "h": 20 }, "frame": { - "x": 172, - "y": 77, + "x": 71, + "y": 183, "w": 19, "h": 20 } + }, + { + "filename": "4263_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 6, + "w": 24, + "h": 18 + }, + "frame": { + "x": 81, + "y": 164, + "w": 24, + "h": 18 + } + }, + { + "filename": "4263_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 6, + "w": 24, + "h": 18 + }, + "frame": { + "x": 90, + "y": 182, + "w": 24, + "h": 18 + } + }, + { + "filename": "6549_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 4, + "w": 18, + "h": 25 + }, + "frame": { + "x": 100, + "y": 112, + "w": 18, + "h": 25 + } + }, + { + "filename": "6570_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 103, + "y": 137, + "w": 20, + "h": 24 + } + }, + { + "filename": "6570_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 5, + "w": 20, + "h": 24 + }, + "frame": { + "x": 118, + "y": 110, + "w": 20, + "h": 24 + } + }, + { + "filename": "6705_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 17, + "h": 24 + }, + "frame": { + "x": 123, + "y": 134, + "w": 17, + "h": 24 + } + }, + { + "filename": "872_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 19, + "h": 16 + }, + "frame": { + "x": 105, + "y": 161, + "w": 19, + "h": 16 + } + }, + { + "filename": "877-hangry_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 124, + "y": 158, + "w": 19, + "h": 23 + } + }, + { + "filename": "6705_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 5, + "w": 17, + "h": 24 + }, + "frame": { + "x": 140, + "y": 134, + "w": 17, + "h": 24 + } + }, + { + "filename": "877-hangry_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 143, + "y": 158, + "w": 19, + "h": 23 + } + }, + { + "filename": "877-hangry_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 157, + "y": 127, + "w": 19, + "h": 23 + } + }, + { + "filename": "850_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 23, + "h": 12 + }, + "frame": { + "x": 176, + "y": 134, + "w": 23, + "h": 12 + } + }, + { + "filename": "877_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 162, + "y": 150, + "w": 19, + "h": 23 + } + }, + { + "filename": "877_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 181, + "y": 146, + "w": 19, + "h": 23 + } + }, + { + "filename": "872_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 19, + "h": 16 + }, + "frame": { + "x": 162, + "y": 173, + "w": 19, + "h": 16 + } + }, + { + "filename": "877_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 19, + "h": 23 + }, + "frame": { + "x": 181, + "y": 169, + "w": 19, + "h": 23 + } + }, + { + "filename": "872_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 19, + "h": 16 + }, + "frame": { + "x": 114, + "y": 181, + "w": 19, + "h": 16 + } } ] } @@ -1212,6 +1296,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:cd142ac26d3ff4d777ac48395f6c0967:80a80b33bb322d66e0dec19a53a88db9:ec5f05e7f30cd98f74db0c2326109fd3$" + "smartupdate": "$TexturePacker:SmartUpdate:8e75e5f92e697e744733262699ff9e55:55db782b3e64029bab811bdeb9677cdf:ec5f05e7f30cd98f74db0c2326109fd3$" } } diff --git a/public/images/pokemon_icons_8v.png b/public/images/pokemon_icons_8v.png index 2a46b3af7..bf3fe4528 100644 Binary files a/public/images/pokemon_icons_8v.png and b/public/images/pokemon_icons_8v.png differ diff --git a/public/images/pokemon_icons_9v.json b/public/images/pokemon_icons_9v.json index ee5bb9419..6817a30a7 100644 --- a/public/images/pokemon_icons_9v.json +++ b/public/images/pokemon_icons_9v.json @@ -4,1082 +4,11 @@ "image": "pokemon_icons_9v.png", "format": "RGBA8888", "size": { - "w": 193, - "h": 193 + "w": 204, + "h": 204 }, "scale": 1, "frames": [ - { - "filename": "919_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 12, - "w": 18, - "h": 17 - }, - "frame": { - "x": 0, - "y": 0, - "w": 18, - "h": 17 - } - }, - { - "filename": "919_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 12, - "w": 18, - "h": 17 - }, - "frame": { - "x": 18, - "y": 0, - "w": 18, - "h": 17 - } - }, - { - "filename": "919_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 12, - "w": 18, - "h": 17 - }, - "frame": { - "x": 36, - "y": 0, - "w": 18, - "h": 17 - } - }, - { - "filename": "932_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 21 - }, - "frame": { - "x": 54, - "y": 0, - "w": 20, - "h": 21 - } - }, - { - "filename": "932_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 21 - }, - "frame": { - "x": 74, - "y": 0, - "w": 20, - "h": 21 - } - }, - { - "filename": "967_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 21 - }, - "frame": { - "x": 94, - "y": 0, - "w": 22, - "h": 21 - } - }, - { - "filename": "967_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 21 - }, - "frame": { - "x": 116, - "y": 0, - "w": 22, - "h": 21 - } - }, - { - "filename": "924_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 31, - "h": 22 - }, - "frame": { - "x": 138, - "y": 0, - "w": 31, - "h": 22 - } - }, - { - "filename": "1004_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 22 - }, - "frame": { - "x": 169, - "y": 0, - "w": 23, - "h": 22 - } - }, - { - "filename": "924_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 31, - "h": 22 - }, - "frame": { - "x": 0, - "y": 17, - "w": 31, - "h": 22 - } - }, - { - "filename": "1004_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 22 - }, - "frame": { - "x": 31, - "y": 17, - "w": 23, - "h": 22 - } - }, - { - "filename": "924_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 31, - "h": 22 - }, - "frame": { - "x": 54, - "y": 21, - "w": 31, - "h": 22 - } - }, - { - "filename": "925-three_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 31, - "h": 22 - }, - "frame": { - "x": 85, - "y": 21, - "w": 31, - "h": 22 - } - }, - { - "filename": "925-three_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 31, - "h": 22 - }, - "frame": { - "x": 116, - "y": 22, - "w": 31, - "h": 22 - } - }, - { - "filename": "925-three_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 31, - "h": 22 - }, - "frame": { - "x": 147, - "y": 22, - "w": 31, - "h": 22 - } - }, - { - "filename": "935_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 15, - "h": 23 - }, - "frame": { - "x": 178, - "y": 22, - "w": 15, - "h": 23 - } - }, - { - "filename": "933_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 27, - "h": 23 - }, - "frame": { - "x": 0, - "y": 39, - "w": 27, - "h": 23 - } - }, - { - "filename": "933_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 27, - "h": 23 - }, - "frame": { - "x": 27, - "y": 39, - "w": 27, - "h": 23 - } - }, - { - "filename": "948_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 23 - }, - "frame": { - "x": 54, - "y": 43, - "w": 18, - "h": 23 - } - }, - { - "filename": "948_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 23 - }, - "frame": { - "x": 72, - "y": 43, - "w": 18, - "h": 23 - } - }, - { - "filename": "920_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 25 - }, - "frame": { - "x": 90, - "y": 43, - "w": 24, - "h": 25 - } - }, - { - "filename": "925-four_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 114, - "y": 44, - "w": 31, - "h": 24 - } - }, - { - "filename": "925-four_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 145, - "y": 44, - "w": 31, - "h": 24 - } - }, - { - "filename": "973_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 1, - "w": 17, - "h": 28 - }, - "frame": { - "x": 176, - "y": 45, - "w": 17, - "h": 28 - } - }, - { - "filename": "925-four_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 31, - "h": 24 - }, - "frame": { - "x": 0, - "y": 62, - "w": 31, - "h": 24 - } - }, - { - "filename": "949_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 27 - }, - "frame": { - "x": 31, - "y": 62, - "w": 22, - "h": 27 - } - }, - { - "filename": "920_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 25 - }, - "frame": { - "x": 53, - "y": 66, - "w": 24, - "h": 25 - } - }, - { - "filename": "920_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 25 - }, - "frame": { - "x": 77, - "y": 68, - "w": 24, - "h": 25 - } - }, - { - "filename": "987_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 26, - "h": 26 - }, - "frame": { - "x": 101, - "y": 68, - "w": 26, - "h": 26 - } - }, - { - "filename": "987_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 26, - "h": 26 - }, - "frame": { - "x": 127, - "y": 68, - "w": 26, - "h": 26 - } - }, - { - "filename": "949_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 27 - }, - "frame": { - "x": 153, - "y": 68, - "w": 22, - "h": 27 - } - }, - { - "filename": "973_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 1, - "w": 17, - "h": 28 - }, - "frame": { - "x": 175, - "y": 73, - "w": 17, - "h": 28 - } - }, - { - "filename": "987_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 26, - "h": 26 - }, - "frame": { - "x": 0, - "y": 86, - "w": 26, - "h": 26 - } - }, - { - "filename": "962_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 27 - }, - "frame": { - "x": 26, - "y": 89, - "w": 21, - "h": 27 - } - }, - { - "filename": "962_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 27 - }, - "frame": { - "x": 47, - "y": 91, - "w": 21, - "h": 27 - } - }, - { - "filename": "962_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 27 - }, - "frame": { - "x": 68, - "y": 93, - "w": 21, - "h": 27 - } - }, - { - "filename": "973_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 1, - "w": 17, - "h": 28 - }, - "frame": { - "x": 89, - "y": 94, - "w": 17, - "h": 28 - } - }, - { - "filename": "936_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 22, - "h": 29 - }, - "frame": { - "x": 106, - "y": 94, - "w": 22, - "h": 29 - } - }, - { - "filename": "1000_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 128, - "y": 94, - "w": 24, - "h": 29 - } - }, - { - "filename": "937_9", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 31, - "h": 29 - }, - "frame": { - "x": 152, - "y": 101, - "w": 31, - "h": 29 - } - }, - { - "filename": "1000_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 0, - "y": 112, - "w": 24, - "h": 29 - } - }, - { - "filename": "1000_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 24, - "y": 118, - "w": 24, - "h": 29 - } - }, - { - "filename": "934_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 48, - "y": 120, - "w": 29, - "h": 30 - } - }, - { - "filename": "934_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 77, - "y": 122, - "w": 29, - "h": 30 - } - }, - { - "filename": "988_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 28, - "h": 30 - }, - "frame": { - "x": 106, - "y": 123, - "w": 28, - "h": 30 - } - }, - { - "filename": "988_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 28, - "h": 30 - }, - "frame": { - "x": 134, - "y": 130, - "w": 28, - "h": 30 - } - }, - { - "filename": "994_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 162, - "y": 130, - "w": 29, - "h": 30 - } - }, - { - "filename": "999_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 30 - }, - "frame": { - "x": 0, - "y": 141, - "w": 24, - "h": 30 - } - }, - { - "filename": "999_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 30 - }, - "frame": { - "x": 24, - "y": 147, - "w": 24, - "h": 30 - } - }, - { - "filename": "994_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 48, - "y": 150, - "w": 29, - "h": 30 - } - }, - { - "filename": "999_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 30 - }, - "frame": { - "x": 77, - "y": 152, - "w": 24, - "h": 30 - } - }, { "filename": "1001_2", "rotated": false, @@ -1095,8 +24,8 @@ "h": 30 }, "frame": { - "x": 101, - "y": 153, + "x": 0, + "y": 0, "w": 32, "h": 30 } @@ -1116,11 +45,1229 @@ "h": 30 }, "frame": { - "x": 133, - "y": 160, + "x": 0, + "y": 30, "w": 32, "h": 30 } + }, + { + "filename": "937_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 31, + "h": 29 + }, + "frame": { + "x": 32, + "y": 0, + "w": 31, + "h": 29 + } + }, + { + "filename": "937_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 31, + "h": 29 + }, + "frame": { + "x": 0, + "y": 60, + "w": 31, + "h": 29 + } + }, + { + "filename": "937_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 31, + "h": 29 + }, + "frame": { + "x": 32, + "y": 29, + "w": 31, + "h": 29 + } + }, + { + "filename": "937_9", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 31, + "h": 29 + }, + "frame": { + "x": 63, + "y": 0, + "w": 31, + "h": 29 + } + }, + { + "filename": "934_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 0, + "w": 29, + "h": 30 + }, + "frame": { + "x": 0, + "y": 89, + "w": 29, + "h": 30 + } + }, + { + "filename": "934_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 5, + "y": 0, + "w": 29, + "h": 30 + }, + "frame": { + "x": 0, + "y": 119, + "w": 29, + "h": 30 + } + }, + { + "filename": "994_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 29, + "h": 30 + }, + "frame": { + "x": 0, + "y": 149, + "w": 29, + "h": 30 + } + }, + { + "filename": "920_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 24, + "h": 25 + }, + "frame": { + "x": 0, + "y": 179, + "w": 24, + "h": 25 + } + }, + { + "filename": "994_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 29, + "h": 30 + }, + "frame": { + "x": 63, + "y": 29, + "w": 29, + "h": 30 + } + }, + { + "filename": "988_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 28, + "h": 30 + }, + "frame": { + "x": 94, + "y": 0, + "w": 28, + "h": 30 + } + }, + { + "filename": "988_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 28, + "h": 30 + }, + "frame": { + "x": 122, + "y": 0, + "w": 28, + "h": 30 + } + }, + { + "filename": "925-four_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 31, + "h": 24 + }, + "frame": { + "x": 150, + "y": 0, + "w": 31, + "h": 24 + } + }, + { + "filename": "1004_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 23, + "h": 22 + }, + "frame": { + "x": 181, + "y": 0, + "w": 23, + "h": 22 + } + }, + { + "filename": "920_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 24, + "h": 25 + }, + "frame": { + "x": 24, + "y": 179, + "w": 24, + "h": 25 + } + }, + { + "filename": "925-four_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 31, + "h": 24 + }, + "frame": { + "x": 92, + "y": 30, + "w": 31, + "h": 24 + } + }, + { + "filename": "925-four_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 31, + "h": 24 + }, + "frame": { + "x": 123, + "y": 30, + "w": 31, + "h": 24 + } + }, + { + "filename": "999_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 30 + }, + "frame": { + "x": 154, + "y": 24, + "w": 24, + "h": 30 + } + }, + { + "filename": "987_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 26, + "h": 26 + }, + "frame": { + "x": 178, + "y": 24, + "w": 26, + "h": 26 + } + }, + { + "filename": "987_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 26, + "h": 26 + }, + "frame": { + "x": 178, + "y": 50, + "w": 26, + "h": 26 + } + }, + { + "filename": "924_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 31, + "h": 22 + }, + "frame": { + "x": 92, + "y": 54, + "w": 31, + "h": 22 + } + }, + { + "filename": "924_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 31, + "h": 22 + }, + "frame": { + "x": 123, + "y": 54, + "w": 31, + "h": 22 + } + }, + { + "filename": "920_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 24, + "h": 25 + }, + "frame": { + "x": 154, + "y": 54, + "w": 24, + "h": 25 + } + }, + { + "filename": "987_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 3, + "w": 26, + "h": 26 + }, + "frame": { + "x": 178, + "y": 76, + "w": 26, + "h": 26 + } + }, + { + "filename": "924_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 31, + "h": 22 + }, + "frame": { + "x": 32, + "y": 58, + "w": 31, + "h": 22 + } + }, + { + "filename": "933_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 27, + "h": 23 + }, + "frame": { + "x": 63, + "y": 59, + "w": 27, + "h": 23 + } + }, + { + "filename": "925-three_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 31, + "h": 22 + }, + "frame": { + "x": 31, + "y": 80, + "w": 31, + "h": 22 + } + }, + { + "filename": "999_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 30 + }, + "frame": { + "x": 29, + "y": 102, + "w": 24, + "h": 30 + } + }, + { + "filename": "999_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 30 + }, + "frame": { + "x": 29, + "y": 132, + "w": 24, + "h": 30 + } + }, + { + "filename": "919_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 12, + "w": 18, + "h": 17 + }, + "frame": { + "x": 29, + "y": 162, + "w": 18, + "h": 17 + } + }, + { + "filename": "925-three_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 31, + "h": 22 + }, + "frame": { + "x": 62, + "y": 82, + "w": 31, + "h": 22 + } + }, + { + "filename": "925-three_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 4, + "y": 7, + "w": 31, + "h": 22 + }, + "frame": { + "x": 93, + "y": 76, + "w": 31, + "h": 22 + } + }, + { + "filename": "933_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 27, + "h": 23 + }, + "frame": { + "x": 124, + "y": 76, + "w": 27, + "h": 23 + } + }, + { + "filename": "1000_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 29 + }, + "frame": { + "x": 53, + "y": 104, + "w": 24, + "h": 29 + } + }, + { + "filename": "1000_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 29 + }, + "frame": { + "x": 53, + "y": 133, + "w": 24, + "h": 29 + } + }, + { + "filename": "936_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 22, + "h": 29 + }, + "frame": { + "x": 77, + "y": 104, + "w": 22, + "h": 29 + } + }, + { + "filename": "936_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 22, + "h": 29 + }, + "frame": { + "x": 77, + "y": 133, + "w": 22, + "h": 29 + } + }, + { + "filename": "1000_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 24, + "h": 29 + }, + "frame": { + "x": 99, + "y": 98, + "w": 24, + "h": 29 + } + }, + { + "filename": "936_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 0, + "w": 22, + "h": 29 + }, + "frame": { + "x": 99, + "y": 127, + "w": 22, + "h": 29 + } + }, + { + "filename": "949_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 22, + "h": 27 + }, + "frame": { + "x": 123, + "y": 99, + "w": 22, + "h": 27 + } + }, + { + "filename": "1004_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 8, + "y": 7, + "w": 23, + "h": 22 + }, + "frame": { + "x": 151, + "y": 79, + "w": 23, + "h": 22 + } + }, + { + "filename": "949_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 22, + "h": 27 + }, + "frame": { + "x": 145, + "y": 101, + "w": 22, + "h": 27 + } + }, + { + "filename": "919_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 12, + "w": 18, + "h": 17 + }, + "frame": { + "x": 47, + "y": 162, + "w": 18, + "h": 17 + } + }, + { + "filename": "948_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 18, + "h": 23 + }, + "frame": { + "x": 48, + "y": 179, + "w": 18, + "h": 23 + } + }, + { + "filename": "919_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 12, + "w": 18, + "h": 17 + }, + "frame": { + "x": 65, + "y": 162, + "w": 18, + "h": 17 + } + }, + { + "filename": "948_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 6, + "w": 18, + "h": 23 + }, + "frame": { + "x": 66, + "y": 179, + "w": 18, + "h": 23 + } + }, + { + "filename": "962_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 21, + "h": 27 + }, + "frame": { + "x": 167, + "y": 102, + "w": 21, + "h": 27 + } + }, + { + "filename": "935_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 15, + "h": 23 + }, + "frame": { + "x": 188, + "y": 102, + "w": 15, + "h": 23 + } + }, + { + "filename": "973_1", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 1, + "w": 17, + "h": 28 + }, + "frame": { + "x": 121, + "y": 127, + "w": 17, + "h": 28 + } + }, + { + "filename": "962_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 21, + "h": 27 + }, + "frame": { + "x": 138, + "y": 128, + "w": 21, + "h": 27 + } + }, + { + "filename": "962_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 2, + "w": 21, + "h": 27 + }, + "frame": { + "x": 159, + "y": 129, + "w": 21, + "h": 27 + } + }, + { + "filename": "973_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 1, + "w": 17, + "h": 28 + }, + "frame": { + "x": 180, + "y": 129, + "w": 17, + "h": 28 + } + }, + { + "filename": "967_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 22, + "h": 21 + }, + "frame": { + "x": 99, + "y": 156, + "w": 22, + "h": 21 + } + }, + { + "filename": "967_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 9, + "y": 8, + "w": 22, + "h": 21 + }, + "frame": { + "x": 121, + "y": 155, + "w": 22, + "h": 21 + } + }, + { + "filename": "935_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 15, + "h": 23 + }, + "frame": { + "x": 84, + "y": 162, + "w": 15, + "h": 23 + } + }, + { + "filename": "935_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 12, + "y": 6, + "w": 15, + "h": 23 + }, + "frame": { + "x": 143, + "y": 155, + "w": 15, + "h": 23 + } + }, + { + "filename": "932_2", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 20, + "h": 21 + }, + "frame": { + "x": 158, + "y": 156, + "w": 20, + "h": 21 + } + }, + { + "filename": "932_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 20, + "h": 21 + }, + "frame": { + "x": 178, + "y": 157, + "w": 20, + "h": 21 + } + }, + { + "filename": "973_3", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 40, + "h": 30 + }, + "spriteSourceSize": { + "x": 11, + "y": 1, + "w": 17, + "h": 28 + }, + "frame": { + "x": 121, + "y": 176, + "w": 17, + "h": 28 + } } ] } @@ -1128,6 +1275,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:050f7edcd10f98c70b4b9fc98e69c0d6:03ae662454323b748908e92fa92433dc:3ec5c0bc286c296cfb7fa30a8b06f3da$" + "smartupdate": "$TexturePacker:SmartUpdate:4b71cf0612d22372033807aba7026391:ccaa2f3365fdc125ee93279c465f951f:3ec5c0bc286c296cfb7fa30a8b06f3da$" } } diff --git a/public/images/pokemon_icons_9v.png b/public/images/pokemon_icons_9v.png index 256ec26d3..b3cf588da 100644 Binary files a/public/images/pokemon_icons_9v.png and b/public/images/pokemon_icons_9v.png differ diff --git a/public/images/ui/achv_bar_4.png b/public/images/ui/achv_bar_4.png index cc06af916..f14026c7a 100644 Binary files a/public/images/ui/achv_bar_4.png and b/public/images/ui/achv_bar_4.png differ diff --git a/public/images/ui/achv_bar_5.png b/public/images/ui/achv_bar_5.png new file mode 100644 index 000000000..cc06af916 Binary files /dev/null and b/public/images/ui/achv_bar_5.png differ diff --git a/public/images/ui/candy.png b/public/images/ui/candy.png new file mode 100644 index 000000000..6b633a195 Binary files /dev/null and b/public/images/ui/candy.png differ diff --git a/public/images/ui/candy_overlay.png b/public/images/ui/candy_overlay.png new file mode 100644 index 000000000..835cfccb0 Binary files /dev/null and b/public/images/ui/candy_overlay.png differ diff --git a/public/images/ui/legacy/achv_bar_4.png b/public/images/ui/legacy/achv_bar_4.png index dae7a30de..d52fbfd05 100644 Binary files a/public/images/ui/legacy/achv_bar_4.png and b/public/images/ui/legacy/achv_bar_4.png differ diff --git a/public/images/ui/legacy/achv_bar_5.png b/public/images/ui/legacy/achv_bar_5.png new file mode 100644 index 000000000..dae7a30de Binary files /dev/null and b/public/images/ui/legacy/achv_bar_5.png differ diff --git a/public/images/ui/legacy/candy.png b/public/images/ui/legacy/candy.png new file mode 100644 index 000000000..6b633a195 Binary files /dev/null and b/public/images/ui/legacy/candy.png differ diff --git a/public/images/ui/legacy/candy_overlay.png b/public/images/ui/legacy/candy_overlay.png new file mode 100644 index 000000000..835cfccb0 Binary files /dev/null and b/public/images/ui/legacy/candy_overlay.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_boss_stats.png b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png new file mode 100644 index 000000000..94c9f2a18 Binary files /dev/null and b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_enemy_mini_stats.png b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png new file mode 100644 index 000000000..eb32e6941 Binary files /dev/null and b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_player_mini_stats.png b/public/images/ui/legacy/pbinfo_player_mini_stats.png new file mode 100644 index 000000000..dd2b7e65b Binary files /dev/null and b/public/images/ui/legacy/pbinfo_player_mini_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_player_stats.png b/public/images/ui/legacy/pbinfo_player_stats.png new file mode 100644 index 000000000..078248624 Binary files /dev/null and b/public/images/ui/legacy/pbinfo_player_stats.png differ diff --git a/public/images/ui/legacy/pbinfo_stat.json b/public/images/ui/legacy/pbinfo_stat.json new file mode 100644 index 000000000..b7da47fc1 --- /dev/null +++ b/public/images/ui/legacy/pbinfo_stat.json @@ -0,0 +1,188 @@ +{ + "textures": [ + { + "image": "pbinfo_stat.png", + "format": "RGBA8888", + "size": { + "w": 112, + "h": 6 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 0, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 18, + "h": 6 + }, + "frame": { + "x": 18, + "y": 0, + "w": 18, + "h": 6 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 16, + "h": 6 + }, + "frame": { + "x": 36, + "y": 0, + "w": 16, + "h": 6 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 52, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 64, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 76, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 88, + "y": 0, + "w": 12, + "h": 6 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 1, + "y": 2, + "w": 12, + "h": 6 + }, + "frame": { + "x": 100, + "y": 0, + "w": 12, + "h": 6 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/legacy/pbinfo_stat.png b/public/images/ui/legacy/pbinfo_stat.png new file mode 100644 index 000000000..62ec37587 Binary files /dev/null and b/public/images/ui/legacy/pbinfo_stat.png differ diff --git a/public/images/ui/legacy/pbinfo_stat_numbers.json b/public/images/ui/legacy/pbinfo_stat_numbers.json new file mode 100644 index 000000000..fa7d75799 --- /dev/null +++ b/public/images/ui/legacy/pbinfo_stat_numbers.json @@ -0,0 +1,293 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_numbers.png", + "format": "RGBA8888", + "size": { + "w": 117, + "h": 8 + }, + "scale": 1, + "frames": [ + { + "filename": "1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "2", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 9, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "3", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 18, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "4", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 27, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "5", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 36, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "6", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 45, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 54, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-2", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 63, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-3", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 72, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-4", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 81, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-5", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 90, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-6", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 99, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "0", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 108, + "y": 0, + "w": 9, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:1f22b7cb085faf9e9764273fa5e70c28:afc5587ebacca78d178ac7e0c434591b:6537c634087637bb27e8a1edb1ee2e35$" + } +} diff --git a/public/images/ui/legacy/pbinfo_stat_numbers.png b/public/images/ui/legacy/pbinfo_stat_numbers.png new file mode 100644 index 000000000..ee1453b21 Binary files /dev/null and b/public/images/ui/legacy/pbinfo_stat_numbers.png differ diff --git a/public/images/ui/pbinfo_enemy_boss.png b/public/images/ui/pbinfo_enemy_boss.png index 58edefa16..ff5ba6614 100644 Binary files a/public/images/ui/pbinfo_enemy_boss.png and b/public/images/ui/pbinfo_enemy_boss.png differ diff --git a/public/images/ui/pbinfo_enemy_boss_stats.png b/public/images/ui/pbinfo_enemy_boss_stats.png new file mode 100644 index 000000000..7148a7af4 Binary files /dev/null and b/public/images/ui/pbinfo_enemy_boss_stats.png differ diff --git a/public/images/ui/pbinfo_enemy_mini.png b/public/images/ui/pbinfo_enemy_mini.png index 5250cb6f0..a7ff3cb9b 100644 Binary files a/public/images/ui/pbinfo_enemy_mini.png and b/public/images/ui/pbinfo_enemy_mini.png differ diff --git a/public/images/ui/pbinfo_enemy_mini_stats.png b/public/images/ui/pbinfo_enemy_mini_stats.png new file mode 100644 index 000000000..69ac5d494 Binary files /dev/null and b/public/images/ui/pbinfo_enemy_mini_stats.png differ diff --git a/public/images/ui/pbinfo_enemy_type.png b/public/images/ui/pbinfo_enemy_type.png index 021a12007..9bac63e5e 100644 Binary files a/public/images/ui/pbinfo_enemy_type.png and b/public/images/ui/pbinfo_enemy_type.png differ diff --git a/public/images/ui/pbinfo_enemy_type1.png b/public/images/ui/pbinfo_enemy_type1.png index 89b84d7f6..6d94871e8 100644 Binary files a/public/images/ui/pbinfo_enemy_type1.png and b/public/images/ui/pbinfo_enemy_type1.png differ diff --git a/public/images/ui/pbinfo_enemy_type2.png b/public/images/ui/pbinfo_enemy_type2.png index d1f9818d7..56a1989f2 100644 Binary files a/public/images/ui/pbinfo_enemy_type2.png and b/public/images/ui/pbinfo_enemy_type2.png differ diff --git a/public/images/ui/pbinfo_player.png b/public/images/ui/pbinfo_player.png index 9d3e03bd6..fee08f710 100644 Binary files a/public/images/ui/pbinfo_player.png and b/public/images/ui/pbinfo_player.png differ diff --git a/public/images/ui/pbinfo_player_mini.png b/public/images/ui/pbinfo_player_mini.png index db2762272..f12d46bb4 100644 Binary files a/public/images/ui/pbinfo_player_mini.png and b/public/images/ui/pbinfo_player_mini.png differ diff --git a/public/images/ui/pbinfo_player_mini_stats.png b/public/images/ui/pbinfo_player_mini_stats.png new file mode 100644 index 000000000..7ce3bd1af Binary files /dev/null and b/public/images/ui/pbinfo_player_mini_stats.png differ diff --git a/public/images/ui/pbinfo_player_stats.png b/public/images/ui/pbinfo_player_stats.png new file mode 100644 index 000000000..cda978979 Binary files /dev/null and b/public/images/ui/pbinfo_player_stats.png differ diff --git a/public/images/ui/pbinfo_player_type.png b/public/images/ui/pbinfo_player_type.png index ad8895039..b78d078de 100644 Binary files a/public/images/ui/pbinfo_player_type.png and b/public/images/ui/pbinfo_player_type.png differ diff --git a/public/images/ui/pbinfo_player_type1.png b/public/images/ui/pbinfo_player_type1.png index d1f9818d7..56a1989f2 100644 Binary files a/public/images/ui/pbinfo_player_type1.png and b/public/images/ui/pbinfo_player_type1.png differ diff --git a/public/images/ui/pbinfo_player_type2.png b/public/images/ui/pbinfo_player_type2.png index 89b84d7f6..6d94871e8 100644 Binary files a/public/images/ui/pbinfo_player_type2.png and b/public/images/ui/pbinfo_player_type2.png differ diff --git a/public/images/ui/pbinfo_stat.json b/public/images/ui/pbinfo_stat.json new file mode 100644 index 000000000..f431e5afa --- /dev/null +++ b/public/images/ui/pbinfo_stat.json @@ -0,0 +1,188 @@ +{ + "textures": [ + { + "image": "pbinfo_stat.png", + "format": "RGBA8888", + "size": { + "w": 120, + "h": 7 + }, + "scale": 1, + "frames": [ + { + "filename": "SPATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 0, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "SPDEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 19, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 19, + "h": 7 + }, + "frame": { + "x": 19, + "y": 0, + "w": 19, + "h": 7 + } + }, + { + "filename": "CRIT", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 17, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 17, + "h": 7 + }, + "frame": { + "x": 38, + "y": 0, + "w": 17, + "h": 7 + } + }, + { + "filename": "ACC", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 55, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "ATK", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 68, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "DEF", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 81, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "EVA", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 94, + "y": 0, + "w": 13, + "h": 7 + } + }, + { + "filename": "SPD", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 13, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 13, + "h": 7 + }, + "frame": { + "x": 107, + "y": 0, + "w": 13, + "h": 7 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$" + } +} diff --git a/public/images/ui/pbinfo_stat.png b/public/images/ui/pbinfo_stat.png new file mode 100644 index 000000000..46169091e Binary files /dev/null and b/public/images/ui/pbinfo_stat.png differ diff --git a/public/images/ui/pbinfo_stat_numbers.json b/public/images/ui/pbinfo_stat_numbers.json new file mode 100644 index 000000000..ec4f7117b --- /dev/null +++ b/public/images/ui/pbinfo_stat_numbers.json @@ -0,0 +1,293 @@ +{ + "textures": [ + { + "image": "pbinfo_stat_numbers.png", + "format": "RGBA8888", + "size": { + "w": 117, + "h": 8 + }, + "scale": 1, + "frames": [ + { + "filename": "1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "2", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 9, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "3", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 18, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "4", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 27, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "5", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 36, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "6", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 45, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-1", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 54, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-2", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 63, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-3", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 72, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-4", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 81, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-5", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 90, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "-6", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 99, + "y": 0, + "w": 9, + "h": 8 + } + }, + { + "filename": "0", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 9, + "h": 8 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 9, + "h": 8 + }, + "frame": { + "x": 108, + "y": 0, + "w": 9, + "h": 8 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:b0719fae0d9b670a727148cdc7202249:afc5587ebacca78d178ac7e0c434591b:4825a9f02f72f1fe28a724c6c5dffb37$" + } +} diff --git a/public/images/ui/pbinfo_stat_numbers.png b/public/images/ui/pbinfo_stat_numbers.png new file mode 100644 index 000000000..c778ba992 Binary files /dev/null and b/public/images/ui/pbinfo_stat_numbers.png differ diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest index e6eedd27e..cefde7f86 100644 --- a/public/manifest.webmanifest +++ b/public/manifest.webmanifest @@ -4,7 +4,7 @@ "description": "A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible.", "scope": "/", "start_url": "/", - "display": "standalone", + "display": "fullscreen", "background_color": "#8c8c8c", "theme_color": "#8c8c8c", "icons": [ diff --git a/service-worker.js b/public/service-worker.js similarity index 100% rename from service-worker.js rename to public/service-worker.js diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 73fa000d8..e89874a07 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1,4 +1,4 @@ -import Phaser, { Time } from 'phaser'; +import Phaser from 'phaser'; import UI, { Mode } from './ui/ui'; import { NextEncounterPhase, NewBiomeEncounterPhase, SelectBiomePhase, MessagePhase, TurnInitPhase, ReturnPhase, LevelCapPhase, ShowTrainerPhase, LoginPhase, MovePhase, TitlePhase, SwitchPhase } from './phases'; import Pokemon, { PlayerPokemon, EnemyPokemon } from './field/pokemon'; @@ -13,7 +13,7 @@ import { Biome } from "./data/enums/biome"; import { Arena, ArenaBase } from './field/arena'; import { GameData, PlayerGender } from './system/game-data'; import StarterSelectUiHandler from './ui/starter-select-ui-handler'; -import { TextStyle, addBBCodeTextObject, addTextObject } from './ui/text'; +import { TextStyle, addTextObject } from './ui/text'; import { Moves } from "./data/enums/moves"; import { allMoves } from "./data/move"; import { initMoves } from './data/move'; @@ -54,60 +54,28 @@ import CharSprite from './ui/char-sprite'; import DamageNumberHandler from './field/damage-number-handler'; import PokemonInfoContainer from './ui/pokemon-info-container'; import { biomeDepths } from './data/biomes'; -import { initTouchControls } from './touch-controls'; import { UiTheme } from './enums/ui-theme'; import { SceneBase } from './scene-base'; import CandyBar from './ui/candy-bar'; import { Variant, variantData } from './data/variant'; import { Localizable } from './plugins/i18n'; +import { STARTING_WAVE_OVERRIDE, OPP_SPECIES_OVERRIDE, SEED_OVERRIDE, STARTING_BIOME_OVERRIDE } from './overrides'; +import {InputsController} from "./inputs-controller"; +import {UiInputs} from "./ui-inputs"; export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; -export const SEED_OVERRIDE = ''; -export const STARTER_SPECIES_OVERRIDE = 0; -export const STARTER_FORM_OVERRIDE = 0; -export const STARTING_LEVEL_OVERRIDE = 0; -export const STARTING_WAVE_OVERRIDE = 0; -export const STARTING_BIOME_OVERRIDE = Biome.TOWN; -export const STARTING_MONEY_OVERRIDE = 0; - -export const ABILITY_OVERRIDE = Abilities.NONE; -export const MOVE_OVERRIDE = Moves.NONE; -export const OPP_SPECIES_OVERRIDE = 0; -export const OPP_ABILITY_OVERRIDE = Abilities.NONE; -export const OPP_MOVE_OVERRIDE = Moves.NONE; - const DEBUG_RNG = false; export const startingWave = STARTING_WAVE_OVERRIDE || 1; const expSpriteKeys: string[] = []; -const repeatInputDelayMillis = 250; export let starterColors: StarterColors; interface StarterColors { [key: string]: [string, string] } -export enum Button { - UP, - DOWN, - LEFT, - RIGHT, - SUBMIT, - ACTION, - CANCEL, - MENU, - CYCLE_SHINY, - CYCLE_FORM, - CYCLE_GENDER, - CYCLE_ABILITY, - CYCLE_NATURE, - CYCLE_VARIANT, - SPEED_UP, - SLOW_DOWN -} - export interface PokeballCounts { [pb: string]: integer; } @@ -116,6 +84,8 @@ export type AnySound = Phaser.Sound.WebAudioSound | Phaser.Sound.HTML5AudioSound export default class BattleScene extends SceneBase { public rexUI: UIPlugin; + public inputController: InputsController; + public uiInputs: UiInputs; public sessionPlayTime: integer = null; public masterVolume: number = 0.5; @@ -136,7 +106,8 @@ export default class BattleScene extends SceneBase { public gamepadSupport: boolean = true; public enableTouchControls: boolean = false; public enableVibration: boolean = false; - + public abSwapped: boolean = false; + public disableMenu: boolean = false; public gameData: GameData; @@ -201,33 +172,6 @@ export default class BattleScene extends SceneBase { private bgmResumeTimer: Phaser.Time.TimerEvent; private bgmCache: Set = new Set(); private playTimeTimer: Phaser.Time.TimerEvent; - - private buttonKeys: Phaser.Input.Keyboard.Key[][]; - private lastProcessedButtonPressTimes: Map = new Map(); - // movementButtonLock ensures only a single movement key is firing repeated inputs - // (i.e. by holding down a button) at a time - private movementButtonLock: Button; - - // using a dualshock controller as a map - private gamepadKeyConfig = { - [Button.UP]: 12, // up - [Button.DOWN]: 13, // down - [Button.LEFT]: 14, // left - [Button.RIGHT]: 15, // right - [Button.SUBMIT]: 17, // touchpad - [Button.ACTION]: 0, // X - [Button.CANCEL]: 1, // O - [Button.MENU]: 9, // options - [Button.CYCLE_SHINY]: 5, // RB - [Button.CYCLE_FORM]: 4, // LB - [Button.CYCLE_GENDER]: 6, // LT - [Button.CYCLE_ABILITY]: 7, // RT - [Button.CYCLE_NATURE]: 2, // square - [Button.CYCLE_VARIANT]: 3, // triangle - [Button.SPEED_UP]: 10, // L3 - [Button.SLOW_DOWN]: 11 // R3 - }; - public gamepadButtonStates: boolean[] = new Array(17).fill(false); public rngCounter: integer = 0; public rngSeedOverride: string = ''; @@ -249,7 +193,7 @@ export default class BattleScene extends SceneBase { loadPokemonAtlas(key: string, atlasPath: string, experimental?: boolean) { if (experimental === undefined) experimental = this.experimentalSprites; - let variant = atlasPath.includes('variant/'); + let variant = atlasPath.includes('variant/') || /_[0-3]$/.test(atlasPath); if (experimental) experimental = this.hasExpSprite(key); if (variant) @@ -271,7 +215,7 @@ export default class BattleScene extends SceneBase { return ret; }; } - + populateAnims(); await this.initVariantData(); @@ -279,13 +223,13 @@ export default class BattleScene extends SceneBase { create() { initGameSpeed.apply(this); + this.inputController = new InputsController(this); + this.uiInputs = new UiInputs(this, this.inputController); this.gameData = new GameData(this); addUiThemeOverrides(this); - this.setupControls(); - this.load.setBaseURL(); this.spritePipeline = new SpritePipeline(this.game); @@ -298,7 +242,7 @@ export default class BattleScene extends SceneBase { } update() { - this.checkInput(); + this.inputController.update(); this.ui?.update(); } @@ -531,10 +475,23 @@ export default class BattleScene extends SceneBase { .then(v => { Object.keys(v).forEach(k => variantData[k] = v[k]); if (this.experimentalSprites) { - const expTree = variantData['exp']; - Object.keys(expTree).forEach(ek => { - variantData[ek] = expTree[ek]; - }); + const expVariantData = variantData['exp']; + const traverseVariantData = (keys: string[]) => { + let variantTree = variantData; + let expTree = expVariantData; + keys.map((k: string, i: integer) => { + if (i < keys.length - 1) { + variantTree = variantTree[k]; + expTree = expTree[k]; + } else if (variantTree.hasOwnProperty(k) && expTree.hasOwnProperty(k)) { + if ([ 'back', 'female' ].includes(k)) + traverseVariantData(keys.concat(k)); + else + variantTree[k] = expTree[k]; + } + }); + }; + Object.keys(expVariantData).forEach(ek => traverseVariantData([ ek ])); } Promise.resolve(); }); @@ -604,41 +561,6 @@ export default class BattleScene extends SceneBase { return true; } - setupControls() { - const keyCodes = Phaser.Input.Keyboard.KeyCodes; - const keyConfig = { - [Button.UP]: [keyCodes.UP, keyCodes.W], - [Button.DOWN]: [keyCodes.DOWN, keyCodes.S], - [Button.LEFT]: [keyCodes.LEFT, keyCodes.A], - [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D], - [Button.SUBMIT]: [keyCodes.ENTER], - [Button.ACTION]: [keyCodes.SPACE, keyCodes.ENTER, keyCodes.Z], - [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X], - [Button.MENU]: [keyCodes.ESC, keyCodes.M], - [Button.CYCLE_SHINY]: [keyCodes.R], - [Button.CYCLE_FORM]: [keyCodes.F], - [Button.CYCLE_GENDER]: [keyCodes.G], - [Button.CYCLE_ABILITY]: [keyCodes.E], - [Button.CYCLE_NATURE]: [keyCodes.N], - [Button.CYCLE_VARIANT]: [keyCodes.V], - [Button.SPEED_UP]: [keyCodes.PLUS], - [Button.SLOW_DOWN]: [keyCodes.MINUS] - }; - const mobileKeyConfig = {}; - this.buttonKeys = []; - for (let b of Utils.getEnumValues(Button)) { - const keys: Phaser.Input.Keyboard.Key[] = []; - if (keyConfig.hasOwnProperty(b)) { - for (let k of keyConfig[b]) - keys.push(this.input.keyboard.addKey(k, false)); - mobileKeyConfig[Button[b]] = keys[0]; - } - this.buttonKeys[b] = keys; - } - - initTouchControls(mobileKeyConfig); - } - getParty(): PlayerPokemon[] { return this.party; } @@ -938,7 +860,7 @@ export default class BattleScene extends SceneBase { if (!waveIndex && lastBattle) { let isNewBiome = !(lastBattle.waveIndex % 10) || ((this.gameMode.hasShortBiomes || this.gameMode.isDaily) && (lastBattle.waveIndex % 50) === 49); - if (!isNewBiome && this.gameMode.hasShortBiomes && (newWaveIndex % 10) < 9) { + if (!isNewBiome && this.gameMode.hasShortBiomes && (lastBattle.waveIndex % 10) < 9) { let w = lastBattle.waveIndex - ((lastBattle.waveIndex % 10) - 1); let biomeWaves = 1; while (w < lastBattle.waveIndex) { @@ -1041,17 +963,26 @@ export default class BattleScene extends SceneBase { case Species.BASCULIN: case Species.DEERLING: case Species.SAWSBUCK: + case Species.FROAKIE: + case Species.FROGADIER: case Species.VIVILLON: case Species.FLABEBE: case Species.FLOETTE: case Species.FLORGES: + case Species.FURFROU: case Species.ORICORIO: case Species.SQUAWKABILLY: case Species.TATSUGIRI: case Species.PALDEA_TAUROS: return Utils.randSeedInt(species.forms.length); + case Species.GRENINJA: + return Utils.randSeedInt(2); + case Species.ZYGARDE: + return Utils.randSeedInt(3); case Species.MINIOR: return Utils.randSeedInt(6); + case Species.ALCREMIE: + return Utils.randSeedInt(9); case Species.MEOWSTIC: case Species.INDEEDEE: case Species.BASCULEGION: @@ -1099,7 +1030,7 @@ export default class BattleScene extends SceneBase { return 5; let isBoss: boolean; - if (forceBoss || (species && (species.pseudoLegendary || species.legendary || species.mythical))) + if (forceBoss || (species && (species.subLegendary || species.legendary || species.mythical))) isBoss = true; else { this.executeWithSeedOffset(() => { @@ -1331,152 +1262,6 @@ export default class BattleScene extends SceneBase { return biomes[Utils.randSeedInt(biomes.length)]; } - checkInput(): boolean { - let inputSuccess = false; - let vibrationLength = 0; - if (this.buttonJustPressed(Button.UP) || this.repeatInputDurationJustPassed(Button.UP)) { - inputSuccess = this.ui.processInput(Button.UP); - vibrationLength = 5; - this.setLastProcessedMovementTime(Button.UP) - } else if (this.buttonJustPressed(Button.DOWN) || this.repeatInputDurationJustPassed(Button.DOWN)) { - inputSuccess = this.ui.processInput(Button.DOWN); - vibrationLength = 5; - this.setLastProcessedMovementTime(Button.DOWN) - } else if (this.buttonJustPressed(Button.LEFT) || this.repeatInputDurationJustPassed(Button.LEFT)) { - inputSuccess = this.ui.processInput(Button.LEFT); - vibrationLength = 5; - this.setLastProcessedMovementTime(Button.LEFT) - } else if (this.buttonJustPressed(Button.RIGHT) || this.repeatInputDurationJustPassed(Button.RIGHT)) { - inputSuccess = this.ui.processInput(Button.RIGHT); - vibrationLength = 5; - this.setLastProcessedMovementTime(Button.RIGHT) - } else if (this.buttonJustPressed(Button.SUBMIT) || this.repeatInputDurationJustPassed(Button.SUBMIT)) { - inputSuccess = this.ui.processInput(Button.SUBMIT) || this.ui.processInput(Button.ACTION); - this.setLastProcessedMovementTime(Button.SUBMIT); - } else if (this.buttonJustPressed(Button.ACTION) || this.repeatInputDurationJustPassed(Button.ACTION)) { - inputSuccess = this.ui.processInput(Button.ACTION); - this.setLastProcessedMovementTime(Button.ACTION); - } else if (this.buttonJustPressed(Button.CANCEL)|| this.repeatInputDurationJustPassed(Button.CANCEL)) { - inputSuccess = this.ui.processInput(Button.CANCEL); - this.setLastProcessedMovementTime(Button.CANCEL); - } else if (this.buttonJustPressed(Button.MENU)) { - if (this.disableMenu) - return; - switch (this.ui?.getMode()) { - case Mode.MESSAGE: - if (!(this.ui.getHandler() as MessageUiHandler).pendingPrompt) - return; - case Mode.TITLE: - case Mode.COMMAND: - case Mode.FIGHT: - case Mode.BALL: - case Mode.TARGET_SELECT: - case Mode.SAVE_SLOT: - case Mode.PARTY: - case Mode.SUMMARY: - case Mode.STARTER_SELECT: - case Mode.CONFIRM: - case Mode.OPTION_SELECT: - this.ui.setOverlayMode(Mode.MENU); - inputSuccess = true; - break; - case Mode.MENU: - case Mode.SETTINGS: - case Mode.ACHIEVEMENTS: - this.ui.revertMode(); - this.playSound('select'); - inputSuccess = true; - break; - default: - return; - } - } else if (this.ui?.getHandler() instanceof StarterSelectUiHandler) { - if (this.buttonJustPressed(Button.CYCLE_SHINY)) { - inputSuccess = this.ui.processInput(Button.CYCLE_SHINY); - this.setLastProcessedMovementTime(Button.CYCLE_SHINY); - } else if (this.buttonJustPressed(Button.CYCLE_FORM)) { - inputSuccess = this.ui.processInput(Button.CYCLE_FORM); - this.setLastProcessedMovementTime(Button.CYCLE_FORM); - } else if (this.buttonJustPressed(Button.CYCLE_GENDER)) { - inputSuccess = this.ui.processInput(Button.CYCLE_GENDER); - this.setLastProcessedMovementTime(Button.CYCLE_GENDER); - } else if (this.buttonJustPressed(Button.CYCLE_ABILITY)) { - inputSuccess = this.ui.processInput(Button.CYCLE_ABILITY); - this.setLastProcessedMovementTime(Button.CYCLE_ABILITY); - } else if (this.buttonJustPressed(Button.CYCLE_NATURE)) { - inputSuccess = this.ui.processInput(Button.CYCLE_NATURE); - this.setLastProcessedMovementTime(Button.CYCLE_NATURE); - } else if (this.buttonJustPressed(Button.CYCLE_VARIANT)) { - inputSuccess = this.ui.processInput(Button.CYCLE_VARIANT); - this.setLastProcessedMovementTime(Button.CYCLE_VARIANT); - } else - return; - } else if (this.buttonJustPressed(Button.SPEED_UP)) { - if (this.gameSpeed < 5) { - this.gameData.saveSetting(Setting.Game_Speed, settingOptions[Setting.Game_Speed].indexOf(`${this.gameSpeed}x`) + 1); - if (this.ui?.getMode() === Mode.SETTINGS) - (this.ui.getHandler() as SettingsUiHandler).show([]); - } - } else if (this.buttonJustPressed(Button.SLOW_DOWN)) { - if (this.gameSpeed > 1) { - this.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.gameSpeed}x`) - 1, 0)); - if (this.ui?.getMode() === Mode.SETTINGS) - (this.ui.getHandler() as SettingsUiHandler).show([]); - } - } else - return; - if (inputSuccess && this.enableVibration && typeof navigator.vibrate !== 'undefined') - navigator.vibrate(vibrationLength || 10); - } - - /** - * gamepadButtonJustDown returns true if @param button has just been pressed down - * or not. It will only return true once, until the key is released and pressed down - * again. - */ - gamepadButtonJustDown(button: Phaser.Input.Gamepad.Button) : boolean { - if (!button || !this.gamepadSupport) - return false; - - let ret = false; - if (button.pressed) { - if (!this.gamepadButtonStates[button.index]) - ret = true; - this.gamepadButtonStates[button.index] = true; - } else - this.gamepadButtonStates[button.index] = false; - - return ret; - } - - buttonJustPressed(button: Button): boolean { - const gamepad = this.input.gamepad?.gamepads[0]; - return this.buttonKeys[button].some(k => Phaser.Input.Keyboard.JustDown(k)) || this.gamepadButtonJustDown(gamepad?.buttons[this.gamepadKeyConfig[button]]); - } - - /** - * repeatInputDurationJustPassed returns true if @param button has been held down long - * enough to fire a repeated input. A button must claim the movementButtonLock before - * firing a repeated input - this is to prevent multiple buttons from firing repeatedly. - */ - repeatInputDurationJustPassed(button: Button): boolean { - if (this.movementButtonLock !== null && this.movementButtonLock !== button) { - return false; - } - if (this.buttonKeys[button].every(k => k.isUp) && this.gamepadButtonStates.every(b => b == false)) { - this.movementButtonLock = null; - return false; - } - if (this.time.now - this.lastProcessedButtonPressTimes.get(button) >= repeatInputDelayMillis) { - return true; - } - } - - setLastProcessedMovementTime(button: Button) { - this.lastProcessedButtonPressTimes.set(button, this.time.now); - this.movementButtonLock = button; - } - isBgmPlaying(): boolean { return this.bgm && this.bgm.isPlaying; } @@ -1634,11 +1419,13 @@ export default class BattleScene extends SceneBase { return 13.122; case 'battle_unova_gym': return 19.145; - case 'battle_legendary': + case 'battle_legendary_regis': //B2W2 Legendary Titan Battle + return 49.500; + case 'battle_legendary_unova': //BW Unova Legendary Battle return 13.855; - case 'battle_legendary_k': + case 'battle_legendary_kyurem': //BW Kyurem Battle return 18.314; - case 'battle_legendary_rz': + case 'battle_legendary_res_zek': //BW Reshiram & Zekrom Battle return 18.329; case 'battle_rival': return 13.689; diff --git a/src/battle.ts b/src/battle.ts index 97dec4716..580bad9a5 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -194,12 +194,18 @@ export default class Battle { return 'battle_final'; return 'battle_final_encounter'; } - if (pokemon.species.legendary || pokemon.species.pseudoLegendary || pokemon.species.mythical) { + if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { + if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO) + return 'battle_legendary_regis'; + if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT) + return 'battle_legendary_unova'; + if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM) + return 'battle_legendary_res_zek'; if (pokemon.species.speciesId === Species.KYUREM) - return 'battle_legendary_k'; + return 'battle_legendary_kyurem'; if (pokemon.species.legendary) - return 'battle_legendary_rz'; - return 'battle_legendary'; + return 'battle_legendary_res_zek'; + return 'battle_legendary_unova'; } } diff --git a/src/configs/pad_dualshock.ts b/src/configs/pad_dualshock.ts new file mode 100644 index 000000000..4f66ff8c0 --- /dev/null +++ b/src/configs/pad_dualshock.ts @@ -0,0 +1,29 @@ +/** + * Dualshock mapping + */ +const pad_dualshock = { + padID: 'Dualshock', + padType: 'Sony', + gamepadMapping: { + RC_S: 0, + RC_E: 1, + RC_W: 2, + RC_N: 3, + START: 9, // Options + SELECT: 8, // Share + LB: 4, + RB: 5, + LT: 6, + RT: 7, + LS: 10, + RS: 11, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15, + MENU: 16, + TOUCH: 17 + }, +}; + +export default pad_dualshock; diff --git a/src/configs/pad_generic.ts b/src/configs/pad_generic.ts new file mode 100644 index 000000000..19b5d3df1 --- /dev/null +++ b/src/configs/pad_generic.ts @@ -0,0 +1,27 @@ +/** + * Generic pad mapping + */ +const pad_generic = { + padID: 'Generic', + padType: 'generic', + gamepadMapping: { + RC_S: 0, + RC_E: 1, + RC_W: 2, + RC_N: 3, + START: 9, + SELECT: 8, + LB: 4, + RB: 5, + LT: 6, + RT: 7, + LS: 10, + RS: 11, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15 + }, +}; + +export default pad_generic; diff --git a/src/configs/pad_unlicensedSNES.ts b/src/configs/pad_unlicensedSNES.ts new file mode 100644 index 000000000..ba8ee538d --- /dev/null +++ b/src/configs/pad_unlicensedSNES.ts @@ -0,0 +1,23 @@ +/** + * 081f-e401 - UnlicensedSNES + */ +const pad_unlicensedSNES = { + padID: '081f-e401', + padType: 'snes', + gamepadMapping : { + RC_S: 2, + RC_E: 1, + RC_W: 3, + RC_N: 0, + START: 9, + SELECT: 8, + LB: 4, + RB: 5, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15 + } +}; + +export default pad_unlicensedSNES; diff --git a/src/configs/pad_xbox360.ts b/src/configs/pad_xbox360.ts new file mode 100644 index 000000000..e44ebb54b --- /dev/null +++ b/src/configs/pad_xbox360.ts @@ -0,0 +1,28 @@ +/** + * Generic pad mapping + */ +const pad_xbox360 = { + padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)', + padType: 'xbox', + gamepadMapping: { + RC_S: 0, + RC_E: 1, + RC_W: 2, + RC_N: 3, + START: 9, + SELECT: 8, + LB: 4, + RB: 5, + LT: 6, + RT: 7, + LS: 10, + RS: 11, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15, + MENU: 16 + }, +}; + +export default pad_xbox360; diff --git a/src/data/ability.ts b/src/data/ability.ts index f6ccf7e85..07aecbdcc 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -9,7 +9,7 @@ import { BattlerTag } from "./battler-tags"; import { BattlerTagType } from "./enums/battler-tag-type"; import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect"; import { Gender } from "./gender"; -import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves } from "./move"; +import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove } from "./move"; import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; import { ArenaTagType } from "./enums/arena-tag-type"; import { Stat } from "./pokemon-stat"; @@ -20,6 +20,8 @@ import { SpeciesFormChangeManualTrigger } from "./pokemon-forms"; import { Abilities } from "./enums/abilities"; import i18next, { Localizable } from "#app/plugins/i18n.js"; import { Command } from "../ui/command-ui-handler"; +import Battle from "#app/battle.js"; +import { ability } from "#app/locales/en/ability.js"; export class Ability implements Localizable { public id: Abilities; @@ -247,7 +249,7 @@ export class PreDefendFormChangeAbAttr extends PreDefendAbAttr { } export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr { applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp) + if (pokemon.getMaxHp() <= 1 && (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp)) return false; return pokemon.addTag(BattlerTagType.STURDY, 1); @@ -424,7 +426,7 @@ export class NonSuperEffectiveImmunityAbAttr extends TypeImmunityAbAttr { } applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type) < 2) { + if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, attacker) < 2) { cancelled.value = true; (args[0] as Utils.NumberHolder).value = 0; return true; @@ -580,6 +582,35 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr { } } +export class PostDefendHpGatedStatChangeAbAttr extends PostDefendAbAttr { + private condition: PokemonDefendCondition; + private hpGate: number; + private stats: BattleStat[]; + private levels: integer; + private selfTarget: boolean; + + constructor(condition: PokemonDefendCondition, hpGate: number, stats: BattleStat[], levels: integer, selfTarget: boolean = true) { + super(true); + + this.condition = condition; + this.hpGate = hpGate; + this.stats = stats; + this.levels = levels; + this.selfTarget = selfTarget; + } + + applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { + const hpGateFlat: integer = Math.ceil(pokemon.getMaxHp() * this.hpGate) + const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1] + if (this.condition(pokemon, attacker, move.getMove()) && (pokemon.hp <= hpGateFlat && (pokemon.hp + lastAttackReceived.damage) > hpGateFlat)) { + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.levels)); + return true; + } + + return false; + } +} + export class PostDefendApplyArenaTrapTagAbAttr extends PostDefendAbAttr { private condition: PokemonDefendCondition; private tagType: ArenaTagType; @@ -679,6 +710,19 @@ export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr { } } +export class EffectSporeAbAttr extends PostDefendContactApplyStatusEffectAbAttr { + constructor() { + super(10, StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP); + } + + applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { + if (attacker.hasAbility(Abilities.OVERCOAT) || attacker.isOfType(Type.GRASS)) { + return false; + } + return super.applyPostDefend(pokemon, passive, attacker, move, hitResult, args); + } +} + export class PostDefendContactApplyTagChanceAbAttr extends PostDefendAbAttr { private chance: integer; private tagType: BattlerTagType; @@ -785,13 +829,16 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr { } export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr { - constructor() { + private ability: Abilities; + + constructor(ability: Abilities) { super(); + this.ability = ability; } applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { if (move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon) && !attacker.getAbility().hasAttr(UnsuppressableAbilityAbAttr) && !attacker.getAbility().hasAttr(PostDefendAbilityGiveAbAttr)) { - attacker.summonData.ability = pokemon.getAbility().id; + attacker.summonData.ability = this.ability; return true; } @@ -906,8 +953,8 @@ export class MovePowerBoostAbAttr extends VariableMovePowerAbAttr { private condition: PokemonAttackCondition; private powerMultiplier: number; - constructor(condition: PokemonAttackCondition, powerMultiplier: number) { - super(true); + constructor(condition: PokemonAttackCondition, powerMultiplier: number, showAbility: boolean = true) { + super(showAbility); this.condition = condition; this.powerMultiplier = powerMultiplier; } @@ -976,16 +1023,19 @@ export class FieldMoveTypePowerBoostAbAttr extends FieldMovePowerBoostAbAttr { export class BattleStatMultiplierAbAttr extends AbAttr { private battleStat: BattleStat; private multiplier: number; + private condition: PokemonAttackCondition; - constructor(battleStat: BattleStat, multiplier: number) { + constructor(battleStat: BattleStat, multiplier: number, condition?: PokemonAttackCondition) { super(false); this.battleStat = battleStat; this.multiplier = multiplier; + this.condition = condition; } applyBattleStat(pokemon: Pokemon, passive: boolean, battleStat: BattleStat, statValue: Utils.NumberHolder, args: any[]): boolean | Promise { - if (battleStat === this.battleStat) { + const move = (args[0] as Move); + if (battleStat === this.battleStat && (!this.condition || this.condition(pokemon, null, move))) { statValue.value *= this.multiplier; return true; } @@ -1148,6 +1198,26 @@ class PostVictoryStatChangeAbAttr extends PostVictoryAbAttr { } } +export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr { + private formFunc: (p: Pokemon) => integer; + + constructor(formFunc: ((p: Pokemon) => integer)) { + super(true); + + this.formFunc = formFunc; + } + + applyPostVictory(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise { + const formIndex = this.formFunc(pokemon); + if (formIndex !== pokemon.formIndex) { + pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + return true; + } + + return false; + } +} + export class PostKnockOutAbAttr extends AbAttr { applyPostKnockOut(pokemon: Pokemon, passive: boolean, knockedOut: Pokemon, args: any[]): boolean | Promise { return false; @@ -1203,6 +1273,40 @@ export class IgnoreOpponentStatChangesAbAttr extends AbAttr { } } +export class IntimidateImmunityAbAttr extends AbAttr { + constructor() { + super(false); + } + + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { + cancelled.value = true; + return true; + } + + getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { + return getPokemonMessage(pokemon, `'s ${abilityName} prevented it from being Intimidated!`); + } +} + +export class PostIntimidateStatChangeAbAttr extends AbAttr { + private stats: BattleStat[]; + private levels: integer; + private overwrites: boolean; + + constructor(stats: BattleStat[], levels: integer, overwrites?: boolean) { + super(true) + this.stats = stats + this.levels = levels + this.overwrites = !!overwrites + } + + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { + pokemon.scene.pushPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, this.stats, this.levels)); + cancelled.value = this.overwrites; + return true; + } +} + export class PostSummonAbAttr extends AbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise { return false; @@ -1245,34 +1349,36 @@ export class PostSummonStatChangeAbAttr extends PostSummonAbAttr { private stats: BattleStat[]; private levels: integer; private selfTarget: boolean; + private intimidate: boolean; - constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean) { - super(); + constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean, intimidate?: boolean) { + super(false); this.stats = typeof(stats) === 'number' ? [ stats as BattleStat ] : stats as BattleStat[]; this.levels = levels; this.selfTarget = !!selfTarget; + this.intimidate = !!intimidate; } applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { - const statChangePhases: StatChangePhase[] = []; - - if (this.selfTarget) - statChangePhases.push(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels)); - else { - for (let opponent of pokemon.getOpponents()) - statChangePhases.push(new StatChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.levels)); + queueShowAbility(pokemon, passive); // TODO: Better solution than manually showing the ability here + if (this.selfTarget) { + pokemon.scene.pushPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels)); + return true; } - - for (let statChangePhase of statChangePhases) { - if (!this.selfTarget && !statChangePhase.getPokemon().summonData) - pokemon.scene.pushPhase(statChangePhase); // TODO: This causes the ability bar to be shown at the wrong time - else + for (let opponent of pokemon.getOpponents()) { + const cancelled = new Utils.BooleanHolder(false) + if (this.intimidate) { + applyAbAttrs(IntimidateImmunityAbAttr, opponent, cancelled); + applyAbAttrs(PostIntimidateStatChangeAbAttr, opponent, cancelled); + } + if (!cancelled.value) { + const statChangePhase = new StatChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.levels); pokemon.scene.unshiftPhase(statChangePhase); + } } - return true; } } @@ -1382,6 +1488,7 @@ export class TraceAbAttr extends PostSummonAbAttr { const targets = pokemon.getOpponents(); if (!targets.length) return false; + let target: Pokemon; if (targets.length > 1) pokemon.scene.executeWithSeedOffset(() => target = Utils.randSeedItem(targets), pokemon.scene.currentBattle.waveIndex); @@ -1407,6 +1514,9 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { const targets = pokemon.getOpponents(); + if (!targets.length) + return false; + let target: Pokemon; if (targets.length > 1) pokemon.scene.executeWithSeedOffset(() => target = Utils.randSeedItem(targets), pokemon.scene.currentBattle.waveIndex); @@ -1569,6 +1679,27 @@ export class BonusCritAbAttr extends AbAttr { } } +export class MultCritAbAttr extends AbAttr { + public multAmount: number; + + constructor(multAmount: number) { + super(true); + + this.multAmount = multAmount; + } + + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { + const critMult = args[0] as Utils.NumberHolder; + if (critMult.value > 1){ + critMult.value *= this.multAmount; + return true; + } + + return false; + } +} + + export class BlockNonDirectDamageAbAttr extends AbAttr { apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { cancelled.value = true; @@ -1663,7 +1794,7 @@ function getAnticipationCondition(): AbAttrCondition { for (let opponent of pokemon.getOpponents()) { for (let move of opponent.moveset) { // move is super effective - if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type) >= 2) { + if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent) >= 2) { return true; } // move is a OHKO @@ -1685,7 +1816,7 @@ function getAnticipationCondition(): AbAttrCondition { Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC, Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK][iv_val]; - if (pokemon.getAttackTypeEffectiveness(type) >= 2) { + if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) { return true; } } @@ -1695,6 +1826,53 @@ function getAnticipationCondition(): AbAttrCondition { }; } +export class ForewarnAbAttr extends PostSummonAbAttr { + constructor() { + super(true); + } + + applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { + let maxPowerSeen = 0; + let maxMove = ""; + let movePower = 0; + for (let opponent of pokemon.getOpponents()) { + for (let move of opponent.moveset) { + if (move.getMove() instanceof StatusMove) { + movePower = 1; + } else if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) { + movePower = 150; + } else if (move.getMove().id === Moves.COUNTER || move.getMove().id === Moves.MIRROR_COAT || move.getMove().id === Moves.METAL_BURST) { + movePower = 120; + } else if (move.getMove().power === -1) { + movePower = 80; + } else { + movePower = move.getMove().power; + } + + if (movePower > maxPowerSeen) { + maxPowerSeen = movePower; + maxMove = move.getName(); + } + } + } + pokemon.scene.queueMessage(getPokemonMessage(pokemon, " was forewarned about " + maxMove + "!")); + return true; + } +} + +export class FriskAbAttr extends PostSummonAbAttr { + constructor() { + super(true); + } + + applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { + for (let opponent of pokemon.getOpponents()) { + pokemon.scene.queueMessage(getPokemonMessage(pokemon, " frisked " + opponent.name + "\'s " + opponent.getAbility().name + "!")); + } + return true; + } +} + export class PostWeatherChangeAbAttr extends AbAttr { applyPostWeatherChange(pokemon: Pokemon, passive: boolean, weather: WeatherType, args: any[]): boolean { return false; @@ -1845,13 +2023,19 @@ export class MoodyAbAttr extends PostTurnAbAttr { } applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean { - // TODO: Edge case of not choosing to buff or debuff a stat that's already maxed let selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD]; - let increaseStat = selectableStats[Utils.randInt(selectableStats.length)]; - selectableStats = selectableStats.filter(s => s !== increaseStat); - let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)]; - pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2)); - pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1)); + let increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6); + let decreaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] > -6); + + if (increaseStatArray.length > 0) { + let increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)]; + decreaseStatArray = decreaseStatArray.filter(s => s !== increaseStat); + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2)); + } + if (decreaseStatArray.length > 0) { + let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)]; + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1)); + } return true; } } @@ -1958,6 +2142,13 @@ export class StatChangeMultiplierAbAttr extends AbAttr { } } +export class StatChangeCopyAbAttr extends AbAttr { + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise { + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as integer), true, false, false)); + return true; + } +} + export class BypassBurnDamageReductionAbAttr extends AbAttr { constructor() { super(false); @@ -2163,6 +2354,13 @@ export class FlinchStatChangeAbAttr extends FlinchEffectAbAttr { export class IncreasePpAbAttr extends AbAttr { } +export class ForceSwitchOutImmunityAbAttr extends AbAttr { + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { + cancelled.value = true; + return true; + } +} + export class ReduceBerryUseThresholdAbAttr extends AbAttr { constructor() { super(); @@ -2274,6 +2472,25 @@ export class NoFusionAbilityAbAttr extends AbAttr { } } +export class IgnoreTypeImmunityAbAttr extends AbAttr { + defenderType: Type; + allowedMoveTypes: Type[]; + + constructor(defenderType: Type, allowedMoveTypes: Type[]) { + super(true); + this.defenderType = defenderType; + this.allowedMoveTypes = allowedMoveTypes; + } + + apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { + if (this.defenderType !== (args[1] as Type)) { + return false; + } + + return this.allowedMoveTypes.some(type => type === (args[0] as Type)); + } +} + function applyAbAttrsInternal(attrType: { new(...args: any[]): TAttr }, pokemon: Pokemon, applyFunc: AbAttrApplyFunc, args: any[], isAsync: boolean = false, showAbilityInstant: boolean = false, quiet: boolean = false, passive: boolean = false): Promise { return new Promise(resolve => { @@ -2494,7 +2711,8 @@ export function initAbilities() { .condition(getWeatherCondition(WeatherType.SANDSTORM)) .ignorable(), new Ability(Abilities.STATIC, 3) - .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS), + .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS) + .bypassFaint(), new Ability(Abilities.VOLT_ABSORB, 3) .attr(TypeImmunityHealAbAttr, Type.ELECTRIC) .ignorable(), @@ -2503,6 +2721,7 @@ export function initAbilities() { .ignorable(), new Ability(Abilities.OBLIVIOUS, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.INFATUATED) + .attr(IntimidateImmunityAbAttr) .ignorable(), new Ability(Abilities.CLOUD_NINE, 3) .attr(SuppressWeatherEffectAbAttr, true), @@ -2525,12 +2744,13 @@ export function initAbilities() { .unimplemented(), new Ability(Abilities.OWN_TEMPO, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.CONFUSED) + .attr(IntimidateImmunityAbAttr) .ignorable(), new Ability(Abilities.SUCTION_CUPS, 3) - .ignorable() - .unimplemented(), + .attr(ForceSwitchOutImmunityAbAttr) + .ignorable(), new Ability(Abilities.INTIMIDATE, 3) - .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, -1), + .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, -1, false, true), new Ability(Abilities.SHADOW_TAG, 3) .attr(ArenaTrapAbAttr), new Ability(Abilities.ROUGH_SKIN, 3) @@ -2545,7 +2765,7 @@ export function initAbilities() { .attr(TypeImmunityAbAttr, Type.GROUND, (pokemon: Pokemon) => !pokemon.getTag(BattlerTagType.IGNORE_FLYING) && !pokemon.scene.arena.getTag(ArenaTagType.GRAVITY) && !pokemon.getTag(BattlerTagType.GROUNDED)) .ignorable(), new Ability(Abilities.EFFECT_SPORE, 3) - .attr(PostDefendContactApplyStatusEffectAbAttr, 10, StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP), + .attr(EffectSporeAbAttr), new Ability(Abilities.SYNCHRONIZE, 3) .attr(SyncEncounterNatureAbAttr) .unimplemented(), @@ -2576,9 +2796,11 @@ export function initAbilities() { new Ability(Abilities.HUGE_POWER, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 2), new Ability(Abilities.POISON_POINT, 3) - .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON), + .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON) + .bypassFaint(), new Ability(Abilities.INNER_FOCUS, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.FLINCHED) + .attr(IntimidateImmunityAbAttr) .ignorable(), new Ability(Abilities.MAGMA_ARMOR, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.FREEZE) @@ -2608,7 +2830,8 @@ export function initAbilities() { new Ability(Abilities.EARLY_BIRD, 3) .attr(ReduceStatusEffectDurationAbAttr, StatusEffect.SLEEP), new Ability(Abilities.FLAME_BODY, 3) - .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN), + .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN) + .bypassFaint(), new Ability(Abilities.RUN_AWAY, 3) .attr(RunSuccessAbAttr), new Ability(Abilities.KEEN_EYE, 3) @@ -2622,8 +2845,8 @@ export function initAbilities() { new Ability(Abilities.TRUANT, 3) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.TRUANT, 1, false), new Ability(Abilities.HUSTLE, 3) - .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5) - .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 0.8), + .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5, (user, target, move) => move.category == MoveCategory.PHYSICAL) + .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 0.8, (user, target, move) => move.category == MoveCategory.PHYSICAL), new Ability(Abilities.CUTE_CHARM, 3) .attr(PostDefendContactApplyTagChanceAbAttr, 30, BattlerTagType.INFATUATED), new Ability(Abilities.PLUS, 3) @@ -2685,7 +2908,7 @@ export function initAbilities() { .attr(TypeImmunityStatChangeAbAttr, Type.ELECTRIC, BattleStat.SPD, 1) .ignorable(), new Ability(Abilities.RIVALRY, 4) - .attr(MovePowerBoostAbAttr, (user, target, move) => user.gender !== Gender.GENDERLESS && target.gender !== Gender.GENDERLESS && user.gender === target.gender, 1.25) + .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) .attr(FlinchStatChangeAbAttr, BattleStat.SPD, 1), @@ -2736,7 +2959,7 @@ export function initAbilities() { .attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL && move.id !== Moves.NATURAL_GIFT && move.id !== Moves.JUDGMENT && move.id !== Moves.TECHNO_BLAST), new Ability(Abilities.SNIPER, 4) - .unimplemented(), + .attr(MultCritAbAttr, 1.5), new Ability(Abilities.MAGIC_GUARD, 4) .attr(BlockNonDirectDamageAbAttr), new Ability(Abilities.NO_GUARD, 4) @@ -2764,19 +2987,20 @@ export function initAbilities() { new Ability(Abilities.ANTICIPATION, 4) .conditionalAttr(getAnticipationCondition(), PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' shuddered!')), new Ability(Abilities.FOREWARN, 4) - .unimplemented(), + .attr(ForewarnAbAttr), new Ability(Abilities.UNAWARE, 4) .attr(IgnoreOpponentStatChangesAbAttr) .ignorable(), new Ability(Abilities.TINTED_LENS, 4) - .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) <= 0.5, 2), + .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) <= 0.5, 2), new Ability(Abilities.FILTER, 4) - .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75) + .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75) .ignorable(), new Ability(Abilities.SLOW_START, 4) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.SLOW_START, 5), new Ability(Abilities.SCRAPPY, 4) - .unimplemented(), + .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [Type.NORMAL, Type.FIGHTING]) + .attr(IntimidateImmunityAbAttr), new Ability(Abilities.STORM_DRAIN, 4) .attr(RedirectTypeMoveAbAttr, Type.WATER) .attr(TypeImmunityStatChangeAbAttr, Type.WATER, BattleStat.SPATK, 1) @@ -2785,7 +3009,7 @@ export function initAbilities() { .attr(BlockWeatherDamageAttr, WeatherType.HAIL) .attr(PostWeatherLapseHealAbAttr, 1, WeatherType.HAIL, WeatherType.SNOW), new Ability(Abilities.SOLID_ROCK, 4) - .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75) + .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75) .ignorable(), new Ability(Abilities.SNOW_WARNING, 4) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SNOW) @@ -2793,7 +3017,7 @@ export function initAbilities() { new Ability(Abilities.HONEY_GATHER, 4) .unimplemented(), new Ability(Abilities.FRISK, 4) - .unimplemented(), + .attr(FriskAbAttr), new Ability(Abilities.RECKLESS, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.getAttrs(RecoilAttr).length && move.id !== Moves.STRUGGLE, 1.2), new Ability(Abilities.MULTITYPE, 4) @@ -2886,7 +3110,7 @@ export function initAbilities() { new Ability(Abilities.INFILTRATOR, 5) .unimplemented(), new Ability(Abilities.MUMMY, 5) - .attr(PostDefendAbilityGiveAbAttr) + .attr(PostDefendAbilityGiveAbAttr, Abilities.MUMMY) .bypassFaint(), new Ability(Abilities.MOXIE, 5) .attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1), @@ -2895,7 +3119,7 @@ export function initAbilities() { new Ability(Abilities.RATTLED, 5) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS && (move.type === Type.DARK || move.type === Type.BUG || move.type === Type.GHOST), BattleStat.SPD, 1) - .partial(), + .attr(PostIntimidateStatChangeAbAttr, [BattleStat.SPD], 1), new Ability(Abilities.MAGIC_BOUNCE, 5) .ignorable() .unimplemented(), @@ -3030,7 +3254,7 @@ export function initAbilities() { new Ability(Abilities.STEELWORKER, 7) .attr(MoveTypePowerBoostAbAttr, Type.STEEL), new Ability(Abilities.BERSERK, 7) - .unimplemented(), + .attr(PostDefendHpGatedStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [BattleStat.SPATK], 1), new Ability(Abilities.SLUSH_RUSH, 7) .attr(BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .condition(getWeatherCondition(WeatherType.HAIL, WeatherType.SNOW)), @@ -3053,7 +3277,7 @@ export function initAbilities() { .attr(UnsuppressableAbilityAbAttr) .attr(NoFusionAbilityAbAttr), new Ability(Abilities.DISGUISE, 7) - .attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type) > 0) + .attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type, user) > 0) .attr(PostSummonFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) .attr(PostBattleInitFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) .attr(PostDefendFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) @@ -3067,17 +3291,20 @@ export function initAbilities() { .ignorable() .partial(), new Ability(Abilities.BATTLE_BOND, 7) + .attr(PostVictoryFormChangeAbAttr, p => p.getFormKey() ? 2 : 1) + .attr(UncopiableAbilityAbAttr) + .attr(UnswappableAbilityAbAttr) + .attr(UnsuppressableAbilityAbAttr) + .attr(NoFusionAbilityAbAttr), + new Ability(Abilities.POWER_CONSTRUCT, 7) // TODO: 10% Power Construct Zygarde isn't accounted for yet. If changed, update Zygarde's getSpeciesFormIndex entry accordingly + .attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2) + .attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2) + .attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoFusionAbilityAbAttr) - .unimplemented(), - new Ability(Abilities.POWER_CONSTRUCT, 7) - .attr(UncopiableAbilityAbAttr) - .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr) - .unimplemented(), + .partial(), new Ability(Abilities.CORROSION, 7) .unimplemented(), new Ability(Abilities.COMATOSE, 7) @@ -3148,9 +3375,9 @@ export function initAbilities() { new Ability(Abilities.SHADOW_SHIELD, 7) .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getHpRatio() === 1, 0.5), new Ability(Abilities.PRISM_ARMOR, 7) - .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75), + .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75), new Ability(Abilities.NEUROFORCE, 7) - .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 1.25), + .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 1.25), new Ability(Abilities.INTREPID_SWORD, 8) .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, 1, true), new Ability(Abilities.DAUNTLESS_SHIELD, 8) @@ -3215,6 +3442,7 @@ export function initAbilities() { .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) + .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, '\'s Neutralizing Gas filled the area!')) .partial(), new Ability(Abilities.PASTEL_VEIL, 8) .attr(StatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) @@ -3225,7 +3453,8 @@ export function initAbilities() { .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), + .attr(NoFusionAbilityAbAttr) + .condition((pokemon) => !pokemon.isTerastallized()), new Ability(Abilities.QUICK_DRAW, 8) .unimplemented(), new Ability(Abilities.UNSEEN_FIST, 8) @@ -3253,7 +3482,7 @@ export function initAbilities() { .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr), new Ability(Abilities.LINGERING_AROMA, 9) - .attr(PostDefendAbilityGiveAbAttr) + .attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA) .bypassFaint(), new Ability(Abilities.SEED_SOWER, 9) .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY), @@ -3262,7 +3491,8 @@ export function initAbilities() { .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), new Ability(Abilities.ANGER_SHELL, 9) - .unimplemented(), + .attr(PostDefendHpGatedStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ BattleStat.ATK, BattleStat.SPATK, BattleStat.SPD ], 1) + .attr(PostDefendHpGatedStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ BattleStat.DEF, BattleStat.SPDEF ], -1), new Ability(Abilities.PURIFYING_SALT, 9) .attr(StatusEffectImmunityAbAttr) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.GHOST, 0.5) @@ -3275,8 +3505,9 @@ export function initAbilities() { .ignorable() .partial(), new Ability(Abilities.GUARD_DOG, 9) - .ignorable() - .unimplemented(), + .attr(PostIntimidateStatChangeAbAttr, [BattleStat.ATK], 1, true) + .attr(ForceSwitchOutImmunityAbAttr) + .ignorable(), new Ability(Abilities.ROCKY_PAYLOAD, 9) .attr(MoveTypePowerBoostAbAttr, Type.ROCK), new Ability(Abilities.WIND_POWER, 9) @@ -3300,13 +3531,15 @@ export function initAbilities() { .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), + .attr(NoTransformAbilityAbAttr) + .partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages new Ability(Abilities.QUARK_DRIVE, 9) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true) .attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), + .attr(NoTransformAbilityAbAttr) + .partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages new Ability(Abilities.GOOD_AS_GOLD, 9) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().category === MoveCategory.STATUS) .ignorable() @@ -3332,7 +3565,7 @@ export function initAbilities() { .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPATK, 4 / 3), new Ability(Abilities.OPPORTUNIST, 9) - .unimplemented(), + .attr(StatChangeCopyAbAttr), new Ability(Abilities.CUD_CHEW, 9) .unimplemented(), new Ability(Abilities.SHARPNESS, 9) @@ -3354,8 +3587,8 @@ export function initAbilities() { .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS) .partial(), new Ability(Abilities.MINDS_EYE, 9) - .ignorable() - .unimplemented(), + .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [Type.NORMAL, Type.FIGHTING]) + .ignorable(), // TODO: evasiveness bypass should not be ignored, but accuracy immunity should new Ability(Abilities.SUPERSWEET_SYRUP, 9) .unimplemented(), new Ability(Abilities.HOSPITALITY, 9) diff --git a/src/data/api.ts b/src/data/api.ts index 1f2690c6a..fcfe95671 100644 --- a/src/data/api.ts +++ b/src/data/api.ts @@ -340,7 +340,7 @@ export async function printPokemon() { const speciesKey = (pokemonSpecies as any).key as string; enumStr += ` ${speciesKey}${pokemonSpecies.speciesId >= 2000 ? ` = ${pokemonSpecies.speciesId}` : ''},\n`; - pokemonSpeciesStr += ` new PokemonSpecies(Species.${speciesKey}, "${pokemonSpecies.name}", ${pokemonSpecies.generation}, ${pokemonSpecies.pseudoLegendary}, ${pokemonSpecies.legendary}, ${pokemonSpecies.mythical}, "${pokemonSpecies.species}", Type.${Type[pokemonSpecies.type1]}, ${pokemonSpecies.type2 ? `Type.${Type[pokemonSpecies.type2]}` : 'null'}, ${pokemonSpecies.height}, ${pokemonSpecies.weight}, Abilities.${Abilities[pokemonSpecies.ability1]}, Abilities.${Abilities[pokemonSpecies.ability2]}, Abilities.${Abilities[pokemonSpecies.abilityHidden]}, ${pokemonSpecies.baseTotal}, ${pokemonSpecies.baseStats[0]}, ${pokemonSpecies.baseStats[1]}, ${pokemonSpecies.baseStats[2]}, ${pokemonSpecies.baseStats[3]}, ${pokemonSpecies.baseStats[4]}, ${pokemonSpecies.baseStats[5]}, ${pokemonSpecies.catchRate}, ${pokemonSpecies.baseFriendship}, ${pokemonSpecies.baseExp}, GrowthRate.${GrowthRate[pokemonSpecies.growthRate]}, ${pokemonSpecies.malePercent}, ${pokemonSpecies.genderDiffs}`; + pokemonSpeciesStr += ` new PokemonSpecies(Species.${speciesKey}, "${pokemonSpecies.name}", ${pokemonSpecies.generation}, ${pokemonSpecies.subLegendary}, ${pokemonSpecies.legendary}, ${pokemonSpecies.mythical}, "${pokemonSpecies.species}", Type.${Type[pokemonSpecies.type1]}, ${pokemonSpecies.type2 ? `Type.${Type[pokemonSpecies.type2]}` : 'null'}, ${pokemonSpecies.height}, ${pokemonSpecies.weight}, Abilities.${Abilities[pokemonSpecies.ability1]}, Abilities.${Abilities[pokemonSpecies.ability2]}, Abilities.${Abilities[pokemonSpecies.abilityHidden]}, ${pokemonSpecies.baseTotal}, ${pokemonSpecies.baseStats[0]}, ${pokemonSpecies.baseStats[1]}, ${pokemonSpecies.baseStats[2]}, ${pokemonSpecies.baseStats[3]}, ${pokemonSpecies.baseStats[4]}, ${pokemonSpecies.baseStats[5]}, ${pokemonSpecies.catchRate}, ${pokemonSpecies.baseFriendship}, ${pokemonSpecies.baseExp}, GrowthRate.${GrowthRate[pokemonSpecies.growthRate]}, ${pokemonSpecies.malePercent}, ${pokemonSpecies.genderDiffs}`; if (pokemonSpecies.forms.length > 1) { pokemonSpeciesStr += `, ${pokemonSpecies.canChangeForm},`; for (let form of pokemonSpecies.forms) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index bb76a9880..8942cfe4b 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1,10 +1,10 @@ import { Arena } from "../field/arena"; import { Type } from "./type"; import * as Utils from "../utils"; -import { MoveCategory, StatChangeAttr, allMoves } from "./move"; +import { MoveCategory, allMoves } from "./move"; import { getPokemonMessage } from "../messages"; import Pokemon, { HitResult, PokemonMove } from "../field/pokemon"; -import { MoveEffectPhase, StatChangePhase } from "../phases"; +import { MoveEffectPhase, PokemonHealPhase, StatChangePhase} from "../phases"; import { StatusEffect } from "./status-effect"; import { BattlerIndex } from "../battle"; import { Moves } from "./enums/moves"; @@ -146,6 +146,31 @@ class AuroraVeilTag extends WeakenMoveScreenTag { } } +class WishTag extends ArenaTag { + private battlerIndex: BattlerIndex; + private triggerMessage: string; + private healHp: number; + + constructor(turnCount: integer, sourceId: integer, side: ArenaTagSide) { + super(ArenaTagType.WISH, turnCount, Moves.WISH, sourceId, side); + } + + onAdd(arena: Arena): void { + const user = arena.scene.getPokemonById(this.sourceId); + this.battlerIndex = user.getBattlerIndex(); + this.triggerMessage = getPokemonMessage(user, '\'s wish\ncame true!'); + this.healHp = Math.max(Math.floor(user.getMaxHp() / 2), 1); + } + + onRemove(arena: Arena): void { + const target = arena.scene.getField()[this.battlerIndex]; + if (target?.isActive(true)) { + arena.scene.queueMessage(this.triggerMessage); + arena.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), this.healHp, null, true, false)); + } + } +} + export class WeakenMoveTypeTag extends ArenaTag { private weakenedType: Type; @@ -457,6 +482,20 @@ export class GravityTag extends ArenaTag { } } +class TailwindTag extends ArenaTag { + constructor(turnCount: integer, sourceId: integer, side: ArenaTagSide) { + super(ArenaTagType.TAILWIND, turnCount, Moves.TAILWIND, sourceId, side); + } + + onAdd(arena: Arena): void { + arena.scene.queueMessage(`The Tailwind blew from behind${this.side === ArenaTagSide.PLAYER ? '\nyour' : this.side === ArenaTagSide.ENEMY ? '\nthe opposing' : ''} team!`); + } + + onRemove(arena: Arena): void { + arena.scene.queueMessage(`${this.side === ArenaTagSide.PLAYER ? 'Your' : this.side === ArenaTagSide.ENEMY ? 'The opposing' : ''} team's Tailwind petered out!`); + } +} + export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag { switch (tagType) { case ArenaTagType.MIST: @@ -472,6 +511,8 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov case ArenaTagType.FUTURE_SIGHT: case ArenaTagType.DOOM_DESIRE: return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex); + case ArenaTagType.WISH: + return new WishTag(turnCount, sourceId, side); case ArenaTagType.STEALTH_ROCK: return new StealthRockTag(sourceId, side); case ArenaTagType.STICKY_WEB: @@ -486,5 +527,7 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov return new LightScreenTag(turnCount, sourceId, side); case ArenaTagType.AURORA_VEIL: return new AuroraVeilTag(turnCount, sourceId, side); + case ArenaTagType.TAILWIND: + return new TailwindTag(turnCount, sourceId, side); } } diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index b12d15968..0fea80c37 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -163,6 +163,29 @@ export class FlinchedTag extends BattlerTag { } } +export class InterruptedTag extends BattlerTag { + constructor(sourceMove: Moves){ + super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove) + } + + canAdd(pokemon: Pokemon): boolean { + return !!pokemon.getTag(BattlerTagType.FLYING) + } + + onAdd(pokemon: Pokemon): void { + super.onAdd(pokemon); + + pokemon.getMoveQueue().shift() + pokemon.pushMoveHistory({move: Moves.NONE, result: MoveResult.OTHER}) + } + + lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { + super.lapse(pokemon, lapseType); + (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); + return true + } +} + export class ConfusedTag extends BattlerTag { constructor(turnCount: integer, sourceMove: Moves) { super(BattlerTagType.CONFUSED, BattlerTagLapseType.MOVE, turnCount, sourceMove); @@ -276,6 +299,10 @@ export class SeedTag extends BattlerTag { super(BattlerTagType.SEEDED, BattlerTagLapseType.TURN_END, 1, Moves.LEECH_SEED, sourceId); } + canAdd(pokemon: Pokemon): boolean { + return !pokemon.isOfType(Type.GRASS); + } + onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); @@ -364,6 +391,12 @@ export class FrenzyTag extends BattlerTag { } } +export class ChargingTag extends BattlerTag { + constructor(sourceMove: Moves, sourceId: integer) { + super(BattlerTagType.CHARGING, BattlerTagLapseType.CUSTOM, 1, sourceMove, sourceId); + } +} + export class EncoreTag extends BattlerTag { public moveId: Moves; @@ -887,7 +920,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag { stats.map(s => pokemon.getBattleStat(s)).reduce((highestValue: integer, value: integer, i: integer) => { if (value > highestValue) { highestStat = stats[i]; - return highestValue += value; + return value; } return highestValue; }, 0); @@ -951,6 +984,19 @@ export class HideSpriteTag extends BattlerTag { } } +export class TypeImmuneTag extends BattlerTag { + public immuneType: Type; + constructor(tagType: BattlerTagType, sourceMove: Moves, immuneType: Type, length: number) { + super(tagType, BattlerTagLapseType.TURN_END, 1, sourceMove); + } +} + +export class MagnetRisenTag extends TypeImmuneTag { + constructor(tagType: BattlerTagType, sourceMove: Moves) { + super(tagType, sourceMove, Type.GROUND, 5); + } +} + export class TypeBoostTag extends BattlerTag { public boostedType: Type; public boostValue: number; @@ -1077,6 +1123,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new RechargingTag(sourceMove); case BattlerTagType.FLINCHED: return new FlinchedTag(sourceMove); + case BattlerTagType.INTERRUPTED: + return new InterruptedTag(sourceMove); case BattlerTagType.CONFUSED: return new ConfusedTag(turnCount, sourceMove); case BattlerTagType.INFATUATED: @@ -1087,6 +1135,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new NightmareTag(); case BattlerTagType.FRENZY: return new FrenzyTag(sourceMove, sourceId); + case BattlerTagType.CHARGING: + return new ChargingTag(sourceMove, sourceId); case BattlerTagType.ENCORE: return new EncoreTag(sourceId); case BattlerTagType.HELPING_HAND: @@ -1174,6 +1224,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc return new CursedTag(sourceId); case BattlerTagType.CHARGED: return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true); + case BattlerTagType.MAGNET_RISEN: + return new MagnetRisenTag(tagType, sourceMove); case BattlerTagType.NONE: default: return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); diff --git a/src/data/berry.ts b/src/data/berry.ts index b28772373..96b50caa9 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -99,6 +99,8 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { case BerryType.SITRUS: case BerryType.ENIGMA: return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); const hpHealed = new Utils.NumberHolder(Math.floor(pokemon.getMaxHp() / 4)); applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, hpHealed); pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), @@ -106,11 +108,14 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { }; case BerryType.LUM: return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); if (pokemon.status) { pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect))); pokemon.resetStatus(); pokemon.updateInfo(); - } else if (pokemon.getTag(BattlerTagType.CONFUSED)) + } + if (pokemon.getTag(BattlerTagType.CONFUSED)) pokemon.lapseTag(BattlerTagType.CONFUSED); }; case BerryType.LIECHI: @@ -119,6 +124,8 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { case BerryType.APICOT: case BerryType.SALAC: return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); const battleStat = (berryType - BerryType.LIECHI) as BattleStat; const statLevels = new Utils.NumberHolder(1); applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels); @@ -126,16 +133,22 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { }; case BerryType.LANSAT: return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); pokemon.addTag(BattlerTagType.CRIT_BOOST); }; case BerryType.STARF: return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); const statLevels = new Utils.NumberHolder(2); applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels); pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ BattleStat.RAND ], statLevels.value)); }; case BerryType.LEPPA: return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); const ppRestoreMove = pokemon.getMoveset().find(m => !m.getPpRatio()); ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0); pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` restored PP to its move ${ppRestoreMove.getName()}\nusing its ${getBerryName(berryType)}!`)); diff --git a/src/data/biomes.ts b/src/data/biomes.ts index d6e84bcbc..61da0410d 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -241,10 +241,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ { 1: [ Species.BULBASAUR ], 16: [ Species.IVYSAUR ], 32: [ Species.VENUSAUR ] }, Species.GROWLITHE, { 1: [ Species.TURTWIG ], 18: [ Species.GROTLE ], 32: [ Species.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]: [] }, + [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]: [] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION ] }, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.TALL_GRASS]: { @@ -487,14 +487,14 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [ Species.ARBOK, Species.CLODSIRE ], [TimeOfDay.ALL]: [ Species.POLIWRATH, Species.SWALOT, Species.WHISCASH, Species.GASTRODON, Species.SEISMITOAD, Species.STUNFISK, Species.TOXAPEX ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.FERALIGATR, Species.POLITOED, Species.SWAMPERT ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { + [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.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.AZELF, Species.NAGANADEL, Species.GALAR_STUNFISK ] + [TimeOfDay.ALL]: [ Species.FERALIGATR, Species.POLITOED, Species.SWAMPERT, Species.GALAR_STUNFISK ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AZELF, Species.NAGANADEL ] }, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.BEACH]: { @@ -521,7 +521,7 @@ export const biomePokemonPools: BiomePokemonPools = { }, [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.KELDEO ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.KELDEO, Species.TAPU_FINI ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.STARMIE ], [TimeOfDay.DAY]: [ Species.STARMIE ], @@ -530,7 +530,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ Species.KINGLER, Species.CRAWDAUNT, Species.WORMADAM, Species.CRUSTLE, Species.BARBARACLE, Species.CLAWITZER, Species.TOXAPEX, Species.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.KELDEO ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.KELDEO, Species.TAPU_FINI ] }, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.LAKE]: { @@ -615,7 +615,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], - [TimeOfDay.ALL]: [ Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, { 1: [ Species.MANTYKE ], 20: [ Species.MANTINE ] }, Species.ALOMOMOLA, { 1: [ Species.TYNAMO ], 39: [ Species.EELEKTRIK ] }, Species.DHELMISE ] + [TimeOfDay.ALL]: [ Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, { 1: [ Species.MANTYKE ], 52: [ Species.MANTINE ] }, Species.ALOMOMOLA, { 1: [ Species.TYNAMO ], 39: [ Species.EELEKTRIK ] }, Species.DHELMISE ] }, [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], @@ -640,8 +640,14 @@ export const biomePokemonPools: BiomePokemonPools = { [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 ] }, - [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.ARCTOVISH, Species.BASCULEGION ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MILOTIC, Species.NIHILEGO, Species.CURSOLA, Species.OVERQWIL ] }, + [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 ] + }, + [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 ] } }, [Biome.MOUNTAIN]: { @@ -840,7 +846,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ { 1: [ Species.DARUMAKA ], 35: [ Species.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.PHEROMOSA ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.TAPU_BULU, Species.PHEROMOSA ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.HIPPOWDON, Species.HELIOLISK, Species.RABSCA ], [TimeOfDay.DAY]: [ Species.HIPPOWDON, Species.HELIOLISK, Species.RABSCA ], @@ -849,7 +855,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ Species.SANDSLASH, Species.DRAPION, Species.DARMANITAN, Species.MARACTUS, Species.SANDACONDA, Species.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.PHEROMOSA ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.TAPU_BULU, Species.PHEROMOSA ] }, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.ICE_CAVE]: { @@ -951,9 +957,9 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TAUROS, Species.MILTANK, Species.GARDEVOIR, Species.PURUGLY, Species.ZEBSTRIKA, Species.FLORGES, Species.RIBOMBEE, Species.DUBWOOL ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLISSEY, Species.SYLVEON, Species.FLAPPLE, Species.APPLETUN, Species.MEOWSCARADA, Species.HYDRAPPLE ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MELOETTA ] }, - [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } + [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 ] } }, [Biome.POWER_PLANT]: { [BiomePoolTier.COMMON]: { @@ -984,8 +990,8 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.RAICHU, Species.MANECTRIC, Species.LUXRAY, Species.MAGNEZONE, Species.ELECTIVIRE, Species.DEDENNE, Species.VIKAVOLT, Species.TOGEDEMARU, Species.PAWMOT, Species.BELLIBOLT ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JOLTEON, Species.AMPHAROS ] }, - [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, Species.HISUI_ELECTRODE ] }, + [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 ] } }, [Biome.VOLCANO]: { @@ -1035,9 +1041,9 @@ export const biomePokemonPools: BiomePokemonPools = { [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 ] + [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 ] }, - [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, Species.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 ] } }, [Biome.GRAVEYARD]: { @@ -1074,8 +1080,8 @@ export const biomePokemonPools: BiomePokemonPools = { [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 ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SKELEDIRGE, Species.CERULEDGE ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MARSHADOW, Species.SPECTRIER, Species.HISUI_TYPHLOSION ] }, + [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 ] } }, [Biome.DOJO]: { @@ -1109,8 +1115,8 @@ export const biomePokemonPools: BiomePokemonPools = { [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 ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HITMONTOP, Species.GALLADE, Species.PANGORO ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TERRAKION, Species.SIRFETCHD, Species.URSHIFU, Species.HISUI_DECIDUEYE ] }, + [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 ] } }, [Biome.FACTORY]: { @@ -1128,8 +1134,8 @@ export const biomePokemonPools: BiomePokemonPools = { ] }, [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]: [] }, - [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ] }, { 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ] } ] }, + [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.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }, @@ -1168,8 +1174,8 @@ export const biomePokemonPools: BiomePokemonPools = { }, [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]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MR_MIME, Species.WOBBUFFET, Species.ARCHEOPS ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.RUNERIGUS ], [TimeOfDay.NIGHT]: [ Species.RUNERIGUS ], [TimeOfDay.ALL]: [ Species.REGISTEEL, Species.FEZANDIPITI ] }, + [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 ] } }, [Biome.WASTELAND]: { @@ -1245,7 +1251,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ Species.ABSOL, Species.SPIRITOMB, { 1: [ Species.ZORUA ], 30: [ Species.ZOROARK ] }, { 1: [ Species.DEINO ], 50: [ Species.ZWEILOUS ], 64: [ Species.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.GUZZLORD, Species.GALAR_MOLTRES ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI, Species.GALAR_MOLTRES ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], @@ -1253,8 +1259,8 @@ export const biomePokemonPools: BiomePokemonPools = { [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 ] }, - [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UMBREON ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI, Species.GUZZLORD, Species.HISUI_SAMUROTT ] }, + [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 ] } }, [Biome.SPACE]: { @@ -1274,10 +1280,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ { 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ] }, Species.SIGILYPH, { 1: [ Species.SOLOSIS ], 32: [ Species.DUOSION ], 41: [ Species.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]: [ Species.CRESSELIA, { 1: [ Species.COSMOG ], 43: [ Species.COSMOEM ] }, Species.CELESTEELA ] }, + [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.CRESSELIA, Species.CELESTEELA ] }, + [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 ] } }, [Biome.CONSTRUCTION_SITE]: { @@ -1307,10 +1313,10 @@ export const biomePokemonPools: BiomePokemonPools = { }, [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 ] }, + [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 ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION, Species.STAKATAKA ] }, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.JUNGLE]: { @@ -1319,7 +1325,7 @@ export const biomePokemonPools: BiomePokemonPools = { [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 ], 36: [ Species.TOUCANNON ] } ] + [TimeOfDay.ALL]: [ Species.AIPOM, { 1: [ Species.BLITZLE ], 27: [ Species.ZEBSTRIKA ] }, { 1: [ Species.PIKIPEK ], 14: [ Species.TRUMBEAK ], 28: [ Species.TOUCANNON ] } ] }, [BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [ Species.EXEGGCUTE, Species.TROPIUS, Species.COMBEE, Species.KOMALA ], @@ -1352,7 +1358,7 @@ export const biomePokemonPools: BiomePokemonPools = { ] }, [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.VIRIZION, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TAPU_LELE, Species.BUZZWOLE, Species.ZARUDE, Species.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 ], @@ -1367,7 +1373,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KANGASKHAN, Species.SCIZOR, Species.SLAKING, Species.LEAFEON, Species.SERPERIOR, Species.RILLABOOM ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ] }, + [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 ] } }, [Biome.FAIRY_CAVE]: { @@ -1445,10 +1451,10 @@ export const biomePokemonPools: BiomePokemonPools = { }, [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.GIMMIGHOUL ], 40: [ Species.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, Species.TAPU_LELE, Species.TAPU_BULU, Species.TAPU_FINI ] }, + [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, Species.TAPU_LELE, Species.TAPU_BULU, Species.TAPU_FINI ] }, + [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 ] } }, [Biome.SLUM]: { @@ -1479,10 +1485,10 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ { 1: [ Species.VAROOM ], 40: [ Species.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]: [] }, + [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 ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GALAR_WEEZING ] }, + [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.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.SNOWY_FOREST]: { @@ -1516,14 +1522,14 @@ export const biomePokemonPools: BiomePokemonPools = { }, [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.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ARCTOZOLT, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES ] }, - [BiomePoolTier.BOSS_SUPER_RARE]: { + [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.GLASTRIER, Species.CHIEN_PAO ] + [TimeOfDay.ALL]: [ Species.MR_RIME, Species.ARCTOZOLT, Species.ALOLA_SANDSLASH, Species.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 ] } }, [Biome.ISLAND]: { @@ -1550,7 +1556,7 @@ export const biomePokemonPools: BiomePokemonPools = { }, [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.STAKATAKA, Species.BLACEPHALON ] }, + [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLACEPHALON ] }, [BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ], [TimeOfDay.DAY]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ], @@ -1559,7 +1565,7 @@ export const biomePokemonPools: BiomePokemonPools = { [TimeOfDay.ALL]: [ Species.ORICORIO, Species.BRUXISH, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES, Species.ALOLA_DUGTRIO, Species.ALOLA_GOLEM, Species.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.STAKATAKA, Species.BLACEPHALON ] }, + [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLACEPHALON ] }, [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] } }, [Biome.LABORATORY]: { @@ -2708,7 +2714,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.PORYGON, Type.NORMAL, -1, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], + [ Biome.FACTORY, BiomePoolTier.RARE ], [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], [ Biome.LABORATORY, BiomePoolTier.RARE ] ] @@ -3165,7 +3171,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.PORYGON2, Type.NORMAL, -1, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], + [ Biome.FACTORY, BiomePoolTier.RARE ], [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], [ Biome.LABORATORY, BiomePoolTier.RARE ] ] @@ -4371,8 +4377,8 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.CRESSELIA, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.PHIONE, Type.WATER, -1, [ ] @@ -4384,7 +4390,9 @@ export const biomeTrainerPools: BiomeTrainerPools = { [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], - [ Species.SHAYMIN, Type.GRASS, -1, [ ] + [ Species.SHAYMIN, Type.GRASS, -1, [ + [ Biome.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.ARCEUS, Type.NORMAL, -1, [ ] ], @@ -5103,8 +5111,8 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.VIRIZION, Type.GRASS, Type.FIGHTING, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.GRASS, BiomePoolTier.ULTRA_RARE ], + [ Biome.GRASS, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.TORNADUS, Type.FLYING, -1, [ @@ -5779,18 +5787,18 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.TAPU_LELE, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.TAPU_BULU, Type.GRASS, Type.FAIRY, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.TAPU_FINI, Type.WATER, Type.FAIRY, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.COSMOG, Type.PSYCHIC, -1, [ @@ -5840,8 +5848,8 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.GUZZLORD, Type.DARK, Type.DRAGON, [ - [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.SLUM, BiomePoolTier.ULTRA_RARE ], + [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.NECROZMA, Type.PSYCHIC, -1, [ @@ -5867,8 +5875,8 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.STAKATAKA, Type.ROCK, Type.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.ULTRA_RARE ], - [ Biome.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] ] ], [ Species.BLACEPHALON, Type.FIRE, Type.GHOST, [ @@ -6129,21 +6137,21 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.CURSOLA, Type.GHOST, -1, [ [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], [ Species.SIRFETCHD, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] ] ], [ Species.MR_RIME, Type.ICE, Type.PSYCHIC, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] ] ], [ Species.RUNERIGUS, Type.GROUND, Type.GHOST, [ [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + [ Biome.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] ] ], [ Species.MILCERY, Type.FAIRY, -1, [ @@ -6305,11 +6313,11 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.SNEASLER, Type.FIGHTING, Type.POISON, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] ] ], [ Species.OVERQWIL, Type.DARK, Type.POISON, [ - [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] ] ], [ Species.ENAMORUS, Type.FAIRY, Type.FLYING, [ @@ -6972,7 +6980,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.GALAR_SLOWBRO, Type.POISON, Type.PSYCHIC, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] ] ], [ Species.GALAR_FARFETCHD, Type.FIGHTING, -1, [ @@ -6980,7 +6988,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.GALAR_WEEZING, Type.POISON, Type.FAIRY, [ - [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] ] ], [ Species.GALAR_MR_MIME, Type.ICE, Type.PSYCHIC, [ @@ -7003,7 +7011,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.GALAR_SLOWKING, Type.POISON, Type.PSYCHIC, [ - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] ] ], [ Species.GALAR_CORSOLA, Type.GHOST, -1, [ @@ -7024,7 +7032,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.GALAR_DARMANITAN, Type.ICE, -1, [ [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] ] ], [ Species.GALAR_YAMASK, Type.GROUND, Type.GHOST, [ @@ -7033,7 +7041,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.GALAR_STUNFISK, Type.GROUND, Type.STEEL, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] ] ], [ Species.HISUI_GROWLITHE, Type.FIRE, Type.ROCK, [ @@ -7041,7 +7049,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.HISUI_ARCANINE, Type.FIRE, Type.ROCK, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] ] ], [ Species.HISUI_VOLTORB, Type.ELECTRIC, Type.GRASS, [ @@ -7049,11 +7057,11 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.HISUI_ELECTRODE, Type.ELECTRIC, Type.GRASS, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] ] ], [ Species.HISUI_TYPHLOSION, Type.FIRE, Type.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] ] ], [ Species.HISUI_QWILFISH, Type.DARK, Type.POISON, [ @@ -7065,11 +7073,11 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.HISUI_SAMUROTT, Type.WATER, Type.DARK, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] ] ], [ Species.HISUI_LILLIGANT, Type.GRASS, Type.FIGHTING, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] ] ], [ Species.HISUI_ZORUA, Type.NORMAL, Type.GHOST, [ @@ -7078,7 +7086,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.HISUI_ZOROARK, Type.NORMAL, Type.GHOST, [ [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] ] ], [ Species.HISUI_BRAVIARY, Type.PSYCHIC, Type.FLYING, [ @@ -7091,7 +7099,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ], [ Species.HISUI_GOODRA, Type.STEEL, Type.DRAGON, [ [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] ] ], [ Species.HISUI_AVALUGG, Type.ICE, Type.ROCK, [ @@ -7099,7 +7107,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ Species.HISUI_DECIDUEYE, Type.GRASS, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] + [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] ] ], [ Species.PALDEA_TAUROS, Type.FIGHTING, -1, [ diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 91a78a9b2..045229779 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -5,155 +5,155 @@ import * as Utils from "../utils"; export const speciesEggMoves = { - [Species.BULBASAUR]: [ Moves.GIGA_DRAIN, Moves.SLUDGE_BOMB, Moves.EARTH_POWER, Moves.STRENGTH_SAP ], - [Species.CHARMANDER]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.EARTH_POWER, Moves.GLAIVE_RUSH ], - [Species.SQUIRTLE]: [ Moves.AURA_SPHERE, Moves.DARK_PULSE, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ], + [Species.BULBASAUR]: [ Moves.GIGA_DRAIN, Moves.SLUDGE_BOMB, Moves.EARTH_POWER, Moves.SAPPY_SEED ], + [Species.CHARMANDER]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.EARTH_POWER, Moves.OBLIVION_WING ], + [Species.SQUIRTLE]: [ Moves.ICE_BEAM, Moves.DARK_PULSE, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ], [Species.CATERPIE]: [ Moves.EARTH_POWER, Moves.SILK_TRAP, Moves.STICKY_WEB, Moves.BLEAKWIND_STORM ], - [Species.WEEDLE]: [ Moves.DRILL_RUN, Moves.ROCK_BLAST, Moves.BANEFUL_BUNKER, Moves.BARB_BARRAGE ], + [Species.WEEDLE]: [ Moves.DRILL_RUN, Moves.SWORDS_DANCE, Moves.BANEFUL_BUNKER, Moves.BARB_BARRAGE ], [Species.PIDGEY]: [ Moves.HEAT_WAVE, Moves.FOCUS_BLAST, Moves.U_TURN, Moves.WILDBOLT_STORM ], [Species.RATTATA]: [ Moves.HYPER_FANG, Moves.PSYCHIC_FANGS, Moves.FIRE_FANG, Moves.EXTREME_SPEED ], - [Species.SPEAROW]: [ Moves.DUAL_WINGBEAT, Moves.SUCKER_PUNCH, Moves.PARTING_SHOT, Moves.HYPER_DRILL ], - [Species.EKANS]: [ Moves.SHED_TAIL, Moves.DRAGON_DANCE, Moves.LEECH_LIFE, Moves.NOXIOUS_TORQUE ], - [Species.SANDSHREW]: [ Moves.DIRE_CLAW, Moves.SPIKY_SHIELD, Moves.SHORE_UP, Moves.PRECIPICE_BLADES ], - [Species.NIDORAN_F]: [ Moves.SCALD, Moves.SHORE_UP, Moves.CALM_MIND, Moves.BANEFUL_BUNKER ], - [Species.NIDORAN_M]: [ Moves.DARK_PULSE, Moves.SHORE_UP, Moves.CALM_MIND, Moves.KINGS_SHIELD ], + [Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.EXTREME_SPEED, Moves.TIDY_UP, Moves.TRIPLE_ARROWS ], + [Species.EKANS]: [ Moves.SHED_TAIL, Moves.DRAGON_DANCE, Moves.SLACK_OFF, Moves.NOXIOUS_TORQUE ], + [Species.SANDSHREW]: [ Moves.DIRE_CLAW, Moves.CEASELESS_EDGE, Moves.SHORE_UP, Moves.PRECIPICE_BLADES ], + [Species.NIDORAN_F]: [ Moves.DIRE_CLAW, Moves.SHORE_UP, Moves.THOUSAND_WAVES, Moves.SALT_CURE ], + [Species.NIDORAN_M]: [ Moves.NOXIOUS_TORQUE, Moves.KINGS_SHIELD, Moves.NO_RETREAT, Moves.PRECIPICE_BLADES ], [Species.VULPIX]: [ Moves.MOONBLAST, Moves.PSYCHIC, Moves.MORNING_SUN, Moves.TAIL_GLOW ], - [Species.ZUBAT]: [ Moves.CRUNCH, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.FLOATY_FALL ], - [Species.ODDISH]: [ Moves.POLLEN_PUFF, Moves.FIERY_DANCE, Moves.FLORAL_HEALING, Moves.SPORE ], - [Species.PARAS]: [ Moves.FIRST_IMPRESSION, Moves.DIRE_CLAW, Moves.CRABHAMMER, Moves.SAPPY_SEED ], - [Species.VENONAT]: [ Moves.TWIN_BEAM, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.BLOOD_MOON ], - [Species.DIGLETT]: [ Moves.STRENGTH_SAP, Moves.SWORDS_DANCE, Moves.CLOSE_COMBAT, Moves.HEADLONG_RUSH ], + [Species.ZUBAT]: [ Moves.FLOATY_FALL, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.BRAVE_BIRD ], + [Species.ODDISH]: [ Moves.SLUDGE_BOMB, Moves.FIERY_DANCE, Moves.STRENGTH_SAP, Moves.SPORE ], + [Species.PARAS]: [ Moves.FIRST_IMPRESSION, Moves.SAPPY_SEED, Moves.CRABHAMMER, Moves.DIRE_CLAW ], + [Species.VENONAT]: [ Moves.SLUDGE_BOMB, Moves.MOONLIGHT, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ], + [Species.DIGLETT]: [ Moves.STRENGTH_SAP, Moves.SWORDS_DANCE, Moves.ICE_SPINNER, Moves.HEADLONG_RUSH ], [Species.MEOWTH]: [ Moves.COVET, Moves.HAPPY_HOUR, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ], [Species.PSYDUCK]: [ Moves.MYSTICAL_POWER, Moves.AQUA_STEP, Moves.AURA_SPHERE, Moves.MIND_BLOWN ], - [Species.MANKEY]: [ Moves.DRAIN_PUNCH, Moves.PLAY_ROUGH, Moves.METEOR_MASH, Moves.NO_RETREAT ], + [Species.MANKEY]: [ Moves.DRAIN_PUNCH, Moves.RAGING_FURY, Moves.METEOR_MASH, Moves.NO_RETREAT ], [Species.GROWLITHE]: [ Moves.ZING_ZAP, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ], [Species.POLIWAG]: [ Moves.BOUNCY_BUBBLE, Moves.WILDBOLT_STORM, Moves.DRAIN_PUNCH, Moves.SURGING_STRIKES ], - [Species.ABRA]: [ Moves.MYSTICAL_FIRE, Moves.AURA_SPHERE, Moves.THUNDERBOLT, Moves.MYSTICAL_POWER ], - [Species.MACHOP]: [ Moves.BULLET_PUNCH, Moves.KNOCK_OFF, Moves.FLYING_PRESS, Moves.FISSURE ], - [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.WEATHER_BALL, Moves.FIRE_LASH, Moves.STRENGTH_SAP ], + [Species.ABRA]: [ Moves.MOONBLAST, Moves.FLAMETHROWER, Moves.THUNDERBOLT, Moves.PSYSTRIKE ], + [Species.MACHOP]: [ Moves.MACH_PUNCH, Moves.METEOR_MASH, Moves.ICE_HAMMER, Moves.FISSURE ], + [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], [Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.STRENGTH_SAP, Moves.HAZE, Moves.MALIGNANT_CHAIN ], [Species.GEODUDE]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.SHORE_UP, Moves.HEAD_SMASH ], - [Species.PONYTA]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.MORNING_SUN, Moves.VOLT_TACKLE ], - [Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.PARTING_SHOT, Moves.COSMIC_POWER, Moves.PSYSTRIKE ], - [Species.MAGNEMITE]: [ Moves.PARABOLIC_CHARGE, Moves.BODY_PRESS, Moves.ENERGY_BALL, Moves.THUNDERCLAP ], + [Species.PONYTA]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ], + [Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.PARTING_SHOT, Moves.COSMIC_POWER, Moves.LUMINA_CRASH ], + [Species.MAGNEMITE]: [ Moves.PARABOLIC_CHARGE, Moves.BODY_PRESS, Moves.ICE_BEAM, Moves.THUNDERCLAP ], [Species.FARFETCHD]: [ Moves.BATON_PASS, Moves.SACRED_SWORD, Moves.ROOST, Moves.VICTORY_DANCE ], - [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.HEAD_CHARGE, Moves.BRAVE_BIRD, Moves.TRIPLE_ARROWS ], + [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.MULTI_ATTACK, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], [Species.SEEL]: [ Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.SLACK_OFF, Moves.BOUNCY_BUBBLE ], [Species.GRIMER]: [ Moves.SHADOW_SNEAK, Moves.CURSE, Moves.STRENGTH_SAP, Moves.NOXIOUS_TORQUE ], - [Species.SHELLDER]: [ Moves.BODY_PRESS, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.RECOVER ], + [Species.SHELLDER]: [ Moves.ROCK_BLAST, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.BONE_RUSH ], [Species.GASTLY]: [ Moves.FROST_BREATH, Moves.AURA_SPHERE, Moves.NASTY_PLOT, Moves.MALIGNANT_CHAIN ], [Species.ONIX]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.HEAD_SMASH, Moves.SPIN_OUT ], [Species.DROWZEE]: [ Moves.DREAM_EATER, Moves.RECOVER, Moves.NIGHTMARE, Moves.SPORE ], - [Species.KRABBY]: [ Moves.CRUSH_GRIP, Moves.LIQUIDATION, Moves.SHORE_UP, Moves.SHELL_SMASH ], - [Species.VOLTORB]: [ Moves.BUZZY_BUZZ, Moves.VOLT_SWITCH, Moves.ENERGY_BALL, Moves.NASTY_PLOT ], + [Species.KRABBY]: [ Moves.ICICLE_CRASH, Moves.LIQUIDATION, Moves.IVY_CUDGEL, Moves.SHELL_SMASH ], + [Species.VOLTORB]: [ Moves.BUZZY_BUZZ, Moves.OVERHEAT, Moves.FROST_BREATH, Moves.TAIL_GLOW ], [Species.EXEGGCUTE]: [ Moves.MYSTICAL_POWER, Moves.APPLE_ACID, Moves.TRICK_ROOM, Moves.FICKLE_BEAM ], [Species.CUBONE]: [ Moves.HEAD_SMASH, Moves.WOOD_HAMMER, Moves.PAIN_SPLIT, Moves.VOLT_TACKLE ], [Species.LICKITUNG]: [ Moves.BODY_SLAM, Moves.FIRE_LASH, Moves.GRAV_APPLE, Moves.MILK_DRINK ], - [Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.MOONBLAST, Moves.SEARING_SHOT ], - [Species.RHYHORN]: [ Moves.HIGH_HORSEPOWER, Moves.METEOR_MASH, Moves.WILD_CHARGE, Moves.HEAD_SMASH ], + [Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], + [Species.RHYHORN]: [ Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.FLARE_BLITZ, Moves.HEAD_SMASH ], [Species.TANGELA]: [ Moves.STRENGTH_SAP, Moves.INFESTATION, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], [Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.BREAKING_SWIPE, Moves.RETURN, Moves.SEISMIC_TOSS ], - [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.SPACIAL_REND, Moves.HURRICANE, Moves.DRAGON_ENERGY ], + [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.HURRICANE, Moves.DRAGON_ENERGY ], [Species.GOLDEEN]: [ Moves.DRILL_RUN, Moves.FLIP_TURN, Moves.DRAGON_DANCE, Moves.FISHIOUS_REND ], - [Species.STARYU]: [ Moves.METEOR_BEAM, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MYSTICAL_POWER ], - [Species.SCYTHER]: [ Moves.DUAL_WINGBEAT, Moves.BUG_BITE, Moves.STORM_THROW, Moves.MIGHTY_CLEAVE ], - [Species.PINSIR]: [ Moves.CRUSH_GRIP, Moves.LUNGE, Moves.CLOSE_COMBAT, Moves.EXTREME_SPEED ], + [Species.STARYU]: [ Moves.CALM_MIND, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MYSTICAL_POWER ], + [Species.SCYTHER]: [ Moves.GEAR_GRIND, Moves.BUG_BITE, Moves.STORM_THROW, Moves.MIGHTY_CLEAVE ], + [Species.PINSIR]: [ Moves.CRUSH_GRIP, Moves.U_TURN, Moves.CLOSE_COMBAT, Moves.EXTREME_SPEED ], [Species.TAUROS]: [ Moves.HIGH_HORSEPOWER, Moves.FLARE_BLITZ, Moves.WAVE_CRASH, Moves.HEAD_CHARGE ], [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.DRAGON_ASCENT ], - [Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.RELIC_SONG ], + [Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.BOOMBURST ], [Species.DITTO]: [ Moves.MIMIC, Moves.COPYCAT, Moves.ME_FIRST, Moves.METRONOME ], - [Species.EEVEE]: [ Moves.WISH, Moves.REVELATION_DANCE, Moves.VEEVEE_VOLLEY, Moves.CLANGOROUS_SOUL ], - [Species.PORYGON]: [ Moves.PARABOLIC_CHARGE, Moves.AURA_SPHERE, Moves.TOPSY_TURVY, Moves.TECHNO_BLAST ], - [Species.OMANYTE]: [ Moves.SCALD, Moves.EERIE_SPELL, Moves.POWER_GEM, Moves.STRENGTH_SAP ], + [Species.EEVEE]: [ Moves.WISH, Moves.REVELATION_DANCE, Moves.TRI_ATTACK, Moves.NO_RETREAT ], + [Species.PORYGON]: [ Moves.BUZZY_BUZZ, Moves.AURA_SPHERE, Moves.TOPSY_TURVY, Moves.TECHNO_BLAST ], + [Species.OMANYTE]: [ Moves.FREEZE_DRY, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STEAM_ERUPTION ], [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.DRILL_RUN, Moves.AQUA_CUTTER, Moves.MIGHTY_CLEAVE ], - [Species.AERODACTYL]: [ Moves.DUAL_WINGBEAT, Moves.SUPERCELL_SLAM, Moves.SWORDS_DANCE, Moves.MIGHTY_CLEAVE ], - [Species.ARTICUNO]: [ Moves.FREEZING_GLARE, Moves.GLACIATE, Moves.AURORA_VEIL, Moves.BLEAKWIND_STORM ], - [Species.ZAPDOS]: [ Moves.THUNDEROUS_KICK, Moves.PARABOLIC_CHARGE, Moves.SPIKY_SHIELD, Moves.BOLT_BEAK ], - [Species.MOLTRES]: [ Moves.FIERY_WRATH, Moves.SCORCHING_SANDS, Moves.BURNING_BULWARK, Moves.ERUPTION ], - [Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.METEOR_MASH, Moves.DRAIN_PUNCH, Moves.FLOATY_FALL ], - [Species.MEWTWO]: [ Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.PLASMA_FISTS, Moves.DOUBLE_IRON_BASH ], + [Species.AERODACTYL]: [ Moves.FLOATY_FALL, Moves.HEAD_SMASH, Moves.SWORDS_DANCE, Moves.MIGHTY_CLEAVE ], + [Species.ARTICUNO]: [ Moves.AURA_SPHERE, Moves.CALM_MIND, Moves.AURORA_VEIL, Moves.AEROBLAST ], + [Species.ZAPDOS]: [ Moves.WEATHER_BALL, Moves.CALM_MIND, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ], + [Species.MOLTRES]: [ Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.BURNING_BULWARK, Moves.TORCH_SONG ], + [Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.METEOR_MASH, Moves.FIRE_LASH, Moves.FLOATY_FALL ], + [Species.MEWTWO]: [ Moves.METEOR_MASH, Moves.MOONBLAST, Moves.PLASMA_FISTS, Moves.PHOTON_GEYSER ], [Species.MEW]: [ Moves.PHOTON_GEYSER, Moves.QUIVER_DANCE, Moves.VICTORY_DANCE, Moves.REVIVAL_BLESSING ], [Species.CHIKORITA]: [ Moves.ROCK_SLIDE, Moves.PLAY_ROUGH, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ], [Species.CYNDAQUIL]: [ Moves.NASTY_PLOT, Moves.SCORCHING_SANDS, Moves.FIERY_DANCE, Moves.ELECTRO_DRIFT ], [Species.TOTODILE]: [ Moves.THUNDER_PUNCH, Moves.DRAGON_DANCE, Moves.ICICLE_CRASH, Moves.FISHIOUS_REND ], - [Species.SENTRET]: [ Moves.TIDY_UP, Moves.COVET, Moves.NUZZLE, Moves.EXTREME_SPEED ], + [Species.SENTRET]: [ Moves.TIDY_UP, Moves.THIEF, Moves.NUZZLE, Moves.EXTREME_SPEED ], [Species.HOOTHOOT]: [ Moves.CALM_MIND, Moves.ESPER_WING, Moves.BOOMBURST, Moves.OBLIVION_WING ], - [Species.LEDYBA]: [ Moves.FIRST_IMPRESSION, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.DOUBLE_IRON_BASH ], + [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.THIEF, Moves.PARTING_SHOT, Moves.SPORE ], [Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.MEGAHORN, Moves.SILK_TRAP, Moves.STRENGTH_SAP ], - [Species.CHINCHOU]: [ Moves.PARABOLIC_CHARGE, Moves.BOUNCY_BUBBLE, Moves.VOLT_SWITCH, Moves.TAIL_GLOW ], - [Species.PICHU]: [ Moves.ZIPPY_ZAP, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.PIKA_PAPOW ], - [Species.CLEFFA]: [ Moves.CALM_MIND, Moves.POWER_GEM, Moves.WISH, Moves.LIGHT_OF_RUIN ], + [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.VOLT_SWITCH, Moves.TAIL_GLOW ], + [Species.PICHU]: [ Moves.THUNDERCLAP, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.THUNDER_CAGE ], + [Species.CLEFFA]: [ Moves.TAKE_HEART, Moves.POWER_GEM, Moves.WISH, Moves.LIGHT_OF_RUIN ], [Species.IGGLYBUFF]: [ Moves.MOONBLAST, Moves.APPLE_ACID, Moves.WISH, Moves.BOOMBURST ], - [Species.TOGEPI]: [ Moves.EARTH_POWER, Moves.ROOST, Moves.MYSTICAL_FIRE, Moves.MOONBLAST ], - [Species.NATU]: [ Moves.AEROBLAST, Moves.ROOST, Moves.CALM_MIND, Moves.PSYCHO_BOOST ], - [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.AURA_SPHERE, Moves.DRAGON_ENERGY, Moves.TAIL_GLOW ], + [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.MOONBLAST, Moves.FIERY_DANCE ], + [Species.NATU]: [ Moves.AEROBLAST, Moves.ROOST, Moves.CALM_MIND, Moves.LUMINA_CRASH ], + [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.DRAGON_ENERGY, Moves.TAIL_GLOW ], [Species.HOPPIP]: [ Moves.AIR_SLASH, Moves.STRENGTH_SAP, Moves.QUIVER_DANCE, Moves.SEED_FLARE ], - [Species.AIPOM]: [ Moves.TIDY_UP, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.CRUSH_GRIP ], - [Species.SUNKERN]: [ Moves.SPORE, Moves.WEATHER_BALL, Moves.FIERY_DANCE, Moves.HYDRO_STEAM ], - [Species.YANMA]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.PSYCHIC_NOISE, Moves.AEROBLAST ], - [Species.WOOPER]: [ Moves.BODY_PRESS, Moves.RECOVER, Moves.CURSE, Moves.SURGING_STRIKES ], - [Species.MURKROW]: [ Moves.THIEF, Moves.FLOATY_FALL, Moves.TIDY_UP, Moves.WICKED_BLOW ], - [Species.MISDREAVUS]: [ Moves.TAKE_HEART, Moves.DRAINING_KISS, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], - [Species.UNOWN]: [ Moves.SECRET_POWER, Moves.COSMIC_POWER, Moves.ANCIENT_POWER, Moves.MYSTICAL_POWER ], + [Species.AIPOM]: [ Moves.TIDY_UP, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.POPULATION_BOMB ], + [Species.SUNKERN]: [ Moves.SPORE, Moves.SAPPY_SEED, Moves.FIERY_DANCE, Moves.HYDRO_STEAM ], + [Species.YANMA]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.HEAT_WAVE, Moves.AEROBLAST ], + [Species.WOOPER]: [ Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.CURSE, 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.ASTRAL_BARRAGE ], + [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.LUNGE, Moves.BODY_PRESS, Moves.SHORE_UP ], [Species.DUNSPARCE]: [ Moves.BODY_SLAM, Moves.WICKED_TORQUE, Moves.BLAZING_TORQUE, Moves.EXTREME_SPEED ], [Species.GLIGAR]: [ Moves.STONE_AXE, Moves.EARTHQUAKE, Moves.ROOST, Moves.FLOATY_FALL ], [Species.SNUBBULL]: [ Moves.PARTING_SHOT, Moves.EARTHQUAKE, Moves.STUFF_CHEEKS, Moves.MAGICAL_TORQUE ], [Species.QWILFISH]: [ Moves.BARB_BARRAGE, Moves.BANEFUL_BUNKER, Moves.NUZZLE, Moves.FISHIOUS_REND ], - [Species.SHUCKLE]: [ Moves.COSMIC_POWER, Moves.ACCELEROCK, Moves.POWER_SHIFT, Moves.BODY_PRESS ], - [Species.HERACROSS]: [ Moves.ROCK_BLAST, Moves.DRAIN_PUNCH, Moves.BULLET_SEED, Moves.FIRST_IMPRESSION ], + [Species.SHUCKLE]: [ Moves.COSMIC_POWER, Moves.SHORE_UP, Moves.BODY_PRESS, Moves.SALT_CURE ], + [Species.HERACROSS]: [ Moves.ROCK_BLAST, Moves.LUNGE, Moves.ICICLE_SPEAR, Moves.TIDY_UP ], [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.KOWTOW_CLEAVE, Moves.TRIPLE_AXEL, Moves.GLACIAL_LANCE ], [Species.TEDDIURSA]: [ Moves.DIRE_CLAW, Moves.FACADE, Moves.BULK_UP, Moves.SLACK_OFF ], [Species.SLUGMA]: [ Moves.BURNING_BULWARK, Moves.POWER_GEM, Moves.MAGMA_STORM, Moves.HYDRO_STEAM ], [Species.SWINUB]: [ Moves.ICE_SPINNER, Moves.HEADLONG_RUSH, Moves.MIGHTY_CLEAVE, Moves.GLACIAL_LANCE ], - [Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.SPIKY_SHIELD, Moves.STRENGTH_SAP ], + [Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.SALT_CURE ], [Species.REMORAID]: [ Moves.TWIN_BEAM, Moves.SNIPE_SHOT, Moves.SEARING_SHOT, Moves.ELECTRO_SHOT ], - [Species.DELIBIRD]: [ Moves.GLACIATE, Moves.ROCK_BLAST, Moves.CHILLY_RECEPTION, Moves.BLEAKWIND_STORM ], + [Species.DELIBIRD]: [ Moves.GLACIATE, Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.BLEAKWIND_STORM ], [Species.SKARMORY]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.BEAK_BLAST ], [Species.HOUNDOUR]: [ Moves.SEARING_SHOT, Moves.FIERY_WRATH, Moves.PARTING_SHOT, Moves.HYDRO_STEAM ], - [Species.PHANPY]: [ Moves.SHORE_UP, Moves.HEAD_SMASH, Moves.ICE_SHARD, Moves.VOLT_TACKLE ], + [Species.PHANPY]: [ Moves.SHORE_UP, Moves.HEAD_SMASH, Moves.MOUNTAIN_GALE, Moves.VOLT_TACKLE ], [Species.STANTLER]: [ Moves.HORN_LEECH, Moves.HIGH_JUMP_KICK, Moves.BULK_UP, Moves.HEAD_CHARGE ], [Species.SMEARGLE]: [ Moves.BATON_PASS, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.SPORE ], - [Species.TYROGUE]: [ Moves.MACH_PUNCH, Moves.WICKED_TORQUE, Moves.METEOR_MASH, Moves.COLLISION_COURSE ], - [Species.SMOOCHUM]: [ Moves.FREEZING_GLARE, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.TAKE_HEART ], - [Species.ELEKID]: [ Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.ICE_HAMMER, Moves.PLASMA_FISTS ], - [Species.MAGBY]: [ Moves.STORED_POWER, Moves.HYDRO_STEAM, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ], + [Species.TYROGUE]: [ Moves.VICTORY_DANCE, Moves.WICKED_TORQUE, Moves.METEOR_MASH, Moves.COLLISION_COURSE ], + [Species.SMOOCHUM]: [ Moves.EXPANDING_FORCE, Moves.AURA_SPHERE, Moves.FREEZY_FROST, Moves.TAKE_HEART ], + [Species.ELEKID]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.ICE_HAMMER, Moves.PLASMA_FISTS ], + [Species.MAGBY]: [ Moves.STORED_POWER, Moves.EARTH_POWER, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ], [Species.MILTANK]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.YAWN, Moves.SIZZLY_SLIDE ], [Species.RAIKOU]: [ Moves.THUNDERCLAP, Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE ], [Species.ENTEI]: [ Moves.BURNING_BULWARK, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.MIGHTY_CLEAVE ], [Species.SUICUNE]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE ], [Species.LARVITAR]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.MIGHTY_CLEAVE, Moves.SHORE_UP ], - [Species.LUGIA]: [ Moves.COSMIC_POWER, Moves.STORED_POWER, Moves.SCALD, Moves.OBLIVION_WING ], + [Species.LUGIA]: [ Moves.TAKE_HEART, Moves.STORED_POWER, Moves.SCALD, Moves.OBLIVION_WING ], [Species.HO_OH]: [ Moves.BURNING_BULWARK, Moves.U_TURN, Moves.BRAVE_BIRD, Moves.REVIVAL_BLESSING ], [Species.CELEBI]: [ Moves.MYSTICAL_POWER, Moves.STORED_POWER, Moves.COSMIC_POWER, Moves.SEED_FLARE ], [Species.TREECKO]: [ Moves.DRAGON_PULSE, Moves.DRAGON_ENERGY, Moves.SECRET_SWORD, Moves.SEED_FLARE ], - [Species.TORCHIC]: [ Moves.THUNDEROUS_KICK, Moves.POWER_UP_PUNCH, Moves.KNOCK_OFF, Moves.SACRED_FIRE ], - [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.ICICLE_CRASH, Moves.BULK_UP, Moves.WAVE_CRASH ], + [Species.TORCHIC]: [ Moves.HIGH_JUMP_KICK, Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.V_CREATE ], + [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.ICICLE_CRASH, Moves.BULK_UP, Moves.SURGING_STRIKES ], [Species.POOCHYENA]: [ Moves.JAW_LOCK, Moves.PSYCHIC_FANGS, Moves.POISON_FANG, Moves.NO_RETREAT ], [Species.ZIGZAGOON]: [ Moves.EXTREME_SPEED, Moves.ENDURE, Moves.HIGH_HORSEPOWER, Moves.TIDY_UP ], [Species.WURMPLE]: [ Moves.BATON_PASS, Moves.BLEAKWIND_STORM, Moves.STICKY_WEB, Moves.MALIGNANT_CHAIN ], [Species.LOTAD]: [ Moves.REVELATION_DANCE, Moves.APPLE_ACID, Moves.ICE_BEAM, Moves.QUIVER_DANCE ], [Species.SEEDOT]: [ Moves.SWORDS_DANCE, Moves.GRASSY_GLIDE, Moves.KOWTOW_CLEAVE, Moves.IVY_CUDGEL ], - [Species.TAILLOW]: [ Moves.BOOMBURST, Moves.FACADE, Moves.DRILL_RUN, Moves.VOLT_TACKLE ], + [Species.TAILLOW]: [ Moves.SWORDS_DANCE, Moves.FACADE, Moves.DRILL_RUN, Moves.EXTREME_SPEED ], [Species.WINGULL]: [ Moves.THUNDER, Moves.FLIP_TURN, Moves.DEFOG, Moves.STEAM_ERUPTION ], - [Species.RALTS]: [ Moves.VICTORY_DANCE, Moves.CEASELESS_EDGE, Moves.ICE_BEAM, Moves.PHOTON_GEYSER ], + [Species.RALTS]: [ Moves.BOOMBURST, Moves.BITTER_BLADE, Moves.QUIVER_DANCE, Moves.VICTORY_DANCE ], [Species.SURSKIT]: [ Moves.ROOST, Moves.FIERY_DANCE, Moves.STICKY_WEB, Moves.BLEAKWIND_STORM ], - [Species.SHROOMISH]: [ Moves.BONEMERANG, Moves.MORTAL_SPIN, Moves.STORM_THROW, Moves.SAPPY_SEED ], + [Species.SHROOMISH]: [ Moves.ACCELEROCK, Moves.TRAILBLAZE, Moves.STORM_THROW, Moves.SAPPY_SEED ], [Species.SLAKOTH]: [ Moves.FACADE, Moves.JUMP_KICK, Moves.KNOCK_OFF, Moves.SKILL_SWAP ], - [Species.NINCADA]: [ Moves.ATTACK_ORDER, Moves.STICKY_WEB, Moves.POLTERGEIST, Moves.SHELL_SMASH ], - [Species.WHISMUR]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], + [Species.NINCADA]: [ Moves.ATTACK_ORDER, Moves.STICKY_WEB, Moves.SPIRIT_SHACKLE, Moves.SHELL_SMASH ], + [Species.WHISMUR]: [ Moves.ALLURING_VOICE, Moves.TRICK_ROOM, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], [Species.MAKUHITA]: [ Moves.STORM_THROW, Moves.SLACK_OFF, Moves.HEAT_CRASH, Moves.DOUBLE_IRON_BASH ], - [Species.AZURILL]: [ Moves.SLACK_OFF, Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.WAVE_CRASH ], + [Species.AZURILL]: [ Moves.JET_PUNCH, Moves.SPIRIT_BREAK, 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.SKETCH, Moves.TIDY_UP, Moves.V_CREATE ], [Species.SABLEYE]: [ Moves.RECOVER, Moves.TOPSY_TURVY, Moves.PARTING_SHOT, Moves.SALT_CURE ], - [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.RECOVER, Moves.EARTHQUAKE, Moves.FIRE_LASH ], - [Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.DOUBLE_IRON_BASH ], + [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.MAGICAL_TORQUE, Moves.EARTHQUAKE, Moves.DOUBLE_IRON_BASH ], + [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.RISING_VOLTAGE, Moves.FLAMETHROWER, Moves.NASTY_PLOT, Moves.ICE_BEAM ], - [Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.PARABOLIC_CHARGE, Moves.SPLISHY_SPLASH, Moves.TAIL_GLOW ], - [Species.MINUN]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.SIZZLY_SLIDE, Moves.TAIL_GLOW ], + [Species.PLUSLE]: [ Moves.FLAMETHROWER, Moves.GLITZY_GLOW, Moves.SPLISHY_SPLASH, Moves.TAIL_GLOW ], + [Species.MINUN]: [ Moves.ICE_BEAM, Moves.BADDY_BAD, Moves.SIZZLY_SLIDE, Moves.TAIL_GLOW ], [Species.VOLBEAT]: [ Moves.PARTING_SHOT, Moves.LUNGE, Moves.POWDER, Moves.VICTORY_DANCE ], [Species.ILLUMISE]: [ Moves.PARTING_SHOT, Moves.POLLEN_PUFF, Moves.POWDER, Moves.QUIVER_DANCE ], [Species.GULPIN]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.GROWTH, Moves.MALIGNANT_CHAIN ], @@ -162,122 +162,122 @@ export const speciesEggMoves = { [Species.NUMEL]: [ Moves.SANDSEAR_STORM, Moves.SPIKES, Moves.SHORE_UP, Moves.SEARING_SHOT ], [Species.TORKOAL]: [ Moves.SLACK_OFF, Moves.SPIKES, Moves.BODY_PRESS, Moves.BURNING_BULWARK ], [Species.SPOINK]: [ Moves.AURA_SPHERE, Moves.MILK_DRINK, Moves.COSMIC_POWER, Moves.EXPANDING_FORCE ], - [Species.SPINDA]: [ Moves.SUPERPOWER, Moves.RECOVER, Moves.FLEUR_CANNON, Moves.V_CREATE ], + [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.SCORCHING_SANDS, Moves.CEASELESS_EDGE, Moves.NIGHT_DAZE, Moves.SAPPY_SEED ], + [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.DIRE_CLAW, Moves.NASTY_PLOT, Moves.SUCKER_PUNCH, Moves.SHED_TAIL ], [Species.LUNATONE]: [ Moves.POWER_GEM, Moves.NIGHT_DAZE, Moves.STORED_POWER, Moves.LUMINA_CRASH ], [Species.SOLROCK]: [ Moves.PSYSHIELD_BASH, Moves.MIGHTY_CLEAVE, Moves.POWER_TRIP, Moves.SACRED_FIRE ], [Species.BARBOACH]: [ Moves.DRAGON_DANCE, Moves.SUPERCELL_SLAM, Moves.ICE_SPINNER, Moves.WAVE_CRASH ], - [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.AQUA_JET, Moves.WAVE_CRASH, Moves.SHELL_SMASH ], + [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.JET_PUNCH, Moves.WAVE_CRASH, Moves.SHELL_SMASH ], [Species.BALTOY]: [ Moves.RECOVER, Moves.STORED_POWER, Moves.BODY_PRESS, Moves.MYSTICAL_POWER ], - [Species.LILEEP]: [ Moves.METEOR_BEAM, Moves.SCALD, Moves.STEALTH_ROCK, Moves.SAPPY_SEED ], + [Species.LILEEP]: [ Moves.POWER_GEM, Moves.SCALD, Moves.STONE_AXE, Moves.SAPPY_SEED ], [Species.ANORITH]: [ Moves.LIQUIDATION, 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.SANDSEAR_STORM, Moves.ERUPTION, Moves.WATER_SPOUT, Moves.GLACIATE ], + [Species.CASTFORM]: [ Moves.BOOMBURST, Moves.HYDRO_STEAM, Moves.CLEAR_SMOG, Moves.QUIVER_DANCE ], [Species.KECLEON]: [ Moves.DRAIN_PUNCH, Moves.DRAGON_DANCE, Moves.EXTREME_SPEED, Moves.MULTI_ATTACK ], - [Species.SHUPPET]: [ Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ], - [Species.DUSKULL]: [ Moves.BULK_UP, Moves.BODY_PRESS, Moves.RECOVER, Moves.RAGE_FIST ], + [Species.SHUPPET]: [ Moves.DRAIN_PUNCH, Moves.TOPSY_TURVY, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ], + [Species.DUSKULL]: [ Moves.BULK_UP, Moves.DRAIN_PUNCH, Moves.STRENGTH_SAP, 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.DIRE_CLAW, Moves.BITTER_BLADE ], - [Species.WYNAUT]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.TAUNT, Moves.SHED_TAIL ], - [Species.SNORUNT]: [ Moves.AURORA_VEIL, Moves.HEAD_CHARGE, Moves.POLTERGEIST, Moves.FREEZY_FROST ], + [Species.WYNAUT]: [ Moves.RECOVER, Moves.PERISH_SONG, Moves.TAUNT, Moves.SHED_TAIL ], + [Species.SNORUNT]: [ Moves.AURORA_VEIL, Moves.HYPER_VOICE, Moves.EARTH_POWER, Moves.NO_RETREAT ], [Species.SPHEAL]: [ Moves.FLIP_TURN, Moves.FREEZE_DRY, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], [Species.CLAMPERL]: [ Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.EARTH_POWER, Moves.ORIGIN_PULSE ], [Species.RELICANTH]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.FISHIOUS_REND ], [Species.LUVDISC]: [ Moves.BATON_PASS, Moves.THIEF, Moves.BOUNCY_BUBBLE, Moves.TAKE_HEART ], - [Species.BAGON]: [ Moves.IRON_HEAD, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH ], - [Species.BELDUM]: [ Moves.PHOTON_GEYSER, Moves.RECOVER, Moves.SHIFT_GEAR, Moves.DOUBLE_IRON_BASH ], + [Species.BAGON]: [ Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH ], + [Species.BELDUM]: [ Moves.PSYCHIC_FANGS, Moves.RECOVER, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR ], [Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.RECOVER, Moves.SALT_CURE ], [Species.REGICE]: [ Moves.EARTH_POWER, Moves.COSMIC_POWER, Moves.RECOVER, Moves.FREEZE_DRY ], [Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.HEAT_CRASH, Moves.RECOVER, Moves.GIGATON_HAMMER ], - [Species.LATIAS]: [ Moves.TAKE_HEART, Moves.SPARKLY_SWIRL, Moves.SCALD, Moves.DRAGON_ENERGY ], - [Species.LATIOS]: [ Moves.NASTY_PLOT, Moves.FIERY_DANCE, Moves.OBLIVION_WING, Moves.DRAGON_ENERGY ], - [Species.KYOGRE]: [ Moves.FREEZE_DRY, Moves.HURRICANE, Moves.THUNDER, Moves.RECOVER ], - [Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.SHORE_UP, Moves.SACRED_FIRE ], - [Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.THOUSAND_ARROWS, Moves.V_CREATE ], + [Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY, Moves.QUIVER_DANCE ], + [Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY, Moves.QUIVER_DANCE ], + [Species.KYOGRE]: [ Moves.BOUNCY_BUBBLE, Moves.HURRICANE, Moves.THUNDER, Moves.TAIL_GLOW ], + [Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ], + [Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.DRAGON_ENERGY, Moves.V_CREATE ], [Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.FLOATY_FALL, Moves.ROCK_SLIDE, Moves.SHIFT_GEAR ], [Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ], - [Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.SHELTER, Moves.BODY_PRESS, Moves.SAPPY_SEED ], + [Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE, Moves.ICE_SPINNER, Moves.SAPPY_SEED ], [Species.CHIMCHAR]: [ Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.ICE_PUNCH, Moves.SACRED_FIRE ], - [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.FLASH_CANNON, Moves.ROOST, Moves.STEAM_ERUPTION ], - [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.HIGH_JUMP_KICK ], - [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.NO_RETREAT, Moves.BODY_PRESS, Moves.SURGING_STRIKES ], + [Species.PIPLUP]: [ Moves.KINGS_SHIELD, Moves.TACHYON_CUTTER, Moves.ROOST, Moves.STEAM_ERUPTION ], + [Species.STARLY]: [ Moves.SWORDS_DANCE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.HEAD_CHARGE ], + [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.STOCKPILE, Moves.POWER_TRIP, Moves.AQUA_STEP ], [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.ROOST, Moves.ROCK_BLAST, Moves.VICTORY_DANCE ], [Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.FACADE, Moves.BOLT_STRIKE ], - [Species.BUDEW]: [ Moves.PARTING_SHOT, Moves.SPIKES, Moves.SPORE, Moves.MALIGNANT_CHAIN ], + [Species.BUDEW]: [ Moves.FIERY_DANCE, Moves.SLUDGE_WAVE, Moves.SPORE, Moves.QUIVER_DANCE ], [Species.CRANIDOS]: [ Moves.STONE_AXE, Moves.ACCELEROCK, Moves.HEADLONG_RUSH, Moves.DRAGON_DANCE ], [Species.SHIELDON]: [ Moves.PAIN_SPLIT, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ], - [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.RECOVER, Moves.DEFEND_ORDER ], - [Species.COMBEE]: [ Moves.SPORE, Moves.MYSTICAL_FIRE, Moves.KINGS_SHIELD, Moves.QUIVER_DANCE ], - [Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.U_TURN, Moves.SIZZLY_SLIDE ], - [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.THUNDER_PUNCH, Moves.SURGING_STRIKES ], - [Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FIERY_DANCE ], - [Species.SHELLOS]: [ Moves.SHORE_UP, Moves.SPIKES, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], - [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.SHADOW_BONE, Moves.CALM_MIND, Moves.OBLIVION_WING ], + [Species.BURMY]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.HEAL_ORDER, Moves.DEFEND_ORDER ], + [Species.COMBEE]: [ Moves.SPORE, Moves.HEAT_WAVE, Moves.KINGS_SHIELD, Moves.QUIVER_DANCE ], + [Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.SIZZLY_SLIDE, Moves.U_TURN, Moves.ZIPPY_ZAP ], + [Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.SURGING_STRIKES ], + [Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.FLOWER_TRICK ], + [Species.SHELLOS]: [ Moves.BOUNCY_BUBBLE, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], + [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.HEAT_WAVE, Moves.CALM_MIND, Moves.OBLIVION_WING ], [Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ], - [Species.GLAMEOW]: [ Moves.U_TURN, Moves.STOMPING_TANTRUM, Moves.BULK_UP, Moves.RAGING_BULL ], + [Species.GLAMEOW]: [ Moves.U_TURN, Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.EXTREME_SPEED ], [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.COSMIC_POWER, Moves.TORCH_SONG, Moves.LUMINA_CRASH ], - [Species.STUNKY]: [ Moves.SPIKES, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ], - [Species.BRONZOR]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.SPIKES, Moves.TACHYON_CUTTER ], + [Species.STUNKY]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ], + [Species.BRONZOR]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.GLARE, Moves.TACHYON_CUTTER ], [Species.BONSLY]: [ Moves.STONE_AXE, Moves.LEAF_BLADE, Moves.STRENGTH_SAP, Moves.HEAD_SMASH ], - [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.MOONBLAST, Moves.WILL_O_WISP, Moves.TWIN_BEAM ], - [Species.HAPPINY]: [ Moves.IRON_DEFENSE, Moves.SEISMIC_TOSS, Moves.STEALTH_ROCK, Moves.SIZZLY_SLIDE ], + [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.MOONBLAST, Moves.WILL_O_WISP, Moves.LUMINA_CRASH ], + [Species.HAPPINY]: [ Moves.COTTON_GUARD, Moves.SEISMIC_TOSS, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], [Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ], - [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.RECOVER, Moves.POLTERGEIST ], - [Species.GIBLE]: [ Moves.DRAGON_HAMMER, Moves.LANDS_WRATH, Moves.SHORE_UP, Moves.BITTER_BLADE ], - [Species.MUNCHLAX]: [ Moves.IRON_DEFENSE, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.SLACK_OFF ], + [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.STRENGTH_SAP, Moves.SPECTRAL_THIEF ], + [Species.GIBLE]: [ Moves.DRAGON_DANCE, Moves.THOUSAND_WAVES, Moves.SHORE_UP, Moves.BITTER_BLADE ], + [Species.MUNCHLAX]: [ Moves.CURSE, Moves.BODY_PRESS, Moves.KNOCK_OFF, Moves.SLACK_OFF ], [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.BULLET_PUNCH, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], - [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.SALT_CURE, Moves.IRON_DEFENSE ], + [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.IRON_DEFENSE, Moves.SALT_CURE ], [Species.SKORUPI]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_PUNCH, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], - [Species.CARNIVINE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.MIGHTY_CLEAVE, Moves.FLOWER_TRICK ], + [Species.CARNIVINE]: [ Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.MIGHTY_CLEAVE, Moves.FLOWER_TRICK ], [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], [Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ], - [Species.SNOVER]: [ Moves.STOMPING_TANTRUM, Moves.ICE_HAMMER, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], - [Species.ROTOM]: [ Moves.RECOVER, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.RISING_VOLTAGE ], + [Species.SNOVER]: [ Moves.HIGH_HORSEPOWER, Moves.STRENGTH_SAP, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], + [Species.ROTOM]: [ Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.RISING_VOLTAGE ], [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.LUMINA_CRASH ], [Species.MESPRIT]: [ Moves.QUIVER_DANCE, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], - [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.DRAGON_DANCE, Moves.RECOVER, Moves.LUMINA_CRASH ], - [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.RECOVER, Moves.MAKE_IT_RAIN ], - [Species.PALKIA]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ], - [Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.SPIKES, Moves.FLASH_CANNON, Moves.RECOVER ], - [Species.REGIGIGAS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.SKILL_SWAP ], - [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.ASTRAL_BARRAGE ], - [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.INFERNAL_PARADE, Moves.LUMINA_CRASH ], - [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], - [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ], - [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], + [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.ICE_BEAM, Moves.MOONBLAST, Moves.LUMINA_CRASH ], + [Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.TAKE_HEART, Moves.RECOVER, Moves.MAKE_IT_RAIN ], + [Species.PALKIA]: [ Moves.RECOVER, Moves.TAKE_HEART, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ], + [Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.RECOVER, Moves.FLASH_CANNON, Moves.MATCHA_GOTCHA ], + [Species.REGIGIGAS]: [ Moves.SKILL_SWAP, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.GIGATON_HAMMER ], + [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.SPECTRAL_THIEF ], + [Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.SIZZLY_SLIDE, Moves.LUMINA_CRASH ], + [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.SPLISHY_SPLASH, Moves.QUIVER_DANCE ], + [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.SPLISHY_SPLASH, Moves.QUIVER_DANCE ], + [Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.SEARING_SHOT, Moves.SPORE ], [Species.SHAYMIN]: [ Moves.SPRINGTIDE_STORM, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM, Moves.MATCHA_GOTCHA ], - [Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.SPIRIT_SHACKLE, Moves.VICTORY_DANCE, Moves.COLLISION_COURSE ], + [Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.COLLISION_COURSE, Moves.VICTORY_DANCE, Moves.SPECTRAL_THIEF ], [Species.VICTINI]: [ Moves.RECOVER, Moves.BOLT_STRIKE, Moves.PHOTON_GEYSER, Moves.VICTORY_DANCE ], [Species.SNIVY]: [ Moves.BURNING_JEALOUSY, Moves.SAPPY_SEED, Moves.SUPERPOWER, Moves.FLEUR_CANNON ], [Species.TEPIG]: [ Moves.AXE_KICK, Moves.VOLT_TACKLE, Moves.DRAIN_PUNCH, Moves.VICTORY_DANCE ], [Species.OSHAWOTT]: [ Moves.ICE_SPINNER, Moves.SHELL_SIDE_ARM, Moves.SACRED_SWORD, Moves.SHELL_SMASH ], - [Species.PATRAT]: [ Moves.YAWN, Moves.PSYCHIC_FANGS, Moves.GLARE, Moves.EXTREME_SPEED ], + [Species.PATRAT]: [ Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.GLARE, Moves.TIDY_UP ], [Species.LILLIPUP]: [ Moves.CLOSE_COMBAT, Moves.THIEF, Moves.HIGH_HORSEPOWER, Moves.LAST_RESPECTS ], [Species.PURRLOIN]: [ Moves.ENCORE, Moves.ASSIST, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], [Species.PANSAGE]: [ Moves.SWORDS_DANCE, Moves.TEMPER_FLARE, Moves.EARTHQUAKE, Moves.IVY_CUDGEL ], [Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.SCALD, Moves.SCORCHING_SANDS, Moves.SEARING_SHOT ], [Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.AURA_SPHERE, Moves.STEAM_ERUPTION ], - [Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ], - [Species.PIDOVE]: [ Moves.NIGHT_SLASH, Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], + [Species.MUNNA]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.LUMINA_CRASH ], + [Species.PIDOVE]: [ Moves.GUNK_SHOT, Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], [Species.BLITZLE]: [ Moves.HIGH_HORSEPOWER, Moves.THUNDEROUS_KICK, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE ], [Species.ROGGENROLA]: [ Moves.BODY_PRESS, Moves.CURSE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], - [Species.WOOBAT]: [ Moves.QUIVER_DANCE, Moves.STORED_POWER, Moves.MYSTICAL_FIRE, Moves.OBLIVION_WING ], - [Species.DRILBUR]: [ Moves.IRON_HEAD, Moves.ICE_SPINNER, Moves.SHIFT_GEAR, Moves.BEHEMOTH_BASH ], + [Species.WOOBAT]: [ Moves.TAKE_HEART, Moves.STORED_POWER, Moves.MYSTICAL_FIRE, Moves.OBLIVION_WING ], + [Species.DRILBUR]: [ Moves.IRON_HEAD, Moves.ICE_SPINNER, Moves.SHIFT_GEAR, Moves.HEADLONG_RUSH ], [Species.AUDINO]: [ Moves.FOLLOW_ME, Moves.MOONBLAST, Moves.WISH, Moves.LUNAR_BLESSING ], [Species.TIMBURR]: [ Moves.MACH_PUNCH, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.DOUBLE_IRON_BASH ], [Species.TYMPOLE]: [ Moves.LIQUIDATION, Moves.HIGH_HORSEPOWER, Moves.TOXIC, Moves.SHORE_UP ], [Species.THROH]: [ Moves.DRAIN_PUNCH, Moves.SLACK_OFF, Moves.METEOR_MASH, Moves.NO_RETREAT ], [Species.SAWK]: [ Moves.DRAIN_PUNCH, Moves.MACH_PUNCH, Moves.ENDEAVOR, Moves.VICTORY_DANCE ], [Species.SEWADDLE]: [ Moves.STONE_AXE, Moves.PSYCHO_CUT, Moves.TIDY_UP, Moves.BITTER_BLADE ], - [Species.VENIPEDE]: [ Moves.SWORDS_DANCE, Moves.BATON_PASS, Moves.NOXIOUS_TORQUE, Moves.EARTHQUAKE ], + [Species.VENIPEDE]: [ Moves.SWORDS_DANCE, Moves.BATON_PASS, Moves.NOXIOUS_TORQUE, Moves.BLAZING_TORQUE ], [Species.COTTONEE]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.SLEEP_POWDER, Moves.SEED_FLARE ], [Species.PETILIL]: [ Moves.THUNDEROUS_KICK, Moves.BATON_PASS, Moves.AQUA_STEP, Moves.FIERY_DANCE ], - [Species.BASCULIN]: [ Moves.LAST_RESPECTS, Moves.CLOSE_COMBAT, Moves.DRAGON_DANCE, Moves.FISHIOUS_REND ], + [Species.BASCULIN]: [ Moves.LAST_RESPECTS, Moves.CLOSE_COMBAT, Moves.TRIPLE_DIVE, Moves.DRAGON_DANCE ], [Species.SANDILE]: [ Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.FIRE_LASH, Moves.PRECIPICE_BLADES ], [Species.DARUMAKA]: [ Moves.DRAIN_PUNCH, Moves.THUNDER_PUNCH, Moves.BLAZING_TORQUE, Moves.V_CREATE ], [Species.MARACTUS]: [ Moves.SCORCHING_SANDS, Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.SEED_FLARE ], @@ -285,35 +285,35 @@ export const speciesEggMoves = { [Species.SCRAGGY]: [ Moves.SUCKER_PUNCH, Moves.TRIPLE_AXEL, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], [Species.SIGILYPH]: [ Moves.STORED_POWER, Moves.TAKE_HEART, Moves.FREEZING_GLARE, Moves.OBLIVION_WING ], [Species.YAMASK]: [ Moves.RECOVER, Moves.INFERNAL_PARADE, Moves.AURA_SPHERE, Moves.TOPSY_TURVY ], - [Species.TIRTOUGA]: [ Moves.ICE_SPINNER, Moves.ACCELEROCK, Moves.SHORE_UP, Moves.WAVE_CRASH ], - [Species.ARCHEN]: [ Moves.ROOST, Moves.ACCELEROCK, Moves.FLOATY_FALL, Moves.MIGHTY_CLEAVE ], + [Species.TIRTOUGA]: [ Moves.ICE_SPINNER, Moves.WAVE_CRASH, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], + [Species.ARCHEN]: [ Moves.ROOST, Moves.MIGHTY_CLEAVE, Moves.FLOATY_FALL, Moves.SKILL_SWAP ], [Species.TRUBBISH]: [ Moves.TIDY_UP, Moves.RECOVER, Moves.DIRE_CLAW, Moves.GIGATON_HAMMER ], - [Species.ZORUA]: [ Moves.BADDY_BAD, Moves.PSYCHIC, Moves.AURA_SPHERE, Moves.WICKED_BLOW ], - [Species.MINCCINO]: [ Moves.ICICLE_SPEAR, Moves.TIDY_UP, Moves.BONE_RUSH, Moves.POPULATION_BOMB ], + [Species.ZORUA]: [ Moves.FLAMETHROWER, Moves.PSYCHIC, Moves.AURA_SPHERE, Moves.BADDY_BAD ], + [Species.MINCCINO]: [ Moves.ICICLE_SPEAR, Moves.TIDY_UP, Moves.KNOCK_OFF, Moves.POPULATION_BOMB ], [Species.GOTHITA]: [ Moves.MILK_DRINK, Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.PSYSTRIKE ], [Species.SOLOSIS]: [ Moves.COSMIC_POWER, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.PSYSTRIKE ], [Species.DUCKLETT]: [ Moves.QUIVER_DANCE, Moves.EARTH_POWER, Moves.FREEZE_DRY, Moves.OBLIVION_WING ], - [Species.VANILLITE]: [ Moves.EARTH_POWER, Moves.AURORA_VEIL, Moves.LOCK_ON, Moves.MILK_DRINK ], - [Species.DEERLING]: [ Moves.TIDY_UP, Moves.HEADBUTT, Moves.BODY_SLAM, Moves.FLOWER_TRICK ], + [Species.VANILLITE]: [ Moves.EARTH_POWER, Moves.AURORA_VEIL, Moves.DECORATE, Moves.MILK_DRINK ], + [Species.DEERLING]: [ Moves.TIDY_UP, Moves.FLOWER_TRICK, Moves.BODY_SLAM, Moves.COMBAT_TORQUE ], [Species.EMOLGA]: [ Moves.ROOST, Moves.HEAT_WAVE, Moves.TAILWIND, Moves.ZING_ZAP ], [Species.KARRABLAST]: [ Moves.TRICK_ROOM, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.BITTER_BLADE ], - [Species.FOONGUS]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.STRENGTH_SAP ], + [Species.FOONGUS]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.SAPPY_SEED ], [Species.FRILLISH]: [ Moves.STRENGTH_SAP, Moves.INFERNAL_PARADE, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.ALOMOMOLA]: [ Moves.FLIP_TURN, Moves.HEART_SWAP, Moves.TOXIC, Moves.GLITZY_GLOW ], [Species.JOLTIK]: [ Moves.THUNDER, Moves.PARABOLIC_CHARGE, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], [Species.FERROSEED]: [ Moves.STRENGTH_SAP, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ], [Species.KLINK]: [ Moves.FLARE_BLITZ, Moves.HIGH_HORSEPOWER, Moves.FUSION_BOLT, Moves.DOUBLE_IRON_BASH ], - [Species.TYNAMO]: [ Moves.LIQUIDATION, Moves.RECOVER, Moves.PARTING_SHOT, Moves.BOLT_BEAK ], - [Species.ELGYEM]: [ Moves.MYSTICAL_POWER, Moves.TRICK_ROOM, Moves.STORED_POWER, Moves.PSYSTRIKE ], + [Species.TYNAMO]: [ Moves.SCALD, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.PLASMA_FISTS ], + [Species.ELGYEM]: [ Moves.MYSTICAL_POWER, Moves.TRICK_ROOM, Moves.STORED_POWER, Moves.LUMINA_CRASH ], [Species.LITWICK]: [ Moves.FIERY_DANCE, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE ], [Species.AXEW]: [ Moves.STONE_AXE, Moves.DIRE_CLAW, Moves.FIRE_LASH, Moves.GLAIVE_RUSH ], - [Species.CUBCHOO]: [ Moves.MOUNTAIN_GALE, Moves.WOOD_HAMMER, Moves.SWORDS_DANCE, Moves.WAVE_CRASH ], - [Species.CRYOGONAL]: [ Moves.SURF, Moves.EARTH_POWER, Moves.NASTY_PLOT, Moves.FREEZY_FROST ], + [Species.CUBCHOO]: [ Moves.TRIPLE_AXEL, Moves.LIQUIDATION, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], + [Species.CRYOGONAL]: [ Moves.SURF, Moves.FREEZY_FROST, Moves.NASTY_PLOT, Moves.AURORA_VEIL ], [Species.SHELMET]: [ Moves.SHED_TAIL, Moves.NASTY_PLOT, Moves.BATON_PASS, Moves.HEAT_WAVE ], [Species.STUNFISK]: [ Moves.SHORE_UP, Moves.BANEFUL_BUNKER, Moves.THUNDER_CAGE, Moves.THUNDERCLAP ], - [Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.TIDY_UP ], - [Species.DRUDDIGON]: [ Moves.SPIKY_SHIELD, Moves.ROOST, Moves.DRAGON_HAMMER, Moves.FIRE_LASH ], - [Species.GOLETT]: [ Moves.BULK_UP, Moves.BULLET_PUNCH, Moves.HEADLONG_RUSH, Moves.RAGE_FIST ], + [Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.MOUNTAIN_GALE ], + [Species.DRUDDIGON]: [ Moves.GLARE, Moves.ROOST, Moves.DRAGON_HAMMER, Moves.FIRE_LASH ], + [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.SLACK_OFF, Moves.JUMP_KICK, Moves.HEAD_SMASH, Moves.FLARE_BLITZ ], [Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.MOONBLAST, Moves.HEAT_WAVE, Moves.BOLT_BEAK ], @@ -321,25 +321,25 @@ export const speciesEggMoves = { [Species.HEATMOR]: [ Moves.EARTH_POWER, Moves.OVERHEAT, Moves.FLASH_CANNON, 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_WAVE, Moves.FICKLE_BEAM ], - [Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.ERUPTION, Moves.EARTH_POWER, Moves.TORCH_SONG ], - [Species.COBALION]: [ Moves.TACHYON_CUTTER, Moves.BODY_PRESS, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], + [Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.MATCHA_GOTCHA, Moves.EARTH_POWER, Moves.TORCH_SONG ], + [Species.COBALION]: [ Moves.BEHEMOTH_BLADE, Moves.BODY_PRESS, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], [Species.TERRAKION]: [ Moves.MIGHTY_CLEAVE, Moves.HEADLONG_RUSH, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], [Species.VIRIZION]: [ Moves.PSYBLADE, Moves.SAPPY_SEED, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], - [Species.TORNADUS]: [ Moves.EARTH_POWER, Moves.U_TURN, Moves.ICE_BEAM, Moves.AEROBLAST ], - [Species.THUNDURUS]: [ Moves.EARTH_POWER, Moves.AEROBLAST, Moves.THUNDERCLAP, Moves.ELECTRO_SHOT ], - [Species.RESHIRAM]: [ Moves.FUSION_BOLT, Moves.CALM_MIND, Moves.SOLAR_BEAM, Moves.DRAGON_ENERGY ], - [Species.ZEKROM]: [ Moves.FUSION_FLARE, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.BOLT_BEAK ], - [Species.LANDORUS]: [ Moves.STONE_AXE, Moves.HIGH_HORSEPOWER, Moves.ROOST, Moves.FLOATY_FALL ], - [Species.KYUREM]: [ Moves.ICICLE_CRASH, Moves.DRAGON_ENERGY, Moves.PHOTON_GEYSER, Moves.GLACIAL_LANCE ], - [Species.KELDEO]: [ Moves.TACHYON_CUTTER, Moves.THUNDERBOLT, Moves.ICE_BEAM, Moves.STEAM_ERUPTION ], - [Species.MELOETTA]: [ Moves.THUNDEROUS_KICK, Moves.QUIVER_DANCE, Moves.VICTORY_DANCE, Moves.BOOMBURST ], - [Species.GENESECT]: [ Moves.AURA_SPHERE, Moves.U_TURN, Moves.SHIFT_GEAR, Moves.TAIL_GLOW ], + [Species.TORNADUS]: [ Moves.EARTH_POWER, Moves.U_TURN, Moves.ICE_BEAM, Moves.OBLIVION_WING ], + [Species.THUNDURUS]: [ Moves.EARTH_POWER, Moves.HURRICANE, Moves.THUNDERCLAP, Moves.ELECTRO_SHOT ], + [Species.RESHIRAM]: [ Moves.ROOST, Moves.TAKE_HEART, Moves.ERUPTION, Moves.DRAGON_ENERGY ], + [Species.ZEKROM]: [ Moves.DRAGON_DANCE, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.BOLT_BEAK ], + [Species.LANDORUS]: [ Moves.STONE_AXE, Moves.THOUSAND_ARROWS, Moves.ROOST, Moves.FLOATY_FALL ], + [Species.KYUREM]: [ Moves.ICICLE_CRASH, Moves.DRAGON_ENERGY, Moves.NASTY_PLOT, Moves.GLACIAL_LANCE ], + [Species.KELDEO]: [ Moves.BOUNCY_BUBBLE, Moves.THUNDERBOLT, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], + [Species.MELOETTA]: [ Moves.TORCH_SONG, Moves.QUIVER_DANCE, Moves.THUNDEROUS_KICK, Moves.BOOMBURST ], + [Species.GENESECT]: [ Moves.EXTREME_SPEED, Moves.U_TURN, Moves.SHIFT_GEAR, Moves.TAIL_GLOW ], [Species.CHESPIN]: [ Moves.DRAIN_PUNCH, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ], - [Species.FENNEKIN]: [ Moves.BITTER_MALICE, Moves.MOONBLAST, Moves.THUNDERBOLT, Moves.TORCH_SONG ], + [Species.FENNEKIN]: [ Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.THUNDERBOLT, Moves.TORCH_SONG ], [Species.FROAKIE]: [ Moves.MOONBLAST, Moves.EARTH_POWER, Moves.TRIPLE_AXEL, Moves.SURGING_STRIKES ], - [Species.BUNNELBY]: [ Moves.DRAIN_PUNCH, Moves.RECYCLE, Moves.RETURN, Moves.EXTREME_SPEED ], + [Species.BUNNELBY]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.FACADE, Moves.EXTREME_SPEED ], [Species.FLETCHLING]: [ Moves.DRILL_RUN, Moves.U_TURN, Moves.SUPERCELL_SLAM, Moves.TIDY_UP ], - [Species.SCATTERBUG]: [ Moves.MOONBLAST, Moves.POLLEN_PUFF, Moves.TAILWIND, Moves.FOCUS_BLAST ], + [Species.SCATTERBUG]: [ Moves.MOONBLAST, Moves.POLLEN_PUFF, Moves.TAILWIND, Moves.HEAT_WAVE ], [Species.LITLEO]: [ Moves.EARTH_POWER, Moves.NASTY_PLOT, Moves.YAWN, Moves.TORCH_SONG ], [Species.FLABEBE]: [ Moves.GLITZY_GLOW, Moves.MYSTICAL_FIRE, Moves.FLORAL_HEALING, Moves.TAKE_HEART ], [Species.SKIDDO]: [ Moves.HIGH_HORSEPOWER, Moves.GRASSY_GLIDE, Moves.STONE_AXE, Moves.SAPPY_SEED ], @@ -350,10 +350,10 @@ export const speciesEggMoves = { [Species.SPRITZEE]: [ Moves.TRICK_ROOM, Moves.FOUL_PLAY, Moves.WISH, Moves.REVIVAL_BLESSING ], [Species.SWIRLIX]: [ Moves.BELLY_DRUM, Moves.SUCKER_PUNCH, Moves.SPIRIT_BREAK, Moves.SIZZLY_SLIDE ], [Species.INKAY]: [ Moves.POWER_TRIP, Moves.STORED_POWER, Moves.RECOVER, Moves.PSYCHO_BOOST ], - [Species.BINACLE]: [ Moves.ICE_SPINNER, Moves.ACCELEROCK, Moves.BULK_UP, Moves.MIGHTY_CLEAVE ], + [Species.BINACLE]: [ Moves.TRIPLE_AXEL, Moves.ACCELEROCK, Moves.DIRE_CLAW, Moves.MIGHTY_CLEAVE ], [Species.SKRELP]: [ Moves.RECOVER, Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.MALIGNANT_CHAIN ], [Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.TERRAIN_PULSE, Moves.ORIGIN_PULSE ], - [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.NASTY_PLOT, Moves.SHORE_UP, Moves.CLANGOROUS_SOUL ], + [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.BOOMBURST, Moves.EARTH_POWER, Moves.TAIL_GLOW ], [Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.AXE_KICK ], [Species.AMAURA]: [ Moves.RECOVER, Moves.AURORA_VEIL, Moves.POWER_GEM, Moves.GEOMANCY ], [Species.HAWLUCHA]: [ Moves.DARKEST_LARIAT, Moves.HIGH_HORSEPOWER, Moves.SUPERCELL_SLAM, Moves.BRAVE_BIRD ], @@ -361,205 +361,205 @@ export const speciesEggMoves = { [Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ], [Species.GOOMY]: [ Moves.SCALD, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ], [Species.KLEFKI]: [ Moves.COURT_CHANGE, Moves.ENCORE, Moves.TAUNT, Moves.TOPSY_TURVY ], - [Species.PHANTUMP]: [ Moves.POLTERGEIST, Moves.TRICK_ROOM, Moves.SYNTHESIS, Moves.SAPPY_SEED ], - [Species.PUMPKABOO]: [ Moves.POLTERGEIST, Moves.FIRE_LASH, Moves.DIRE_CLAW, Moves.SAPPY_SEED ], + [Species.PHANTUMP]: [ Moves.SPIRIT_SHACKLE, Moves.TRICK_ROOM, Moves.SYNTHESIS, 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.PSYCHIC_NOISE, Moves.NASTY_PLOT, Moves.CLANGING_SCALES ], + [Species.NOIBAT]: [ Moves.AEROBLAST, Moves.OVERDRIVE, Moves.NASTY_PLOT, Moves.CLANGING_SCALES ], [Species.XERNEAS]: [ Moves.LIGHT_OF_RUIN, Moves.LUMINA_CRASH, Moves.STRENGTH_SAP, Moves.REVIVAL_BLESSING ], - [Species.YVELTAL]: [ Moves.NASTY_PLOT, Moves.FLOATY_FALL, Moves.IRON_HEAD, Moves.WICKED_BLOW ], - [Species.ZYGARDE]: [ Moves.DRAGON_HAMMER, Moves.SHORE_UP, Moves.HEAT_CRASH, Moves.POPULATION_BOMB ], + [Species.YVELTAL]: [ Moves.SLUDGE_WAVE, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ], + [Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.HEAL_ORDER, Moves.VICTORY_DANCE, Moves.DOUBLE_IRON_BASH ], [Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.GEOMANCY ], [Species.HOOPA]: [ Moves.PHOTON_GEYSER, Moves.EARTH_POWER, Moves.BATON_PASS, Moves.TIDY_UP ], [Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.ENERGY_BALL, Moves.SEARING_SHOT ], [Species.ROWLET]: [ Moves.SNIPE_SHOT, Moves.POLTERGEIST, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], - [Species.LITTEN]: [ Moves.FAKE_OUT, Moves.PARTING_SHOT, Moves.SUCKER_PUNCH, Moves.SACRED_FIRE ], + [Species.LITTEN]: [ Moves.FAKE_OUT, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ], [Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.BOUNCY_BUBBLE, Moves.ALLURING_VOICE, Moves.TORCH_SONG ], - [Species.PIKIPEK]: [ Moves.FLOATY_FALL, Moves.BONE_RUSH, Moves.KNOCK_OFF, Moves.BURNING_BULWARK ], - [Species.YUNGOOS]: [ Moves.EXTREME_SPEED, Moves.PURSUIT, Moves.TIDY_UP, Moves.MULTI_ATTACK ], - [Species.GRUBBIN]: [ Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.QUIVER_DANCE, Moves.THUNDERCLAP ], + [Species.PIKIPEK]: [ Moves.FLOATY_FALL, Moves.BONE_RUSH, Moves.BURNING_BULWARK, Moves.TIDY_UP ], + [Species.YUNGOOS]: [ Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.TIDY_UP, Moves.HEAD_CHARGE ], + [Species.GRUBBIN]: [ Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.THUNDERCLAP, Moves.QUIVER_DANCE ], [Species.CRABRAWLER]: [ Moves.CURSE, Moves.SHORE_UP, Moves.SUCKER_PUNCH, Moves.SURGING_STRIKES ], - [Species.ORICORIO]: [ Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.PETAL_DANCE, Moves.LUNAR_DANCE ], - [Species.CUTIEFLY]: [ Moves.SILK_TRAP, Moves.DECORATE, Moves.PARTING_SHOT, Moves.FLORAL_HEALING ], - [Species.ROCKRUFF]: [ Moves.KNOCK_OFF, Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.MIGHTY_CLEAVE ], - [Species.WISHIWASHI]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.SWORDS_DANCE, Moves.POPULATION_BOMB ], + [Species.ORICORIO]: [ Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.THUNDERCLAP, Moves.OBLIVION_WING ], + [Species.CUTIEFLY]: [ Moves.STICKY_WEB, Moves.MOONBLAST, Moves.HEAT_WAVE, Moves.SPORE ], + [Species.ROCKRUFF]: [ Moves.DRILL_RUN, Moves.TIDY_UP, Moves.ICE_SPINNER, Moves.MIGHTY_CLEAVE ], + [Species.WISHIWASHI]: [ Moves.LIQUIDATION, Moves.ICE_SPINNER, Moves.DRAGON_DANCE, Moves.HEAL_ORDER ], [Species.MAREANIE]: [ Moves.SPIKES, Moves.SIZZLY_SLIDE, Moves.MORTAL_SPIN, Moves.LEECH_SEED ], - [Species.MUDBRAY]: [ Moves.BODY_PRESS, Moves.YAWN, Moves.SHORE_UP, Moves.LANDS_WRATH ], - [Species.DEWPIDER]: [ Moves.AQUA_JET, Moves.SILK_TRAP, Moves.ROCK_SLIDE, Moves.AQUA_STEP ], - [Species.FOMANTIS]: [ Moves.SUPERPOWER, Moves.STONE_AXE, Moves.PSYCHO_CUT, Moves.BITTER_BLADE ], + [Species.MUDBRAY]: [ Moves.BODY_PRESS, Moves.YAWN, Moves.SHORE_UP, Moves.THOUSAND_WAVES ], + [Species.DEWPIDER]: [ Moves.AQUA_JET, Moves.SILK_TRAP, Moves.SWORDS_DANCE, Moves.AQUA_STEP ], + [Species.FOMANTIS]: [ Moves.SUPERPOWER, Moves.HEADLONG_RUSH, Moves.ICE_HAMMER, Moves.BITTER_BLADE ], [Species.MORELULL]: [ Moves.CALM_MIND, Moves.LEECH_SEED, Moves.STRENGTH_SAP, Moves.SPARKLY_SWIRL ], [Species.SALANDIT]: [ Moves.FAKE_OUT, Moves.FIERY_DANCE, Moves.SCALD, Moves.MALIGNANT_CHAIN ], - [Species.STUFFUL]: [ Moves.DRAIN_PUNCH, Moves.THUNDER_PUNCH, Moves.ICE_PUNCH, Moves.RAGE_FIST ], + [Species.STUFFUL]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.ICE_HAMMER, Moves.RAGE_FIST ], [Species.BOUNSWEET]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK, Moves.SAPPY_SEED ], [Species.COMFEY]: [ Moves.BUZZY_BUZZ, Moves.POLLEN_PUFF, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA ], [Species.ORANGURU]: [ Moves.FOUL_PLAY, Moves.YAWN, Moves.FOLLOW_ME, Moves.LUNAR_BLESSING ], - [Species.PASSIMIAN]: [ Moves.FAKE_OUT, Moves.SUCKER_PUNCH, Moves.SPIKES, Moves.SWORDS_DANCE ], + [Species.PASSIMIAN]: [ Moves.FAKE_OUT, Moves.SUCKER_PUNCH, Moves.SWORDS_DANCE, Moves.PYRO_BALL ], [Species.WIMPOD]: [ Moves.ICE_SPINNER, Moves.OBSTRUCT, Moves.KNOCK_OFF, Moves.SURGING_STRIKES ], [Species.SANDYGAST]: [ Moves.SCORCHING_SANDS, Moves.PARTING_SHOT, Moves.CURSE, Moves.SALT_CURE ], [Species.PYUKUMUKU]: [ Moves.MIRROR_COAT, Moves.BANEFUL_BUNKER, Moves.TOXIC_SPIKES, Moves.SALT_CURE ], [Species.TYPE_NULL]: [ Moves.DIRE_CLAW, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.NO_RETREAT ], - [Species.MINIOR]: [ Moves.EARTH_POWER, Moves.FLOATY_FALL, Moves.SUPERCELL_SLAM, Moves.DIAMOND_STORM ], - [Species.KOMALA]: [ Moves.SLACK_OFF, Moves.EXTREME_SPEED, Moves.DARKEST_LARIAT, Moves.CLOSE_COMBAT ], + [Species.MINIOR]: [ Moves.EARTH_POWER, Moves.FLOATY_FALL, Moves.ZING_ZAP, Moves.DIAMOND_STORM ], + [Species.KOMALA]: [ Moves.SLACK_OFF, Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.CLOSE_COMBAT ], [Species.TURTONATOR]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.EARTH_POWER, Moves.CLANGING_SCALES ], - [Species.TOGEDEMARU]: [ Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.SPIKES, Moves.DOUBLE_IRON_BASH ], - [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.NUZZLE, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ], - [Species.BRUXISH]: [ Moves.SUPER_FANG, Moves.JAW_LOCK, Moves.PAIN_SPLIT, Moves.FISHIOUS_REND ], - [Species.DRAMPA]: [ Moves.YAWN, Moves.FLAMETHROWER, Moves.CLANGING_SCALES, Moves.CLANGOROUS_SOUL ], - [Species.DHELMISE]: [ Moves.POLTERGEIST, Moves.SHIFT_GEAR, Moves.LEAF_BLADE, Moves.DOUBLE_IRON_BASH ], - [Species.JANGMO_O]: [ Moves.ICE_BEAM, Moves.RECOVER, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ], - [Species.TAPU_KOKO]: [ Moves.PLAY_ROUGH, Moves.ICE_SPINNER, Moves.RISING_VOLTAGE, Moves.BOLT_BEAK ], + [Species.TOGEDEMARU]: [ Moves.FAKE_OUT, Moves.METAL_BURST, Moves.METEOR_MASH, Moves.BOLT_STRIKE ], + [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.SIZZLY_SLIDE, Moves.SPECTRAL_THIEF ], + [Species.BRUXISH]: [ Moves.ICE_FANG, Moves.FIRE_FANG, Moves.FLIP_TURN, Moves.FILLET_AWAY ], + [Species.DRAMPA]: [ Moves.SLACK_OFF, Moves.FLAMETHROWER, Moves.CLANGING_SCALES, Moves.CLANGOROUS_SOUL ], + [Species.DHELMISE]: [ Moves.POLTERGEIST, Moves.STRENGTH_SAP, Moves.LEAF_BLADE, Moves.DOUBLE_IRON_BASH ], + [Species.JANGMO_O]: [ Moves.ICE_BEAM, Moves.DRAIN_PUNCH, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ], + [Species.TAPU_KOKO]: [ Moves.PLAY_ROUGH, Moves.MOUNTAIN_GALE, Moves.RISING_VOLTAGE, Moves.BOLT_BEAK ], [Species.TAPU_LELE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.HEAT_WAVE, Moves.EXPANDING_FORCE ], - [Species.TAPU_BULU]: [ Moves.JUNGLE_HEALING, Moves.CLOSE_COMBAT, Moves.PLAY_ROUGH, Moves.GRASSY_GLIDE ], + [Species.TAPU_BULU]: [ Moves.GRASSY_GLIDE, Moves.CLOSE_COMBAT, Moves.PLAY_ROUGH, Moves.VICTORY_DANCE ], [Species.TAPU_FINI]: [ Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.RECOVER, Moves.QUIVER_DANCE ], [Species.COSMOG]: [ Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.STORED_POWER, Moves.PHOTON_GEYSER ], - [Species.NIHILEGO]: [ Moves.RECOVER, Moves.QUIVER_DANCE, Moves.GIGA_DRAIN, Moves.MALIGNANT_CHAIN ], + [Species.NIHILEGO]: [ Moves.RECOVER, Moves.QUIVER_DANCE, Moves.ENERGY_BALL, Moves.MALIGNANT_CHAIN ], [Species.BUZZWOLE]: [ Moves.LEECH_LIFE, Moves.BULLET_PUNCH, Moves.DARKEST_LARIAT, Moves.COLLISION_COURSE ], [Species.PHEROMOSA]: [ Moves.AURA_SPHERE, Moves.MAKE_IT_RAIN, Moves.ATTACK_ORDER, Moves.COLLISION_COURSE ], - [Species.XURKITREE]: [ Moves.OVERHEAT, Moves.GIGA_DRAIN, Moves.THUNDERCLAP, Moves.TAIL_GLOW ], + [Species.XURKITREE]: [ Moves.OVERHEAT, Moves.GIGA_DRAIN, Moves.TAIL_GLOW, Moves.THUNDERCLAP ], [Species.CELESTEELA]: [ Moves.ROOST, Moves.BUZZY_BUZZ, Moves.SPIKES, Moves.OBLIVION_WING ], [Species.KARTANA]: [ Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], - [Species.GUZZLORD]: [ Moves.DIRE_CLAW, Moves.GLAIVE_RUSH, Moves.SLACK_OFF, Moves.BADDY_BAD ], + [Species.GUZZLORD]: [ Moves.SUCKER_PUNCH, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.RUINATION ], [Species.NECROZMA]: [ Moves.COSMIC_POWER, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE, Moves.CLANGOROUS_SOUL ], - [Species.MAGEARNA]: [ Moves.RECOVER, Moves.EARTH_POWER, Moves.COSMIC_POWER, Moves.MAKE_IT_RAIN ], + [Species.MAGEARNA]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.COSMIC_POWER, Moves.MAKE_IT_RAIN ], [Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.TRIPLE_AXEL, Moves.STORM_THROW, Moves.DOUBLE_IRON_BASH ], [Species.POIPOLE]: [ Moves.SLUDGE_BOMB, Moves.BUG_BUZZ, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY ], - [Species.STAKATAKA]: [ Moves.SALT_CURE, Moves.SHORE_UP, Moves.CURSE, Moves.DOUBLE_IRON_BASH ], + [Species.STAKATAKA]: [ Moves.HEAVY_SLAM, Moves.SHORE_UP, Moves.CURSE, Moves.SALT_CURE ], [Species.BLACEPHALON]: [ Moves.NASTY_PLOT, Moves.SEARING_SHOT, Moves.GIGA_DRAIN, Moves.ASTRAL_BARRAGE ], [Species.ZERAORA]: [ Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE, Moves.PYRO_BALL ], - [Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.RECOVER ], - [Species.GROOKEY]: [ Moves.HEADLONG_RUSH, Moves.CLOSE_COMBAT, Moves.GRASSY_GLIDE, Moves.BELLY_DRUM ], - [Species.SCORBUNNY]: [ Moves.HIGH_JUMP_KICK, Moves.SUPERCELL_SLAM, Moves.TRIPLE_AXEL, Moves.AQUA_STEP ], + [Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS ], + [Species.GROOKEY]: [ Moves.HEADLONG_RUSH, Moves.CLOSE_COMBAT, Moves.GRASSY_GLIDE, Moves.CLANGOROUS_SOUL ], + [Species.SCORBUNNY]: [ Moves.EXTREME_SPEED, Moves.TROP_KICK, Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK ], [Species.SOBBLE]: [ Moves.AEROBLAST, Moves.FROST_BREATH, Moves.SEARING_SHOT, Moves.SURGING_STRIKES ], - [Species.SKWOVET]: [ Moves.RECYCLE, Moves.GRAV_APPLE, Moves.BODY_PRESS, Moves.SLACK_OFF ], + [Species.SKWOVET]: [ Moves.KNOCK_OFF, Moves.GRAV_APPLE, Moves.BODY_PRESS, Moves.SLACK_OFF ], [Species.ROOKIDEE]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.IRON_HEAD, Moves.KINGS_SHIELD ], - [Species.BLIPBUG]: [ Moves.RECOVER, Moves.FREEZING_GLARE, Moves.SPORE, Moves.TAIL_GLOW ], - [Species.NICKIT]: [ Moves.KNOCK_OFF, Moves.BURNING_JEALOUSY, Moves.FALSE_SURRENDER, Moves.TIDY_UP ], + [Species.BLIPBUG]: [ Moves.HEAL_ORDER, Moves.EXPANDING_FORCE, Moves.SPORE, Moves.TAIL_GLOW ], + [Species.NICKIT]: [ Moves.BADDY_BAD, Moves.BURNING_JEALOUSY, Moves.SPARKLY_SWIRL, Moves.FIERY_WRATH ], [Species.GOSSIFLEUR]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.PARTING_SHOT, Moves.SEED_FLARE ], - [Species.WOOLOO]: [ Moves.PSYSHIELD_BASH, Moves.HEAD_CHARGE, Moves.BODY_PRESS, Moves.HEAD_CHARGE ], + [Species.WOOLOO]: [ Moves.PSYSHIELD_BASH, Moves.HEAD_CHARGE, Moves.BODY_PRESS, Moves.MILK_DRINK ], [Species.CHEWTLE]: [ Moves.FIRE_FANG, Moves.ACCELEROCK, Moves.SHELL_SMASH, Moves.WAVE_CRASH ], - [Species.YAMPER]: [ Moves.ICE_FANG, Moves.TIDY_UP, Moves.THUNDERCLAP, Moves.ZIPPY_ZAP ], + [Species.YAMPER]: [ Moves.ICE_FANG, Moves.TIDY_UP, Moves.THUNDERCLAP, Moves.ZING_ZAP ], [Species.ROLYCOLY]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.WORK_UP, Moves.DIAMOND_STORM ], [Species.APPLIN]: [ Moves.DRAGON_CHEER, Moves.PARTING_SHOT, Moves.FLOWER_TRICK, Moves.STRENGTH_SAP ], [Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.STONE_EDGE, Moves.PRECIPICE_BLADES ], - [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.AQUA_JET, Moves.SCORCHING_SANDS, Moves.WAVE_CRASH ], + [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.SCORCHING_SANDS, Moves.OBLIVION_WING ], [Species.ARROKUDA]: [ Moves.THUNDER_FANG, Moves.KNOCK_OFF, Moves.ICE_FANG, Moves.FILLET_AWAY ], [Species.TOXEL]: [ Moves.NASTY_PLOT, Moves.BANEFUL_BUNKER, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], [Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], - [Species.CLOBBOPUS]: [ Moves.OBSTRUCT, Moves.NO_RETREAT, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ], + [Species.CLOBBOPUS]: [ Moves.DRAIN_PUNCH, Moves.NO_RETREAT, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ], [Species.SINISTEA]: [ Moves.SCALD, Moves.TAKE_HEART, Moves.SPARKLY_SWIRL, Moves.MATCHA_GOTCHA ], - [Species.HATENNA]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.FIERY_WRATH, Moves.PSYSTRIKE ], + [Species.HATENNA]: [ Moves.TAKE_HEART, Moves.MOONBLAST, Moves.BUZZY_BUZZ, Moves.SEARING_SHOT ], [Species.IMPIDIMP]: [ Moves.ENCORE, Moves.PARTING_SHOT, Moves.TOPSY_TURVY, Moves.WICKED_BLOW ], - [Species.MILCERY]: [ Moves.MOONBLAST, Moves.SYRUP_BOMB, Moves.EARTH_POWER, Moves.MILK_DRINK ], - [Species.FALINKS]: [ Moves.COMBAT_TORQUE, Moves.PSYSHIELD_BASH, Moves.SPIKY_SHIELD, Moves.POPULATION_BOMB ], - [Species.PINCURCHIN]: [ Moves.BANEFUL_BUNKER, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.TRICK_ROOM ], + [Species.MILCERY]: [ Moves.MOONBLAST, Moves.SYRUP_BOMB, Moves.EARTH_POWER, Moves.SEARING_SHOT ], + [Species.FALINKS]: [ Moves.COMBAT_TORQUE, Moves.PSYSHIELD_BASH, Moves.HEAL_ORDER, Moves.POPULATION_BOMB ], + [Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.RISING_VOLTAGE, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], [Species.SNOM]: [ Moves.MOONBLAST, Moves.SURF, Moves.EARTH_POWER, Moves.FIERY_DANCE ], - [Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.CURSE, Moves.SHORE_UP, Moves.ACCELEROCK ], + [Species.STONJOURNER]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.SHORE_UP, Moves.ACCELEROCK ], [Species.EISCUE]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.SHELL_SMASH, Moves.GLACIAL_LANCE ], [Species.INDEEDEE]: [ Moves.MATCHA_GOTCHA, Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.REVIVAL_BLESSING ], - [Species.MORPEKO]: [ Moves.GRAV_APPLE, Moves.OBSTRUCT, Moves.DARKEST_LARIAT, Moves.TIDY_UP ], + [Species.MORPEKO]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.SWORDS_DANCE ], [Species.CUFANT]: [ Moves.LIQUIDATION, Moves.HEAVY_SLAM, Moves.CLOSE_COMBAT, Moves.GIGATON_HAMMER ], - [Species.DRACOZOLT]: [ Moves.ICE_SPINNER, Moves.DRAGON_HAMMER, Moves.TEMPER_FLARE, Moves.DRAGON_DANCE ], - [Species.ARCTOZOLT]: [ Moves.SHIFT_GEAR, Moves.ICE_SPINNER, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], - [Species.DRACOVISH]: [ Moves.ICE_FANG, Moves.DRAGON_HAMMER, Moves.THUNDER_FANG, Moves.DRAGON_DANCE ], - [Species.ARCTOVISH]: [ Moves.SHIFT_GEAR, Moves.ICE_SPINNER, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], - [Species.DURALUDON]: [ Moves.FLAMETHROWER, Moves.RECOVER, Moves.EARTH_POWER, Moves.CALM_MIND ], - [Species.DREEPY]: [ Moves.EXTREME_SPEED, Moves.SPIRIT_BREAK, Moves.BLAZING_TORQUE, Moves.SPECTRAL_THIEF ], - [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.AQUA_CUTTER, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], - [Species.ZAMAZENTA]: [ Moves.PSYSHIELD_BASH, Moves.BODY_PRESS, Moves.BULK_UP, Moves.KINGS_SHIELD ], - [Species.KUBFU]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.JET_PUNCH, Moves.DRAGON_DANCE ], - [Species.ZARUDE]: [ Moves.VICTORY_DANCE, Moves.PARTING_SHOT, Moves.WICKED_BLOW, Moves.SAPPY_SEED ], - [Species.REGIELEKI]: [ Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.PARTING_SHOT, Moves.ELECTRO_DRIFT ], + [Species.DRACOZOLT]: [ Moves.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.FIRE_LASH, Moves.DRAGON_DANCE ], + [Species.ARCTOZOLT]: [ Moves.TRIPLE_AXEL, Moves.LIQUIDATION, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], + [Species.DRACOVISH]: [ Moves.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.THUNDER_FANG, Moves.DRAGON_DANCE ], + [Species.ARCTOVISH]: [ Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], + [Species.DURALUDON]: [ Moves.ICE_BEAM, Moves.BODY_PRESS, Moves.RECOVER, Moves.CORE_ENFORCER ], + [Species.DREEPY]: [ Moves.DRAGON_ENERGY, Moves.SPIRIT_BREAK, Moves.BLAZING_TORQUE, Moves.SPECTRAL_THIEF ], + [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.BITTER_BLADE, Moves.LEAF_BLADE, Moves.VICTORY_DANCE ], + [Species.ZAMAZENTA]: [ Moves.PSYSHIELD_BASH, Moves.BODY_PRESS, Moves.SLACK_OFF, Moves.VICTORY_DANCE ], + [Species.KUBFU]: [ Moves.METEOR_MASH, Moves.DRAIN_PUNCH, Moves.JET_PUNCH, Moves.DRAGON_DANCE ], + [Species.ZARUDE]: [ Moves.SAPPY_SEED, Moves.PARTING_SHOT, Moves.WICKED_BLOW, Moves.VICTORY_DANCE ], + [Species.REGIELEKI]: [ Moves.NASTY_PLOT, Moves.FROST_BREATH, Moves.PARTING_SHOT, Moves.ELECTRO_DRIFT ], [Species.REGIDRAGO]: [ Moves.METEOR_MASH, Moves.FLAMETHROWER, Moves.CALM_MIND, Moves.DRAGON_DARTS ], [Species.GLASTRIER]: [ Moves.TRICK_ROOM, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], [Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], - [Species.CALYREX]: [ Moves.KINGS_SHIELD, Moves.RECOVER, Moves.AURA_SPHERE, Moves.PHOTON_GEYSER ], - [Species.ENAMORUS]: [ Moves.AEROBLAST, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.FLEUR_CANNON ], - [Species.SPRIGATITO]: [ Moves.BLAZE_KICK, Moves.STRENGTH_SAP, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], - [Species.FUECOCO]: [ Moves.COSMIC_POWER, Moves.SLACK_OFF, Moves.INFERNAL_PARADE, Moves.MOONGEIST_BEAM ], - [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.ROOST, Moves.TROP_KICK, Moves.THUNDEROUS_KICK ], - [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.TEMPER_FLARE, Moves.FILLET_AWAY, Moves.HEAD_CHARGE ], - [Species.TAROUNTULA]: [ Moves.STRENGTH_SAP, Moves.LEECH_LIFE, Moves.PARTING_SHOT, Moves.STEALTH_ROCK ], + [Species.CALYREX]: [ Moves.SAPPY_SEED, Moves.RECOVER, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER ], + [Species.ENAMORUS]: [ Moves.FLEUR_CANNON, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.OBLIVION_WING ], + [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.TROP_KICK, Moves.THUNDEROUS_KICK ], + [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.BLAZING_TORQUE, Moves.FILLET_AWAY, Moves.MULTI_ATTACK ], + [Species.TAROUNTULA]: [ Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.THIEF, Moves.SPORE ], [Species.NYMBLE]: [ Moves.CEASELESS_EDGE, Moves.FELL_STINGER, Moves.LEECH_LIFE, Moves.WICKED_BLOW ], [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.WISH, Moves.PARTING_SHOT, Moves.PLASMA_FISTS ], - [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.BITE, Moves.NUZZLE, Moves.REVIVAL_BLESSING ], - [Species.FIDOUGH]: [ Moves.WISH, Moves.SPIKES, Moves.PARTING_SHOT, Moves.SIZZLY_SLIDE ], + [Species.TANDEMAUS]: [ Moves.BATON_PASS, Moves.BITE, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ], + [Species.FIDOUGH]: [ Moves.WISH, Moves.BODY_PRESS, Moves.PARTING_SHOT, Moves.SIZZLY_SLIDE ], [Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.BOOMBURST ], - [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.BULK_UP, Moves.TEMPER_FLARE, Moves.HEAD_CHARGE ], + [Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.BULK_UP, Moves.FLARE_BLITZ, Moves.HEAD_CHARGE ], [Species.NACLI]: [ Moves.BODY_PRESS, Moves.SPIKES, Moves.CURSE, Moves.DIAMOND_STORM ], - [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.BURNING_BULWARK, Moves.RECOVER, Moves.PHOTON_GEYSER ], - [Species.TADBULB]: [ Moves.PARABOLIC_CHARGE, Moves.MUDDY_WATER, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ], + [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.TAILWIND, Moves.HEAT_WAVE, Moves.AEROBLAST ], - [Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.DARKEST_LARIAT, Moves.NUZZLE, Moves.COLLISION_COURSE ], - [Species.SHROODLE]: [ Moves.TEMPER_FLARE, Moves.PARTING_SHOT, Moves.TOXIC, Moves.TIDY_UP ], + [Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.KNOCK_OFF, Moves.NUZZLE, Moves.COLLISION_COURSE ], + [Species.SHROODLE]: [ Moves.FIRE_LASH, Moves.PARTING_SHOT, Moves.TOXIC, Moves.TOPSY_TURVY ], [Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.CEASELESS_EDGE, Moves.LAST_RESPECTS ], - [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.SCALD, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], + [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.TOPSY_TURVY, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], [Species.KLAWF]: [ Moves.CRABHAMMER, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH ], - [Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.BURNING_BULWARK, Moves.ICE_SPINNER, Moves.TORCH_SONG ], - [Species.RELLOR]: [ Moves.TOXIC_SPIKES, Moves.RECOVER, Moves.MYSTICAL_FIRE, Moves.LUMINA_CRASH ], + [Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FROST_BREATH, Moves.TORCH_SONG ], + [Species.RELLOR]: [ Moves.TOXIC_SPIKES, Moves.RECOVER, Moves.HEAT_WAVE, Moves.LUMINA_CRASH ], [Species.FLITTLE]: [ Moves.COSMIC_POWER, Moves.AURA_SPHERE, Moves.ROOST, Moves.SEARING_SHOT ], [Species.TINKATINK]: [ Moves.NUZZLE, Moves.SHIFT_GEAR, Moves.ICE_HAMMER, Moves.PYRO_BALL ], [Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ], - [Species.BOMBIRDIER]: [ Moves.U_TURN, Moves.SWORDS_DANCE, Moves.SUCKER_PUNCH, Moves.MIGHTY_CLEAVE ], - [Species.FINIZEN]: [ Moves.ICE_SPINNER, Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.WOOD_HAMMER ], + [Species.BOMBIRDIER]: [ Moves.U_TURN, Moves.TIDY_UP, 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.BATON_PASS, Moves.BLAZING_TORQUE, Moves.HEAD_CHARGE, Moves.CLANGOROUS_SOUL ], [Species.ORTHWORM]: [ Moves.GLARE, Moves.COIL, Moves.BODY_PRESS, Moves.SHORE_UP ], [Species.GLIMMET]: [ Moves.CALM_MIND, Moves.SHORE_UP, Moves.PARTING_SHOT, Moves.FIERY_DANCE ], - [Species.GREAVARD]: [ Moves.BULK_UP, Moves.AGILITY, Moves.SHORE_UP, Moves.COLLISION_COURSE ], + [Species.GREAVARD]: [ Moves.TIDY_UP, Moves.YAWN, Moves.SHORE_UP, Moves.COLLISION_COURSE ], [Species.FLAMIGO]: [ Moves.THUNDEROUS_KICK, Moves.TRIPLE_AXEL, Moves.U_TURN, Moves.VICTORY_DANCE ], [Species.CETODDLE]: [ Moves.ICICLE_CRASH, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.DRAGON_DANCE ], - [Species.VELUZA]: [ Moves.RECOVER, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.PHOTON_GEYSER ], - [Species.DONDOZO]: [ Moves.RECOVER, Moves.ICE_SPINNER, Moves.CURSE, Moves.WOOD_HAMMER ], - [Species.TATSUGIRI]: [ Moves.ICE_BEAM, Moves.BATON_PASS, Moves.SCALD, Moves.CLANGOROUS_SOUL ], - [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.CEASELESS_EDGE, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], + [Species.VELUZA]: [ Moves.CEASELESS_EDGE, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.PSYBLADE ], + [Species.DONDOZO]: [ Moves.SOFT_BOILED, Moves.ICE_SPINNER, Moves.TOXIC, Moves.SALT_CURE ], + [Species.TATSUGIRI]: [ Moves.ICE_BEAM, Moves.BATON_PASS, Moves.SCALD, Moves.FILLET_AWAY ], + [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.MORNING_SUN, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], [Species.SCREAM_TAIL]: [ Moves.COSMIC_POWER, Moves.LUMINA_CRASH, Moves.MOONLIGHT, Moves.SHED_TAIL ], [Species.BRUTE_BONNET]: [ Moves.DARKEST_LARIAT, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.SAPPY_SEED ], [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.FLAMETHROWER, Moves.EARTH_POWER, Moves.ASTRAL_BARRAGE ], - [Species.SLITHER_WING]: [ Moves.KNOCK_OFF, Moves.VICTORY_DANCE, Moves.FIRE_LASH, Moves.FLYING_PRESS ], + [Species.SLITHER_WING]: [ Moves.KNOCK_OFF, Moves.VICTORY_DANCE, Moves.FIRE_LASH, Moves.THUNDEROUS_KICK ], [Species.SANDY_SHOCKS]: [ Moves.SHORE_UP, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.THUNDERCLAP ], - [Species.IRON_TREADS]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SPIKES, Moves.DOUBLE_IRON_BASH ], + [Species.IRON_TREADS]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SHORE_UP, Moves.DOUBLE_IRON_BASH ], [Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.WATER_SPOUT ], - [Species.IRON_HANDS]: [ Moves.HAMMER_ARM, Moves.CURSE, Moves.PLASMA_FISTS, Moves.RECOVER ], + [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.QUIVER_DANCE, Moves.MALIGNANT_CHAIN ], [Species.IRON_THORNS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.FUSION_BOLT ], - [Species.FRIGIBAX]: [ Moves.DRAGON_HAMMER, Moves.BULK_UP, Moves.SHORE_UP, Moves.GLACIAL_LANCE ], + [Species.FRIGIBAX]: [ Moves.DRAGON_DARTS, Moves.BULK_UP, Moves.SHORE_UP, Moves.GLACIAL_LANCE ], [Species.GIMMIGHOUL]: [ Moves.COSMIC_POWER, Moves.STORED_POWER, Moves.BATON_PASS, Moves.ASTRAL_BARRAGE ], - [Species.WO_CHIEN]: [ Moves.SPORE, Moves.RAGE_POWDER, Moves.SAPPY_SEED, Moves.JUNGLE_HEALING ], - [Species.CHIEN_PAO]: [ Moves.HEAD_CHARGE, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], - [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CURSE, Moves.LEECH_SEED, Moves.THOUSAND_ARROWS ], - [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.EARTH_POWER, Moves.BURNING_BULWARK, Moves.ERUPTION ], + [Species.WO_CHIEN]: [ Moves.SPORE, Moves.RAGE_POWDER, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ], + [Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], + [Species.TING_LU]: [ Moves.SHORE_UP, Moves.CURSE, Moves.SAPPY_SEED, Moves.THOUSAND_ARROWS ], + [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.TORCH_SONG, Moves.ERUPTION ], [Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], [Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.MAGICAL_TORQUE ], - [Species.KORAIDON]: [ Moves.MIGHTY_CLEAVE, Moves.RECOVER, Moves.GLAIVE_RUSH, Moves.CLANGOROUS_SOUL ], - [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.RECOVER, Moves.RISING_VOLTAGE, Moves.DRAGON_ENERGY ], + [Species.KORAIDON]: [ Moves.BITTER_BLADE, Moves.MORNING_SUN, Moves.GLAIVE_RUSH, Moves.CLANGOROUS_SOUL ], + [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CLANGOROUS_SOUL, Moves.RISING_VOLTAGE, Moves.DRAGON_ENERGY ], [Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.DRAGON_ENERGY ], - [Species.IRON_LEAVES]: [ Moves.SPORE, Moves.BLAZING_TORQUE, Moves.SAPPY_SEED, Moves.PHOTON_GEYSER ], - [Species.POLTCHAGEIST]: [ Moves.COSMIC_POWER, Moves.INFERNAL_PARADE, Moves.LEECH_SEED, Moves.FOLLOW_ME ], - [Species.OKIDOGI]: [ Moves.MORNING_SUN, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.COLLISION_COURSE ], + [Species.IRON_LEAVES]: [ Moves.SPORE, Moves.U_TURN, Moves.MIGHTY_CLEAVE, Moves.BITTER_BLADE ], + [Species.POLTCHAGEIST]: [ Moves.COSMIC_POWER, Moves.INFERNAL_PARADE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ], + [Species.OKIDOGI]: [ Moves.SLACK_OFF, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.COLLISION_COURSE ], [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.HEAT_WAVE, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ], [Species.FEZANDIPITI]: [ Moves.BATON_PASS, Moves.COSMIC_POWER, Moves.SIZZLY_SLIDE, Moves.MALIGNANT_CHAIN ], - [Species.OGERPON]: [ Moves.JUNGLE_HEALING, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], + [Species.OGERPON]: [ Moves.FLOWER_TRICK, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ], [Species.GOUGING_FIRE]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SACRED_FIRE, Moves.GLAIVE_RUSH ], [Species.RAGING_BOLT]: [ Moves.NASTY_PLOT, Moves.FLAMETHROWER, Moves.RECOVER, Moves.ELECTRO_DRIFT ], - [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.TACHYON_CUTTER, Moves.STONE_AXE, Moves.BITTER_BLADE ], - [Species.IRON_CROWN]: [ Moves.KINGS_SHIELD, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER, 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.PHOTON_GEYSER, Moves.ELECTRO_DRIFT ], [Species.TERAPAGOS]: [ Moves.EARTH_POWER, Moves.SHORE_UP, Moves.ICE_BEAM, Moves.SHELL_SMASH ], [Species.PECHARUNT]: [ Moves.TOXIC_SPIKES, Moves.BODY_PRESS, Moves.HEX, Moves.BANEFUL_BUNKER ], [Species.ALOLA_RATTATA]: [ Moves.STORM_THROW, Moves.PLAY_ROUGH, Moves.TIDY_UP, Moves.POPULATION_BOMB ], [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.AQUA_CUTTER, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ], [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.AURORA_VEIL, Moves.PARTING_SHOT, Moves.FREEZY_FROST ], - [Species.ALOLA_DIGLETT]: [ Moves.LANDS_WRATH, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.DOUBLE_IRON_BASH ], + [Species.ALOLA_DIGLETT]: [ Moves.THOUSAND_WAVES, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.MOUNTAIN_GALE ], [Species.ALOLA_MEOWTH]: [ Moves.MAKE_IT_RAIN, Moves.BUZZY_BUZZ, Moves.PARTING_SHOT, Moves.BADDY_BAD ], [Species.ALOLA_GEODUDE]: [ Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.STONE_AXE, Moves.EXTREME_SPEED ], [Species.ALOLA_GRIMER]: [ Moves.SUCKER_PUNCH, Moves.DIRE_CLAW, Moves.STRENGTH_SAP, Moves.SURGING_STRIKES ], - [Species.ETERNAL_FLOETTE]: [ Moves.DECORATE, Moves.FORESTS_CURSE, Moves.POLLEN_PUFF, Moves.QUIVER_DANCE ], + [Species.ETERNAL_FLOETTE]: [ Moves.FIERY_DANCE, Moves.GIGA_DRAIN, Moves.POLLEN_PUFF, Moves.QUIVER_DANCE ], [Species.GALAR_MEOWTH]: [ Moves.AQUA_CUTTER, Moves.KNOCK_OFF, Moves.BULLET_PUNCH, Moves.BEHEMOTH_BASH ], [Species.GALAR_PONYTA]: [ Moves.SPIRIT_BREAK, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.PHOTON_GEYSER ], - [Species.GALAR_SLOWPOKE]: [ Moves.TRICK_ROOM, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.PHOTON_GEYSER ], + [Species.GALAR_SLOWPOKE]: [ Moves.TRICK_ROOM, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.LUMINA_CRASH ], [Species.GALAR_FARFETCHD]: [ Moves.ROOST, Moves.SACRED_SWORD, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BLADE ], - [Species.GALAR_ARTICUNO]: [ Moves.AURA_SPHERE, Moves.BLEAKWIND_STORM, Moves.ICE_BEAM, Moves.PSYSTRIKE ], + [Species.GALAR_ARTICUNO]: [ Moves.AURA_SPHERE, Moves.OBLIVION_WING, Moves.ICE_BEAM, Moves.PSYSTRIKE ], [Species.GALAR_ZAPDOS]: [ Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ], - [Species.GALAR_MOLTRES]: [ Moves.CALM_MIND, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ], + [Species.GALAR_MOLTRES]: [ Moves.ROOST, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ], [Species.GALAR_CORSOLA]: [ Moves.TRICK_ROOM, Moves.MOONBLAST, Moves.COSMIC_POWER, Moves.ASTRAL_BARRAGE ], [Species.GALAR_ZIGZAGOON]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.EXTREME_SPEED ], [Species.GALAR_DARUMAKA]: [ Moves.ICE_SPINNER, Moves.ENDURE, Moves.DRAIN_PUNCH, Moves.V_CREATE ], @@ -567,12 +567,12 @@ export const speciesEggMoves = { [Species.GALAR_STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.TRICK_ROOM, Moves.SHORE_UP, Moves.SALT_CURE ], [Species.HISUI_GROWLITHE]: [ Moves.WOOD_HAMMER, Moves.HEAD_SMASH, Moves.VOLT_TACKLE, Moves.MORNING_SUN ], [Species.HISUI_VOLTORB]: [ Moves.FROST_BREATH, Moves.NASTY_PLOT, Moves.PARABOLIC_CHARGE, Moves.SEED_FLARE ], - [Species.HISUI_QWILFISH]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.STRENGTH_SAP ], - [Species.HISUI_SNEASEL]: [ Moves.AXE_KICK, Moves.BULLET_PUNCH, Moves.ICE_SPINNER, Moves.VICTORY_DANCE ], + [Species.HISUI_QWILFISH]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.STRENGTH_SAP, Moves.FISHIOUS_REND ], + [Species.HISUI_SNEASEL]: [ Moves.THUNDEROUS_KICK, Moves.KNOCK_OFF, Moves.ICE_SPINNER, Moves.VICTORY_DANCE ], [Species.HISUI_ZORUA]: [ Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.PARTING_SHOT, Moves.BLOOD_MOON ], - [Species.PALDEA_TAUROS]: [ Moves.NO_RETREAT, Moves.FLARE_BLITZ, Moves.WAVE_CRASH, Moves.THUNDEROUS_KICK ], - [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.STONE_AXE, Moves.LEECH_SEED, Moves.BANEFUL_BUNKER ], - [Species.BLOODMOON_URSALUNA]: [ Moves.GLARE, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.MIND_BLOWN ] + [Species.PALDEA_TAUROS]: [ Moves.NO_RETREAT, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK ], + [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.STONE_AXE, Moves.BANEFUL_BUNKER, Moves.SAPPY_SEED ], + [Species.BLOODMOON_URSALUNA]: [ Moves.GLARE, Moves.TRICK_ROOM, Moves.PARTING_SHOT, Moves.MIND_BLOWN ] }; function parseEggMoves(content: string): void { diff --git a/src/data/egg.ts b/src/data/egg.ts index 08982cd4a..f0d6de26a 100644 --- a/src/data/egg.ts +++ b/src/data/egg.ts @@ -77,8 +77,6 @@ export function getEggHatchWavesMessage(hatchWaves: integer): string { } export function getEggGachaTypeDescriptor(scene: BattleScene, egg: Egg): string { - if (egg.isManaphyEgg()) - return ''; switch (egg.gachaType) { case GachaType.LEGENDARY: return `Legendary Rate Up (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, egg.timestamp)).getName()})`; diff --git a/src/data/enums/arena-tag-type.ts b/src/data/enums/arena-tag-type.ts index cc08ca4fd..2ecac8b56 100644 --- a/src/data/enums/arena-tag-type.ts +++ b/src/data/enums/arena-tag-type.ts @@ -8,11 +8,13 @@ export enum ArenaTagType { MIST = "MIST", FUTURE_SIGHT = "FUTURE_SIGHT", DOOM_DESIRE = "DOOM_DESIRE", + WISH = "WISH", STEALTH_ROCK = "STEALTH_ROCK", STICKY_WEB = "STICKY_WEB", TRICK_ROOM = "TRICK_ROOM", GRAVITY = "GRAVITY", REFLECT = "REFLECT", LIGHT_SCREEN = "LIGHT_SCREEN", - AURORA_VEIL = "AURORA_VEIL" + AURORA_VEIL = "AURORA_VEIL", + TAILWIND = "TAILWIND" } diff --git a/src/data/enums/battler-tag-type.ts b/src/data/enums/battler-tag-type.ts index 4d810b737..d18ccf1c5 100644 --- a/src/data/enums/battler-tag-type.ts +++ b/src/data/enums/battler-tag-type.ts @@ -3,11 +3,13 @@ export enum BattlerTagType { NONE = "NONE", RECHARGING = "RECHARGING", FLINCHED = "FLINCHED", + INTERRUPTED = "INTERRUPTED", CONFUSED = "CONFUSED", INFATUATED = "INFATUATED", SEEDED = "SEEDED", NIGHTMARE = "NIGHTMARE", FRENZY = "FRENZY", + CHARGING = "CHARGING", ENCORE = "ENCORE", HELPING_HAND = "HELPING_HAND", INGRAIN = "INGRAIN", @@ -52,5 +54,6 @@ export enum BattlerTagType { SALT_CURED = "SALT_CURED", CURSED = "CURSED", CHARGED = "CHARGED", - GROUNDED = "GROUNDED" + GROUNDED = "GROUNDED", + MAGNET_RISEN = "MAGNET_RISEN" } diff --git a/src/data/move.ts b/src/data/move.ts index 1e7e8f854..f4cb0ed2f 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -12,7 +12,7 @@ import * as Utils from "../utils"; import { WeatherType } from "./weather"; import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; import { ArenaTagType } from "./enums/arena-tag-type"; -import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, PreventBerryUseAbAttr, BlockItemTheftAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr } from "./ability"; +import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr, PreventBerryUseAbAttr, BlockItemTheftAbAttr } from "./ability"; import { Abilities } from "./enums/abilities"; import { allAbilities } from './ability'; import { PokemonHeldItemModifier, BerryModifier, PreserveBerryModifier } from "../modifier/modifier"; @@ -327,6 +327,15 @@ export default class Move implements Localizable { return true; } + getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { + for (let attr of this.attrs) { + let failedText = attr.getFailedText(user, target, move, cancelled); + if (failedText !== null) + return failedText; + } + return null; + } + getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { let score = 0; @@ -359,7 +368,7 @@ export class AttackMove extends Move { let attackScore = 0; - const effectiveness = target.getAttackTypeEffectiveness(this.type); + const effectiveness = target.getAttackTypeEffectiveness(this.type, user); attackScore = Math.pow(effectiveness - 1, 2) * effectiveness < 1 ? -2 : 2; if (attackScore) { if (this.category === MoveCategory.PHYSICAL) { @@ -423,6 +432,10 @@ export abstract class MoveAttr { return null; } + getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { + return null; + } + getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { return 0; } @@ -435,7 +448,9 @@ export abstract class MoveAttr { export enum MoveEffectTrigger { PRE_APPLY, POST_APPLY, - HIT + HIT, + /** Triggers one time after all target effects have applied */ + POST_TARGET, } export class MoveEffectAttr extends MoveAttr { @@ -558,7 +573,7 @@ export class TargetHalfHpDamageAttr extends FixedDamageAttr { } apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - (args[0] as Utils.IntegerHolder).value = Math.floor(target.hp / 2); + (args[0] as Utils.IntegerHolder).value = Math.max(Math.floor(target.hp / 2), 1); return true; } @@ -686,7 +701,7 @@ export class RecoilAttr extends MoveEffectAttr { return false; const recoilDamage = Math.max(Math.floor((!this.useHp ? user.turnData.damageDealt : user.getMaxHp()) * this.damageRatio), - !this.useHp && user.turnData.damageDealt ? 1 : 0); + user.turnData.damageDealt ? 1 : 0); if (!recoilDamage) return false; @@ -724,23 +739,37 @@ export class SacrificialAttr extends MoveEffectAttr { getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { if (user.isBoss()) return -20; - return Math.ceil(((1 - user.getHpRatio()) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type) - 0.5)); + return Math.ceil(((1 - user.getHpRatio()) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type, user) - 0.5)); } } +/** + * Attribute used for moves which cut the user's Max HP in half. + * Triggers using POST_TARGET. + */ export class HalfSacrificialAttr extends MoveEffectAttr { constructor() { - super(true, MoveEffectTrigger.PRE_APPLY); + super(true, MoveEffectTrigger.POST_TARGET); } + /** + * Cut's the user's Max HP in half and displays the appropriate recoil message + * @param user Pokemon that used the move + * @param target N/A + * @param move Move with this attribute + * @param args N/A + * @returns true if the function succeeds + */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (!super.apply(user, target, move, args)) return false; const cancelled = new Utils.BooleanHolder(false); + // Check to see if the Pokemon has an ability that blocks non-direct damage applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled); if (!cancelled.value){ user.damageAndUpdate(Math.ceil(user.getMaxHp()/2), HitResult.OTHER, false, true, true); + user.scene.queueMessage(getPokemonMessage(user, ' cut its own HP to power up its move!')); // Queue recoil message } return true; } @@ -748,7 +777,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr { getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { if (user.isBoss()) return -10; - return Math.ceil(((1 - user.getHpRatio()/2) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type) - 0.5)); + return Math.ceil(((1 - user.getHpRatio()/2) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type, user) - 0.5)); } } @@ -757,7 +786,7 @@ export enum MultiHitType { _2_TO_5, _3, _3_INCR, - _1_TO_10 + _1_TO_10, } export class HealAttr extends MoveEffectAttr { @@ -913,7 +942,9 @@ export class MultiHitAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { let hitTimes: integer; - switch (this.multiHitType) { + const hitType = new Utils.IntegerHolder(this.multiHitType) + applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType) + switch (hitType.value) { case MultiHitType._2_TO_5: { const rand = user.randSeedInt(16); @@ -976,6 +1007,23 @@ export class MultiHitAttr extends MoveAttr { } } +export class ChangeMultiHitTypeAttr extends MoveAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + //const hitType = args[0] as Utils.NumberHolder; + return false; + } +} + +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) { + (args[0] as Utils.IntegerHolder).value = MultiHitType._3 + return true; + } + return false; + } +} + export class StatusEffectAttr extends MoveEffectAttr { public effect: StatusEffect; public cureTurn: integer; @@ -1010,6 +1058,25 @@ export class StatusEffectAttr extends MoveEffectAttr { } } +export class MultiStatusEffectAttr extends StatusEffectAttr { + public effects: StatusEffect[]; + + constructor(effects: StatusEffect[], selfTarget?: boolean, cureTurn?: integer, overrideStatus?: boolean) { + super(effects[0], selfTarget, cureTurn, overrideStatus); + this.effects = effects; + } + + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + this.effect = Utils.randSeedItem(this.effects); + const result = super.apply(user, target, move, args); + return result; + } + + getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): number { + return !(this.selfTarget ? user : target).status && (this.selfTarget ? user : target).canSetStatus(this.effect, true) ? Math.floor(move.chance * -0.1) : 0; + } +} + export class PsychoShiftEffectAttr extends MoveEffectAttr { constructor() { super(false, MoveEffectTrigger.HIT); @@ -1375,10 +1442,13 @@ export class ChargeAttr extends OverrideMoveEffectAttr { user.getMoveQueue().push({ move: move.id, targets: [ target.getBattlerIndex() ], ignorePP: true }); if (this.sameTurn) user.scene.pushMovePhase(new MovePhase(user.scene, user, [ target.getBattlerIndex() ], user.moveset.find(m => m.moveId === move.id), true), this.followUpPriority); + user.addTag(BattlerTagType.CHARGING, 1, move.id, user.id); resolve(true); }); - } else + } else { + user.lapseTag(BattlerTagType.CHARGING); resolve(false); + } }); } @@ -1480,8 +1550,8 @@ export class StatChangeAttr extends MoveEffectAttr { private condition: MoveConditionFunc; private showMessage: boolean; - constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean, condition?: MoveConditionFunc, showMessage: boolean = true, firstHitOnly: boolean = false) { - super(selfTarget, MoveEffectTrigger.HIT, firstHitOnly); + constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean, condition?: MoveConditionFunc, showMessage: boolean = true, firstHitOnly: boolean = false, moveEffectTrigger: MoveEffectTrigger = MoveEffectTrigger.HIT) { + super(selfTarget, moveEffectTrigger, firstHitOnly); this.stats = typeof(stats) === 'number' ? [ stats as BattleStat ] : stats as BattleStat[]; @@ -1543,6 +1613,23 @@ export class StatChangeAttr extends MoveEffectAttr { } } +export class AcupressureStatChangeAttr extends MoveEffectAttr { + constructor() { + super(); + } + + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean | Promise { + let randStats = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD, BattleStat.ACC, BattleStat.EVA ]; + randStats = randStats.filter(s => target.summonData.battleStats[s] < 6); + if (randStats.length > 0) { + let boostStat = [randStats[Utils.randInt(randStats.length)]]; + user.scene.unshiftPhase(new StatChangePhase(user.scene, target.getBattlerIndex(), this.selfTarget, boostStat, 2)); + return true; + } + return false; + } +} + export class GrowthStatChangeAttr extends StatChangeAttr { constructor() { super([ BattleStat.ATK, BattleStat.SPATK ], 1, true); @@ -1620,6 +1707,8 @@ export class CopyStatsAttr extends MoveEffectAttr { user.addTag(BattlerTagType.CRIT_BOOST, 0, move.id); else user.removeTag(BattlerTagType.CRIT_BOOST); + target.updateInfo(); + user.updateInfo(); target.scene.queueMessage(getPokemonMessage(user, 'copied\n') + getPokemonMessage(target, `'s stat changes!`)); @@ -1634,6 +1723,8 @@ export class InvertStatsAttr extends MoveEffectAttr { for (let s = 0; s < target.summonData.battleStats.length; s++) target.summonData.battleStats[s] *= -1; + target.updateInfo(); + user.updateInfo(); target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere all reversed!`)); @@ -1648,6 +1739,8 @@ export class ResetStatsAttr extends MoveEffectAttr { for (let s = 0; s < target.summonData.battleStats.length; s++) target.summonData.battleStats[s] = 0; + target.updateInfo(); + user.updateInfo(); target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere eliminated!`)); @@ -1814,13 +1907,13 @@ export class BattleStatRatioPowerAttr extends VariablePowerAttr { if (this.invert) { // Gyro ball uses a specific formula - let userSpeed = user.getStat(this.stat); + let userSpeed = user.getBattleStat(this.stat); if (userSpeed < 1) { // Gen 6+ always have 1 base power power.value = 1; return true; } - let bp = Math.floor(Math.min(150, 25 * target.getStat(this.stat) / userSpeed + 1)); + let bp = Math.floor(Math.min(150, 25 * target.getBattleStat(this.stat) / userSpeed + 1)); power.value = bp; return true; } @@ -2062,6 +2155,27 @@ export class PresentPowerAttr extends VariablePowerAttr { } } +export class KnockOffPowerAttr extends VariablePowerAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if(target.getHeldItems().length > 0){ + (args[0] as Utils.NumberHolder).value *= 1.5; + return true; + } + + return false; + } +} + +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) { + (args[0] as Utils.IntegerHolder).value = 20 + return true; + } + return false; + } +} + export class VariableAtkAttr extends MoveAttr { constructor() { super(); @@ -2229,6 +2343,36 @@ export class VariableMoveTypeAttr extends MoveAttr { } } +export class TechnoBlastTypeAttr extends VariableMoveTypeAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.GENESECT)) { + const form = user.species.speciesId === Species.GENESECT ? user.formIndex : user.fusionSpecies.formIndex; + const type = (args[0] as Utils.IntegerHolder); + + switch (form) { + case 1: // Shock Drive + type.value = Type.ELECTRIC; + break; + case 2: // Burn Drive + type.value = Type.FIRE; + break; + case 3: // Chill Drive + type.value = Type.ICE; + break; + case 4: // Douse Drive + type.value = Type.WATER; + break; + default: + type.value = Type.NORMAL; + break; + } + return true; + } + + return false; + } +} + export class AuraWheelTypeAttr extends VariableMoveTypeAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.MORPEKO)) { @@ -2365,6 +2509,27 @@ export class HiddenPowerTypeAttr extends VariableMoveTypeAttr { } } +export class MatchUserTypeAttr extends VariableMoveTypeAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + const type = (args[0] as Utils.IntegerHolder); + + const userTypes = user.getTypes(true); + + if(userTypes.includes(Type.STELLAR)) { // will not change to stellar type + const nonTeraTypes = user.getTypes(); + type.value = nonTeraTypes[0]; + return true; + } + else if (userTypes.length > 0) { + type.value = userTypes[0]; + return true; + } + else + return false; + + } +} + export class VariableMoveTypeMultiplierAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { return false; @@ -2401,7 +2566,7 @@ export class WaterSuperEffectTypeMultiplierAttr extends VariableMoveTypeMultipli export class FlyingTypeMultiplierAttr extends VariableMoveTypeMultiplierAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const multiplier = args[0] as Utils.NumberHolder; - multiplier.value *= target.getAttackTypeEffectiveness(Type.FLYING); + multiplier.value *= target.getAttackTypeEffectiveness(Type.FLYING, user); return true; } } @@ -2535,7 +2700,7 @@ export class FrenzyAttr extends MoveEffectAttr { if (!user.getMoveQueue().length) { if (!user.getTag(BattlerTagType.FRENZY)) { - const turnCount = user.randSeedIntRange(2, 3); + const turnCount = user.randSeedIntRange(1, 2); new Array(turnCount).fill(null).map(() => user.getMoveQueue().push({ move: move.id, targets: [ target.getBattlerIndex() ], ignorePP: true })); user.addTag(BattlerTagType.FRENZY, 1, move.id, user.id); } else { @@ -2646,26 +2811,19 @@ export class AddBattlerTagAttr extends MoveEffectAttr { export class CurseAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move:Move, args: any[]): boolean { - // Determine the correct target based on the user's type - if (!user.getTypes(true).includes(Type.GHOST)) { - // For non-Ghost types, target the user itself - target = user; - } - if (user.getTypes(true).includes(Type.GHOST)) { if (target.getTag(BattlerTagType.CURSED)) { user.scene.queueMessage('But it failed!'); return false; } - let curseRecoilDamage = Math.floor(user.getMaxHp() / 2); + let curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2)); user.damageAndUpdate(curseRecoilDamage, HitResult.OTHER, false, true, true); - user.scene.queueMessage(getPokemonMessage(user, ' cut its own HP!')); + user.scene.queueMessage(getPokemonMessage(user, ` cut its own HP\nand laid a curse on the ${target.name}!`)); target.addTag(BattlerTagType.CURSED, 0, move.id, user.id); return true; } else { - target = user; - user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), this.selfTarget, [BattleStat.ATK, BattleStat.DEF], 1)); - user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), this.selfTarget, [BattleStat.SPD], -1)); + user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), true, [BattleStat.ATK, BattleStat.DEF], 1)); + user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), true, [BattleStat.SPD], -1)); return true; } } @@ -2830,7 +2988,7 @@ export class AddArenaTagAttr extends MoveEffectAttr { public tagType: ArenaTagType; public turnCount: integer; private failOnOverlap: boolean; - private selfSideTarget: boolean; + public selfSideTarget: boolean; constructor(tagType: ArenaTagType, turnCount?: integer, failOnOverlap: boolean = false, selfSideTarget: boolean = false) { super(true, MoveEffectTrigger.POST_APPLY, true); @@ -2863,9 +3021,10 @@ export class AddArenaTagAttr extends MoveEffectAttr { export class AddArenaTrapTagAttr extends AddArenaTagAttr { getCondition(): MoveConditionFunc { return (user, target, move) => { - if (move.category !== MoveCategory.STATUS || !user.scene.arena.getTag(this.tagType)) + const side = (this.selfSideTarget ? user : target).isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; + if (move.category !== MoveCategory.STATUS || !user.scene.arena.getTagOnSide(this.tagType, side)) return true; - const tag = user.scene.arena.getTag(this.tagType) as ArenaTrapTag; + const tag = user.scene.arena.getTagOnSide(this.tagType, side) as ArenaTrapTag; return tag.layers < tag.maxLayers; }; } @@ -2917,16 +3076,14 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { return new Promise(resolve => { - if (!this.user && target.isMax()) - return resolve(false); - + // Check if the move category is not STATUS or if the switch out condition is not met - if (move.category !== MoveCategory.STATUS && !this.getSwitchOutCondition()(user, target, move)) { + if (!this.getSwitchOutCondition()(user, target, move)) { //Apply effects before switch out i.e. poison point, flame body, etc applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, new PokemonMove(move.id), null); return resolve(false); } - + // Move the switch out logic inside the conditional block // This ensures that the switch out only happens when the conditions are met const switchOutTarget = this.user ? user : target; @@ -2973,15 +3130,24 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { resolve(true); }); } - + getCondition(): MoveConditionFunc { - return (user, target, move) => move.category !== MoveCategory.STATUS || this.getSwitchOutCondition()(user, target, move); + return (user, target, move) => (move.category !== MoveCategory.STATUS || this.getSwitchOutCondition()(user, target, move)); + } + + getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { + const blockedByAbility = new Utils.BooleanHolder(false); + applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility); + return blockedByAbility.value ? getPokemonMessage(target, ` can't be switched out!`) : null; } getSwitchOutCondition(): MoveConditionFunc { return (user, target, move) => { const switchOutTarget = (this.user ? user : target); const player = switchOutTarget instanceof PlayerPokemon; + + if (!this.user && move.category == MoveCategory.STATUS && (target.hasAbilityWithAttr(ForceSwitchOutImmunityAbAttr) || target.isMax())) + return false; if (!player && !user.scene.currentBattle.battleType) { if (this.batonPass) @@ -3168,11 +3334,23 @@ export class RandomMovesetMoveAttr extends OverrideMoveEffectAttr { const moveTargets = getMoveTargets(user, move.moveId); if (!moveTargets.targets.length) return false; - const targets = moveTargets.multiple || moveTargets.targets.length === 1 - ? moveTargets.targets - : moveTargets.targets.indexOf(target.getBattlerIndex()) > -1 - ? [ target.getBattlerIndex() ] - : [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; + let selectTargets: BattlerIndex[]; + switch (true) { + case (moveTargets.multiple || moveTargets.targets.length === 1): { + selectTargets = moveTargets.targets; + break; + } + case (moveTargets.targets.indexOf(target.getBattlerIndex()) > -1): { + selectTargets = [ target.getBattlerIndex() ]; + break; + } + default: { + moveTargets.targets.splice(moveTargets.targets.indexOf(user.getAlly().getBattlerIndex())); + selectTargets = [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; + break; + } + } + const targets = selectTargets; user.getMoveQueue().push({ move: move.moveId, targets: targets, ignorePP: true }); user.scene.unshiftPhase(new MovePhase(user.scene, user, targets, moveset[moveIndex], true)); return true; @@ -3626,6 +3804,23 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr { } } +export class SuppressAbilitiesAttr extends MoveEffectAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if (!super.apply(user, target, move, args)) + return false; + + target.summonData.abilitySuppressed = true; + + target.scene.queueMessage(getPokemonMessage(target, ` ability\nwas suppressed!`)); + + return true; + } + + getCondition(): MoveConditionFunc { + return (user, target, move) => !target.getAbility().hasAttr(UnsuppressableAbilityAbAttr); + } +} + export class TransformAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { return new Promise(resolve => { @@ -3677,6 +3872,36 @@ export class MoneyAttr extends MoveEffectAttr { } } +export class LastResortAttr extends MoveAttr { + getCondition(): MoveConditionFunc { + return (user: Pokemon, target: Pokemon, move: Move) => { + const uniqueUsedMoveIds = new Set(); + const movesetMoveIds = user.getMoveset().map(m => m.moveId); + user.getMoveHistory().map(m => { + if (m.move !== move.id && movesetMoveIds.find(mm => mm === m.move)) + uniqueUsedMoveIds.add(m.move); + }); + return uniqueUsedMoveIds.size >= movesetMoveIds.length - 1; + }; + } +} + +export class VariableTargetAttr extends MoveAttr { + private targetChangeFunc: (user: Pokemon, target: Pokemon, move: Move) => number; + + constructor(targetChange: (user: Pokemon, target: Pokemon, move: Move) => number) { + super(); + + this.targetChangeFunc = targetChange; + } + + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + const targetVal = args[0] as Utils.NumberHolder; + targetVal.value = this.targetChangeFunc(user, target, move); + return true; + } +} + const failOnGravityCondition: MoveConditionFunc = (user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY); const failOnBossCondition: MoveConditionFunc = (user, target, move) => !target.isBossImmune(); @@ -3686,6 +3911,9 @@ const failOnMaxCondition: MoveConditionFunc = (user, target, move) => !target.is const failIfDampCondition: MoveConditionFunc = (user, target, move) => { const cancelled = new Utils.BooleanHolder(false); user.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)); + // Queue a message if an ability prevented usage of the move + if (cancelled.value) + user.scene.queueMessage(getPokemonMessage(user, ` cannot use ${move.name}!`)); return !cancelled.value; } @@ -3738,13 +3966,29 @@ export class FirstMoveCondition extends MoveCondition { } } +export class hitsSameTypeAttr extends VariableMoveTypeMultiplierAttr { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + const multiplier = args[0] as Utils.NumberHolder; + if (!user.getTypes().some(type => target.getTypes().includes(type))){ + multiplier.value = 0; + return true; + } + return false; + } +} + +const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.getTypes().includes(Type.UNKNOWN); + export type MoveTargetSet = { targets: BattlerIndex[]; multiple: boolean; } export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet { - const moveTarget = move ? allMoves[move].moveTarget : move === undefined ? MoveTarget.NEAR_ENEMY : []; + const variableTarget = new Utils.NumberHolder(0); + user.getOpponents().forEach(p => applyMoveAttrs(VariableTargetAttr, user, p, allMoves[move], variableTarget)); + + const moveTarget = allMoves[move].getAttrs(VariableTargetAttr).length ? variableTarget.value : move ? allMoves[move].moveTarget : move === undefined ? MoveTarget.NEAR_ENEMY : []; const opponents = user.getOpponents(); let set: Pokemon[] = []; @@ -4221,9 +4465,7 @@ export function initMoves() { new SelfStatusMove(Moves.CONVERSION, Type.NORMAL, -1, 30, -1, 0, 1) .attr(FirstMoveTypeAttr), new AttackMove(Moves.TRI_ATTACK, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, 20, 0, 1) - .attr(StatusEffectAttr, StatusEffect.PARALYSIS) - .attr(StatusEffectAttr, StatusEffect.BURN) - .attr(StatusEffectAttr, StatusEffect.FREEZE), + .attr(MultiStatusEffectAttr, [StatusEffect.BURN, StatusEffect.FREEZE, StatusEffect.PARALYSIS]), new AttackMove(Moves.SUPER_FANG, Type.NORMAL, MoveCategory.PHYSICAL, -1, 90, 10, -1, 0, 1) .attr(TargetHalfHpDamageAttr), new AttackMove(Moves.SLASH, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 1) @@ -4265,10 +4507,8 @@ export function initMoves() { .condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP) .soundBased(), new StatusMove(Moves.CURSE, Type.GHOST, -1, 10, -1, 0, 2) - .attr(StatChangeAttr, BattleStat.SPD, -1, true) - .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1, true) - .target(MoveTarget.USER) - .partial(), + .attr(CurseAttr) + .ignoresProtect(true), new AttackMove(Moves.FLAIL, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2) .attr(LowHpPowerAttr), new StatusMove(Moves.CONVERSION_2, Type.NORMAL, -1, 30, -1, 0, 2) @@ -4550,7 +4790,7 @@ export function initMoves() { .attr(AbilityCopyAttr), new SelfStatusMove(Moves.WISH, Type.NORMAL, -1, 10, -1, 0, 3) .triageMove() - .unimplemented(), + .attr(AddArenaTagAttr, ArenaTagType.WISH, 2, true), new SelfStatusMove(Moves.ASSIST, Type.NORMAL, -1, 20, -1, 0, 3) .attr(RandomMovesetMoveAttr, true) .ignoresVirtual(), @@ -4570,6 +4810,7 @@ export function initMoves() { .attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true) .condition((user, target, move) => !target.status), new AttackMove(Moves.KNOCK_OFF, Type.DARK, MoveCategory.PHYSICAL, 65, 100, 20, -1, 0, 3) + .attr(KnockOffPowerAttr) .partial(), new AttackMove(Moves.ENDEAVOR, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 3) .attr(MatchHpAttr) @@ -4675,8 +4916,7 @@ export function initMoves() { .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased(), new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3) - .attr(StatChangeAttr, BattleStat.ATK, -1) - .attr(StatChangeAttr, BattleStat.DEF, -1), + .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1), new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3) .attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true), new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3) @@ -4795,10 +5035,10 @@ export function initMoves() { .attr(StealEatBerryAttr), new StatusMove(Moves.TAILWIND, Type.FLYING, -1, 15, -1, 0, 4) .windMove() - .target(MoveTarget.USER_SIDE) - .unimplemented(), + .attr(AddArenaTagAttr, ArenaTagType.TAILWIND, 4, true) + .target(MoveTarget.USER_SIDE), new StatusMove(Moves.ACUPRESSURE, Type.NORMAL, -1, 30, -1, 0, 4) - .attr(StatChangeAttr, BattleStat.RAND, 2) + .attr(AcupressureStatChangeAttr) .target(MoveTarget.USER_OR_NEAR_ALLY), new AttackMove(Moves.METAL_BURST, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4) .attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5) @@ -4838,7 +5078,7 @@ export function initMoves() { new SelfStatusMove(Moves.POWER_TRICK, Type.PSYCHIC, -1, 10, -1, 0, 4) .unimplemented(), new StatusMove(Moves.GASTRO_ACID, Type.POISON, 100, 10, -1, 0, 4) - .unimplemented(), + .attr(SuppressAbilitiesAttr), new StatusMove(Moves.LUCKY_CHANT, Type.NORMAL, -1, 30, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.NO_CRIT, false, false, 5) .target(MoveTarget.USER_SIDE) @@ -4857,15 +5097,7 @@ export function initMoves() { new AttackMove(Moves.PUNISHMENT, Type.DARK, MoveCategory.PHYSICAL, -1, 100, 5, -1, 0, 4) .unimplemented(), new AttackMove(Moves.LAST_RESORT, Type.NORMAL, MoveCategory.PHYSICAL, 140, 100, 5, -1, 0, 4) - .condition((user, target, move) => { - const uniqueUsedMoveIds = new Set(); - const movesetMoveIds = user.getMoveset().map(m => m.moveId); - user.getMoveHistory().map(m => { - if (m.move !== move.id && movesetMoveIds.find(mm => mm === m.move)) - uniqueUsedMoveIds.add(m.move); - }); - return uniqueUsedMoveIds.size >= movesetMoveIds.length - 1; - }), + .attr(LastResortAttr), new StatusMove(Moves.WORRY_SEED, Type.GRASS, 100, 10, -1, 0, 4) .attr(AbilityChangeAttr, Abilities.INSOMNIA), new AttackMove(Moves.SUCKER_PUNCH, Type.DARK, MoveCategory.PHYSICAL, 70, 100, 5, -1, 1, 4) @@ -4878,6 +5110,10 @@ export function initMoves() { new SelfStatusMove(Moves.AQUA_RING, Type.WATER, -1, 20, -1, 0, 4) .attr(AddBattlerTagAttr, BattlerTagType.AQUA_RING, true, true), new SelfStatusMove(Moves.MAGNET_RISE, Type.ELECTRIC, -1, 10, -1, 0, 4) + .attr(AddBattlerTagAttr, BattlerTagType.MAGNET_RISEN, true, true) + .condition((user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY) && + !user.getTag(BattlerTagType.IGNORE_FLYING) && !user.getTag(BattlerTagType.INGRAIN) && + !user.getTag(BattlerTagType.MAGNET_RISEN)) .unimplemented(), new AttackMove(Moves.FLARE_BLITZ, Type.FIRE, MoveCategory.PHYSICAL, 120, 100, 15, 10, 0, 4) .attr(RecoilAttr, false, 0.33) @@ -5104,6 +5340,8 @@ export function initMoves() { .unimplemented(), new AttackMove(Moves.SMACK_DOWN, Type.ROCK, MoveCategory.PHYSICAL, 50, 100, 15, 100, 0, 5) .attr(AddBattlerTagAttr, BattlerTagType.IGNORE_FLYING, false, false, 5) + .attr(AddBattlerTagAttr, BattlerTagType.INTERRUPTED) + .attr(RemoveBattlerTagAttr, [BattlerTagType.FLYING]) .attr(HitsTagAttr, BattlerTagType.FLYING, false) .makesContact(false), new AttackMove(Moves.STORM_THROW, Type.FIGHTING, MoveCategory.PHYSICAL, 60, 100, 10, -1, 0, 5) @@ -5121,7 +5359,8 @@ export function initMoves() { .condition(failOnMaxCondition), new AttackMove(Moves.SYNCHRONOISE, Type.PSYCHIC, MoveCategory.SPECIAL, 120, 100, 10, -1, 0, 5) .target(MoveTarget.ALL_NEAR_OTHERS) - .partial(), + .condition(unknownTypeCondition) + .attr(hitsSameTypeAttr), new AttackMove(Moves.ELECTRO_BALL, Type.ELECTRIC, MoveCategory.SPECIAL, -1, 100, 10, -1, 0, 5) .attr(BattleStatRatioPowerAttr, Stat.SPD) .ballBombMove(), @@ -5191,7 +5430,7 @@ export function initMoves() { new StatusMove(Moves.QUASH, Type.DARK, 100, 15, -1, 0, 5) .unimplemented(), new AttackMove(Moves.ACROBATICS, Type.FLYING, MoveCategory.PHYSICAL, 55, 100, 15, -1, 0, 5) - .partial(), + .attr(MovePowerMultiplierAttr, (user, target, move) => Math.max(1, 2 - 0.2 * user.getHeldItems().reduce((v, m) => v + m.stackCount, 0))), new StatusMove(Moves.REFLECT_TYPE, Type.NORMAL, -1, 15, -1, 0, 5) .attr(CopyTypeAttr), new AttackMove(Moves.RETALIATE, Type.NORMAL, MoveCategory.PHYSICAL, 70, 100, 5, -1, 0, 5) @@ -5274,7 +5513,7 @@ export function initMoves() { .ballBombMove() .target(MoveTarget.ALL_NEAR_OTHERS), new AttackMove(Moves.TECHNO_BLAST, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5) - .partial(), + .attr(TechnoBlastTypeAttr), new AttackMove(Moves.RELIC_SONG, Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5) .attr(StatusEffectAttr, StatusEffect.SLEEP) .soundBased() @@ -5321,7 +5560,7 @@ export function initMoves() { new StatusMove(Moves.MAT_BLOCK, Type.FIGHTING, -1, 10, -1, 0, 6) .unimplemented(), new AttackMove(Moves.BELCH, Type.POISON, MoveCategory.SPECIAL, 120, 90, 10, -1, 0, 6) - .partial(), + .condition((user, target, move) => user.battleData.berriesEaten.length > 0), new StatusMove(Moves.ROTOTILLER, Type.GROUND, -1, 10, 100, 0, 6) .target(MoveTarget.ALL) .unimplemented(), @@ -5361,7 +5600,7 @@ export function initMoves() { .soundBased() .target(MoveTarget.ALL_NEAR_ENEMIES), new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, 100, 0, 6) - .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1) + .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1, false, null, true, true, MoveEffectTrigger.PRE_APPLY) .attr(ForceSwitchOutAttr, true, false) .soundBased(), new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6) @@ -5413,7 +5652,9 @@ export function initMoves() { new AttackMove(Moves.HYPERSPACE_HOLE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6) .ignoresProtect(), new AttackMove(Moves.WATER_SHURIKEN, Type.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6) - .attr(MultiHitAttr), + .attr(MultiHitAttr) + .attr(WaterShurikenPowerAttr) + .attr(WaterShurikenMultiHitTypeAttr), new AttackMove(Moves.MYSTICAL_FIRE, Type.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6) .attr(StatChangeAttr, BattleStat.SPATK, -1), new SelfStatusMove(Moves.SPIKY_SHIELD, Type.GRASS, -1, 10, -1, 4, 6) @@ -5424,7 +5665,7 @@ export function initMoves() { new StatusMove(Moves.EERIE_IMPULSE, Type.ELECTRIC, 100, 15, -1, 0, 6) .attr(StatChangeAttr, BattleStat.SPATK, -2), new StatusMove(Moves.VENOM_DRENCH, Type.POISON, 100, 20, 100, 0, 6) - .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK, BattleStat.SPD ], -1, false, (user, target, move) => target.status?.effect === StatusEffect.POISON) + .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK, BattleStat.SPD ], -1, false, (user, target, move) => target.status?.effect === StatusEffect.POISON || target.status?.effect === StatusEffect.TOXIC) .target(MoveTarget.ALL_NEAR_ENEMIES), new StatusMove(Moves.POWDER, Type.BUG, 100, 20, -1, 1, 6) .powderMove() @@ -5466,6 +5707,8 @@ export function initMoves() { new AttackMove(Moves.THOUSAND_ARROWS, Type.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 6) .attr(NeutralDamageAgainstFlyingTypeMultiplierAttr) .attr(HitsTagAttr, BattlerTagType.FLYING, false) + .attr(AddBattlerTagAttr, BattlerTagType.INTERRUPTED) + .attr(RemoveBattlerTagAttr, [BattlerTagType.FLYING]) .makesContact(false) .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.THOUSAND_WAVES, Type.GROUND, MoveCategory.PHYSICAL, 90, 100, 10, -1, 0, 6) @@ -5572,8 +5815,8 @@ export function initMoves() { new SelfStatusMove(Moves.BANEFUL_BUNKER, Type.POISON, -1, 10, -1, 4, 7) .attr(ProtectAttr, BattlerTagType.BANEFUL_BUNKER), new AttackMove(Moves.SPIRIT_SHACKLE, Type.GHOST, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 7) - .makesContact(false) - .partial(), + .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1) + .makesContact(false), new AttackMove(Moves.DARKEST_LARIAT, Type.DARK, MoveCategory.PHYSICAL, 85, 100, 10, -1, 0, 7) .attr(IgnoreOpponentStatChangesAttr), new AttackMove(Moves.SPARKLING_ARIA, Type.WATER, MoveCategory.SPECIAL, 90, 100, 10, -1, 0, 7) @@ -5643,10 +5886,10 @@ export function initMoves() { .unimplemented(), new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7) .danceMove() - .partial(), + .attr(MatchUserTypeAttr), new AttackMove(Moves.CORE_ENFORCER, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7) .target(MoveTarget.ALL_NEAR_ENEMIES) - .unimplemented(), + .partial(), new AttackMove(Moves.TROP_KICK, Type.GRASS, MoveCategory.PHYSICAL, 70, 100, 15, 100, 0, 7) .attr(StatChangeAttr, BattleStat.ATK, -1), new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7) @@ -5715,8 +5958,7 @@ export function initMoves() { .ignoresAbilities() .partial(), new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7) - .attr(StatChangeAttr, BattleStat.ATK, -1) - .attr(StatChangeAttr, BattleStat.SPATK, -1), + .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1), new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7) .attr(FlinchAttr), new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7) @@ -5767,7 +6009,7 @@ export function initMoves() { new AttackMove(Moves.PIKA_PAPOW, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7) .attr(FriendshipPowerAttr), new AttackMove(Moves.BOUNCY_BUBBLE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7) - .attr(HitHealAttr) + .attr(HitHealAttr, 1.0) .triageMove(), new AttackMove(Moves.BUZZY_BUZZ, Type.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7) .attr(StatusEffectAttr, StatusEffect.PARALYSIS), @@ -5899,8 +6141,7 @@ export function initMoves() { new AttackMove(Moves.BODY_PRESS, Type.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) .attr(DefAtkAttr), new StatusMove(Moves.DECORATE, Type.FAIRY, -1, 15, 100, 0, 8) - .attr(StatChangeAttr, BattleStat.ATK, 2) - .attr(StatChangeAttr, BattleStat.SPATK, 2), + .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 2), new AttackMove(Moves.DRUM_BEATING, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8) .attr(StatChangeAttr, BattleStat.SPD, -1) .makesContact(false), @@ -5950,7 +6191,8 @@ export function initMoves() { new AttackMove(Moves.STEEL_BEAM, Type.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8) .attr(HalfSacrificialAttr), new AttackMove(Moves.EXPANDING_FORCE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8) - .partial(), + .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 1.5 : 1) + .attr(VariableTargetAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 6 : 3), new AttackMove(Moves.STEEL_ROLLER, Type.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8) .attr(ClearTerrainAttr) .condition((user, target, move) => !!user.scene.arena.terrain), @@ -6034,16 +6276,15 @@ export function initMoves() { new AttackMove(Moves.THUNDEROUS_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 8) .attr(StatChangeAttr, BattleStat.DEF, -1), new AttackMove(Moves.GLACIAL_LANCE, Type.ICE, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8) - .target(MoveTarget.ALL_NEAR_ENEMIES), + .target(MoveTarget.ALL_NEAR_ENEMIES) + .makesContact(false), new AttackMove(Moves.ASTRAL_BARRAGE, Type.GHOST, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.EERIE_SPELL, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 5, 100, 0, 8) .soundBased() .partial(), new AttackMove(Moves.DIRE_CLAW, Type.POISON, MoveCategory.PHYSICAL, 80, 100, 15, 50, 0, 8) - .attr(StatusEffectAttr, StatusEffect.POISON) - .attr(StatusEffectAttr, StatusEffect.PARALYSIS) - .attr(StatusEffectAttr, StatusEffect.SLEEP), + .attr(MultiStatusEffectAttr, [StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP]), new AttackMove(Moves.PSYSHIELD_BASH, Type.PSYCHIC, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8) .attr(StatChangeAttr, BattleStat.DEF, 1, true), new SelfStatusMove(Moves.POWER_SHIFT, Type.NORMAL, -1, 10, 100, 0, 8) @@ -6116,7 +6357,7 @@ export function initMoves() { .partial(), new SelfStatusMove(Moves.TAKE_HEART, Type.PSYCHIC, -1, 10, -1, 0, 8) .attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF ], 1, true) - .partial(), + .attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP), /* Unused new AttackMove(Moves.G_MAX_WILDFIRE, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8) .target(MoveTarget.ALL_NEAR_ENEMIES) @@ -6307,9 +6548,9 @@ export function initMoves() { new AttackMove(Moves.RUINATION, Type.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9) .attr(TargetHalfHpDamageAttr), new AttackMove(Moves.COLLISION_COURSE, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9) - .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2 ? 5461/4096 : 1), + .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461/4096 : 1), new AttackMove(Moves.ELECTRO_DRIFT, Type.ELECTRIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 9) - .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2 ? 5461/4096 : 1) + .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461/4096 : 1) .makesContact(), new SelfStatusMove(Moves.SHED_TAIL, Type.NORMAL, -1, 10, -1, 0, 9) .unimplemented(), @@ -6358,8 +6599,7 @@ export function initMoves() { }), // TODO Add Instruct/Encore interaction new AttackMove(Moves.COMEUPPANCE, Type.DARK, MoveCategory.PHYSICAL, 1, 100, 10, -1, 0, 9) .attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5) - .target(MoveTarget.ATTACKER) - .partial(), + .target(MoveTarget.ATTACKER), new AttackMove(Moves.AQUA_CUTTER, Type.WATER, MoveCategory.PHYSICAL, 70, 100, 20, -1, 0, 9) .attr(HighCritAttr) .slicingMove() @@ -6413,6 +6653,7 @@ export function initMoves() { new AttackMove(Moves.THUNDERCLAP, Type.ELECTRIC, MoveCategory.SPECIAL, 70, 100, 5, -1, 1, 9) .condition((user, target, move) => user.scene.currentBattle.turnCommands[target.getBattlerIndex()].command === Command.FIGHT && !target.turnData.acted && allMoves[user.scene.currentBattle.turnCommands[target.getBattlerIndex()].move.move].category !== MoveCategory.STATUS), new AttackMove(Moves.MIGHTY_CLEAVE, Type.ROCK, MoveCategory.PHYSICAL, 95, 100, 5, -1, 0, 9) + .slicingMove() .ignoresProtect(), new AttackMove(Moves.TACHYON_CUTTER, Type.STEEL, MoveCategory.SPECIAL, 50, -1, 10, -1, 0, 9) .attr(MultiHitAttr, MultiHitType._2) diff --git a/src/data/pokemon-evolutions.ts b/src/data/pokemon-evolutions.ts index 0c1dfe06c..0d09277ad 100644 --- a/src/data/pokemon-evolutions.ts +++ b/src/data/pokemon-evolutions.ts @@ -1421,7 +1421,15 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesFormEvolution(Species.POLTEAGEIST, 'antique', 'antique', 1, EvolutionItem.CHIPPED_POT, null, SpeciesWildEvolutionDelay.LONG) ], [Species.MILCERY]: [ - new SpeciesEvolution(Species.ALCREMIE, 1, EvolutionItem.STRAWBERRY_SWEET, null, SpeciesWildEvolutionDelay.LONG) + new SpeciesFormEvolution(Species.ALCREMIE, '', 'vanilla-cream', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.TOWN || p.scene.arena.biomeType === Biome.PLAINS || p.scene.arena.biomeType === Biome.GRASS || p.scene.arena.biomeType === Biome.TALL_GRASS || p.scene.arena.biomeType === Biome.METROPOLIS), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'ruby-cream', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.BADLANDS || p.scene.arena.biomeType === Biome.VOLCANO || p.scene.arena.biomeType === Biome.GRAVEYARD || p.scene.arena.biomeType === Biome.FACTORY || p.scene.arena.biomeType === Biome.SLUM), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'matcha-cream', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.FOREST || p.scene.arena.biomeType === Biome.SWAMP || p.scene.arena.biomeType === Biome.MEADOW || p.scene.arena.biomeType === Biome.JUNGLE), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'mint-cream', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.SEA || p.scene.arena.biomeType === Biome.BEACH || p.scene.arena.biomeType === Biome.LAKE || p.scene.arena.biomeType === Biome.SEABED), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'lemon-cream', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.DESERT || p.scene.arena.biomeType === Biome.POWER_PLANT || p.scene.arena.biomeType === Biome.DOJO || p.scene.arena.biomeType === Biome.RUINS || p.scene.arena.biomeType === Biome.CONSTRUCTION_SITE), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'salted-cream', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.MOUNTAIN || p.scene.arena.biomeType === Biome.CAVE || p.scene.arena.biomeType === Biome.ICE_CAVE || p.scene.arena.biomeType === Biome.FAIRY_CAVE || p.scene.arena.biomeType === Biome.SNOWY_FOREST), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'ruby-swirl', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.WASTELAND || p.scene.arena.biomeType === Biome.LABORATORY), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'caramel-swirl', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.TEMPLE || p.scene.arena.biomeType === Biome.ISLAND), SpeciesWildEvolutionDelay.LONG), + new SpeciesFormEvolution(Species.ALCREMIE, '', 'rainbow-swirl', 1, EvolutionItem.STRAWBERRY_SWEET, new SpeciesEvolutionCondition(p => p.scene.arena.biomeType === Biome.ABYSS || p.scene.arena.biomeType === Biome.SPACE || p.scene.arena.biomeType === Biome.END), SpeciesWildEvolutionDelay.LONG) ], [Species.DURALUDON]: [ new SpeciesFormEvolution(Species.ARCHALUDON, '', '', 1, EvolutionItem.METAL_ALLOY, null, SpeciesWildEvolutionDelay.VERY_LONG) diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index e8dbef822..9a38ed81e 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -82,7 +82,11 @@ export enum FormChangeItem { SHADOW_REINS_OF_UNITY, WELLSPRING_MASK, HEARTHFLAME_MASK, - CORNERSTONE_MASK + CORNERSTONE_MASK, + SHOCK_DRIVE, + BURN_DRIVE, + CHILL_DRIVE, + DOUSE_DRIVE } export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean; @@ -542,11 +546,27 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangePostMoveTrigger(Moves.RELIC_SONG), true), new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangeActiveTrigger(false), 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 SpeciesFormChangeManualTrigger(), true), + new SpeciesFormChange(Species.GRENINJA, 'ash', 'battle-bond', new SpeciesFormChangeManualTrigger(), 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.ZYGARDE]: [ + new SpeciesFormChange(Species.ZYGARDE, '50-pc', 'complete', new SpeciesFormChangeManualTrigger(), true), + new SpeciesFormChange(Species.ZYGARDE, 'complete', '50-pc', new SpeciesFormChangeManualTrigger(), true), + new SpeciesFormChange(Species.ZYGARDE, '10-pc', 'complete', new SpeciesFormChangeManualTrigger(), true), + new SpeciesFormChange(Species.ZYGARDE, 'complete', '10-pc', new SpeciesFormChangeManualTrigger(), true) + ], [Species.DIANCIE]: [ new SpeciesFormChange(Species.DIANCIE, '', SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE)) ], @@ -630,7 +650,15 @@ export const pokemonFormChanges: PokemonFormChanges = { 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, '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.MORPEKO]: [ new SpeciesFormChange(Species.MORPEKO, 'full-belly', 'hangry', new SpeciesFormChangeManualTrigger(), true), diff --git a/src/data/pokemon-level-moves.ts b/src/data/pokemon-level-moves.ts index 5788c9c61..2b5d95b25 100644 --- a/src/data/pokemon-level-moves.ts +++ b/src/data/pokemon-level-moves.ts @@ -30,7 +30,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 24, Moves.SWEET_SCENT ], [ 27, Moves.SYNTHESIS ], [ 30, Moves.WORRY_SEED ], - [ 33, Moves.DOUBLE_EDGE ], + [ 33, Moves.POWER_WHIP ], [ 36, Moves.SOLAR_BEAM ], ], [Species.IVYSAUR]: [ @@ -47,16 +47,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 30, Moves.SWEET_SCENT ], [ 35, Moves.SYNTHESIS ], [ 40, Moves.WORRY_SEED ], - [ 45, Moves.DOUBLE_EDGE ], + [ 45, Moves.POWER_WHIP ], [ 50, Moves.SOLAR_BEAM ], ], [Species.VENUSAUR]: [ [ 0, Moves.PETAL_BLIZZARD ], + [ 1, Moves.GROWTH ], + [ 1, Moves.PETAL_DANCE ], [ 1, Moves.VINE_WHIP ], [ 1, Moves.TACKLE ], [ 1, Moves.GROWL ], - [ 1, Moves.GROWTH ], - [ 1, Moves.PETAL_DANCE ], [ 9, Moves.LEECH_SEED ], [ 12, Moves.RAZOR_LEAF ], [ 15, Moves.POISON_POWDER ], @@ -66,7 +66,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 30, Moves.SWEET_SCENT ], [ 37, Moves.SYNTHESIS ], [ 44, Moves.WORRY_SEED ], - [ 51, Moves.DOUBLE_EDGE ], + [ 51, Moves.POWER_WHIP ], [ 58, Moves.SOLAR_BEAM ], ], [Species.CHARMANDER]: [ @@ -127,7 +127,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 27, Moves.SHELL_SMASH ], [ 30, Moves.IRON_DEFENSE ], [ 33, Moves.HYDRO_PUMP ], - [ 36, Moves.SKULL_BASH ], + [ 36, Moves.WAVE_CRASH ], ], [Species.WARTORTLE]: [ [ 1, Moves.TACKLE ], @@ -143,7 +143,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 35, Moves.SHELL_SMASH ], [ 40, Moves.IRON_DEFENSE ], [ 45, Moves.HYDRO_PUMP ], - [ 50, Moves.SKULL_BASH ], + [ 50, Moves.WAVE_CRASH ], ], [Species.BLASTOISE]: [ [ 0, Moves.FLASH_CANNON ], @@ -160,7 +160,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 35, Moves.SHELL_SMASH ], [ 42, Moves.IRON_DEFENSE ], [ 49, Moves.HYDRO_PUMP ], - [ 56, Moves.SKULL_BASH ], + [ 56, Moves.WAVE_CRASH ], ], [Species.CATERPIE]: [ [ 1, Moves.TACKLE ], @@ -341,9 +341,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 12, Moves.GLARE ], [ 17, Moves.SCREECH ], [ 20, Moves.ACID ], + [ 25, Moves.SWALLOW ], [ 25, Moves.STOCKPILE ], [ 25, Moves.SPIT_UP ], - [ 25, Moves.SWALLOW ], [ 28, Moves.ACID_SPRAY ], [ 33, Moves.SLUDGE_BOMB ], [ 36, Moves.GASTRO_ACID ], @@ -396,9 +396,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 36, Moves.THUNDERBOLT ], [ 40, Moves.LIGHT_SCREEN ], [ 44, Moves.THUNDER ], + [ 48, Moves.PIKA_PAPOW ], ], [Species.RAICHU]: [ - [ 0, Moves.THUNDER_PUNCH ], + [ 0, Moves.ZIPPY_ZAP ], [ 1, Moves.TAIL_WHIP ], [ 1, Moves.GROWL ], [ 1, Moves.THUNDER_SHOCK ], @@ -418,7 +419,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], @@ -1777,14 +1780,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 4, Moves.DOUBLE_KICK ], [ 8, Moves.LOW_KICK ], [ 12, Moves.ENDURE ], - [ 16, Moves.REVENGE ], + [ 16, Moves.SUCKER_PUNCH ], [ 21, Moves.WIDE_GUARD ], [ 24, Moves.BLAZE_KICK ], - [ 28, Moves.MIND_READER ], + [ 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]: [ [ 0, Moves.DRAIN_PUNCH ], @@ -1793,16 +1797,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.FAKE_OUT ], [ 1, Moves.HELPING_HAND ], [ 1, Moves.FEINT ], - [ 1, Moves.VACUUM_WAVE ], - [ 1, Moves.BULLET_PUNCH ], [ 4, Moves.MACH_PUNCH ], - [ 8, Moves.POWER_UP_PUNCH ], + [ 8, Moves.VACUUM_WAVE ], [ 12, Moves.DETECT ], - [ 16, Moves.REVENGE ], + [ 16, Moves.BULLET_PUNCH ], [ 21, Moves.QUICK_GUARD ], - [ 24, Moves.FIRE_PUNCH ], - [ 24, Moves.ICE_PUNCH ], [ 24, Moves.THUNDER_PUNCH ], + [ 24, Moves.ICE_PUNCH ], + [ 24, Moves.FIRE_PUNCH ], [ 28, Moves.AGILITY ], [ 32, Moves.MEGA_PUNCH ], [ 36, Moves.CLOSE_COMBAT ], @@ -2231,9 +2233,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 45, Moves.CHARM ], [ 50, Moves.DOUBLE_EDGE ], [ 55, Moves.LAST_RESORT ], + [ 60, Moves.VEEVEE_VOLLEY ], ], [Species.VAPOREON]: [ - [ 0, Moves.WATER_GUN ], + [ 0, Moves.BOUNCY_BUBBLE ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -2247,19 +2250,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.HAZE ], - [ 25, Moves.WATER_PULSE ], - [ 30, Moves.AURORA_BEAM ], - [ 35, Moves.AQUA_RING ], - [ 40, Moves.MUDDY_WATER ], - [ 45, Moves.ACID_ARMOR ], - [ 50, Moves.HYDRO_PUMP ], - [ 55, Moves.LAST_RESORT ], + [ 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]: [ - [ 0, Moves.THUNDER_SHOCK ], + [ 0, Moves.BUZZY_BUZZ ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -2273,19 +2277,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.THUNDER_WAVE ], - [ 25, Moves.DOUBLE_KICK ], - [ 30, Moves.THUNDER_FANG ], - [ 35, Moves.PIN_MISSILE ], - [ 40, Moves.DISCHARGE ], - [ 45, Moves.AGILITY ], - [ 50, Moves.THUNDER ], - [ 55, Moves.LAST_RESORT ], + [ 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]: [ - [ 0, Moves.EMBER ], + [ 0, Moves.SIZZLY_SLIDE ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -2298,16 +2303,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.SMOG ], - [ 25, Moves.BITE ], - [ 30, Moves.FIRE_FANG ], - [ 35, Moves.FIRE_SPIN ], - [ 40, Moves.LAVA_PLUME ], - [ 45, Moves.SCARY_FACE ], - [ 50, Moves.FLARE_BLITZ ], - [ 55, Moves.LAST_RESORT ], + [ 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 ], @@ -2591,7 +2597,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 31, Moves.LIGHT_SCREEN ], [ 34, Moves.BODY_SLAM ], [ 39, Moves.SAFEGUARD ], - [ 42, Moves.AROMATHERAPY ], + [ 42, Moves.GIGA_DRAIN ], [ 45, Moves.SOLAR_BEAM ], ], [Species.BAYLEEF]: [ @@ -2607,7 +2613,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 36, Moves.LIGHT_SCREEN ], [ 40, Moves.BODY_SLAM ], [ 46, Moves.SAFEGUARD ], - [ 50, Moves.AROMATHERAPY ], + [ 50, Moves.GIGA_DRAIN ], [ 54, Moves.SOLAR_BEAM ], ], [Species.MEGANIUM]: [ @@ -2625,7 +2631,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 40, Moves.LIGHT_SCREEN ], [ 46, Moves.BODY_SLAM ], [ 54, Moves.SAFEGUARD ], - [ 60, Moves.AROMATHERAPY ], + [ 60, Moves.GIGA_DRAIN ], [ 65, Moves.SOLAR_BEAM ], ], [Species.CYNDAQUIL]: [ @@ -2789,6 +2795,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.ECHOED_VOICE ], [ 9, Moves.CONFUSION ], [ 12, Moves.REFLECT ], + [ 15, Moves.DEFOG ], [ 18, Moves.AIR_SLASH ], [ 23, Moves.EXTRASENSORY ], [ 28, Moves.TAKE_DOWN ], @@ -3325,7 +3332,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 52, Moves.EARTHQUAKE ], ], [Species.ESPEON]: [ - [ 0, Moves.CONFUSION ], + [ 0, Moves.GLITZY_GLOW ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -3338,19 +3345,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.SWIFT ], - [ 25, Moves.PSYBEAM ], - [ 30, Moves.MORNING_SUN ], - [ 35, Moves.POWER_SWAP ], - [ 40, Moves.PSYCHIC ], - [ 45, Moves.PSYCH_UP ], - [ 50, Moves.FUTURE_SIGHT ], - [ 55, Moves.LAST_RESORT ], + [ 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]: [ - [ 0, Moves.SNARL ], + [ 0, Moves.BADDY_BAD ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -3364,16 +3372,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.CONFUSE_RAY ], - [ 25, Moves.ASSURANCE ], - [ 30, Moves.MOONLIGHT ], - [ 35, Moves.GUARD_SWAP ], - [ 40, Moves.DARK_PULSE ], - [ 45, Moves.SCREECH ], - [ 50, Moves.MEAN_LOOK ], - [ 55, Moves.LAST_RESORT ], + [ 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 ], @@ -3565,7 +3574,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 13, Moves.LICK ], [ 19, Moves.HEADBUTT ], [ 25, Moves.ROAR ], - [ 31, Moves.RAGE ], + [ 31, Moves.LAST_RESORT ], [ 37, Moves.PLAY_ROUGH ], [ 43, Moves.PAYBACK ], [ 49, Moves.CRUNCH ], @@ -3583,7 +3592,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 13, Moves.LICK ], [ 19, Moves.HEADBUTT ], [ 27, Moves.ROAR ], - [ 35, Moves.RAGE ], + [ 35, Moves.LAST_RESORT ], [ 43, Moves.PLAY_ROUGH ], [ 51, Moves.PAYBACK ], [ 59, Moves.CRUNCH ], @@ -3859,7 +3868,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.WING_ATTACK ], [ 24, Moves.SLASH ], [ 28, Moves.STEEL_WING ], - [ 32, Moves.AUTOTOMIZE ], + [ 32, Moves.PAYBACK ], [ 36, Moves.DRILL_PECK ], [ 40, Moves.METAL_SOUND ], [ 44, Moves.SPIKES ], @@ -3914,11 +3923,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.DRAGON_BREATH ], [ 25, Moves.BUBBLE_BEAM ], [ 30, Moves.AGILITY ], - [ 37, Moves.LASER_FOCUS ], + [ 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 ], @@ -3965,10 +3975,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], + [ 50, Moves.LOCK_ON ], + [ 55, Moves.ZAP_CANNON ], + [ 60, Moves.HYPER_BEAM ], ], [Species.STANTLER]: [ [ 1, Moves.TACKLE ], @@ -4259,7 +4268,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 72, Moves.FIRE_BLAST ], [ 81, Moves.FUTURE_SIGHT ], [ 90, Moves.SKY_ATTACK ], - [ 99, Moves.BURN_UP ], + [ 99, Moves.OVERHEAT ], ], [Species.CELEBI]: [ [ 1, Moves.CONFUSION ], @@ -4269,6 +4278,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], @@ -4967,6 +4977,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 23, Moves.ABSORB ], [ 29, Moves.SHADOW_SNEAK ], [ 36, Moves.FURY_SWIPES ], + [ 41, Moves.HEAL_BLOCK ], [ 43, Moves.MIND_READER ], [ 50, Moves.SHADOW_BALL ], [ 57, Moves.SPITE ], @@ -5586,7 +5597,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.SPINDA]: [ [ 1, Moves.TACKLE ], [ 5, Moves.COPYCAT ], - [ 10, Moves.TEETER_DANCE ], + [ 10, Moves.DIZZY_PUNCH ], [ 14, Moves.PSYBEAM ], [ 19, Moves.HYPNOSIS ], [ 23, Moves.BODY_SLAM ], @@ -5787,6 +5798,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.PSYSHOCK ], [ 25, Moves.COSMIC_POWER ], [ 30, Moves.PSYCHIC ], + [ 33, Moves.HEAL_BLOCK ], [ 35, Moves.STONE_EDGE ], [ 40, Moves.FUTURE_SIGHT ], [ 45, Moves.MAGIC_ROOM ], @@ -5805,6 +5817,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.ZEN_HEADBUTT ], [ 25, Moves.COSMIC_POWER ], [ 30, Moves.PSYCHIC ], + [ 33, Moves.HEAL_BLOCK ], [ 35, Moves.STONE_EDGE ], [ 40, Moves.SOLAR_BEAM ], [ 45, Moves.WONDER_ROOM ], @@ -5881,6 +5894,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 3, Moves.RAPID_SPIN ], [ 6, Moves.CONFUSION ], [ 9, Moves.ROCK_TOMB ], + [ 10, Moves.HEAL_BLOCK ], [ 12, Moves.POWER_TRICK ], [ 15, Moves.PSYBEAM ], [ 18, Moves.ANCIENT_POWER ], @@ -5902,6 +5916,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.MUD_SLAP ], [ 1, Moves.RAPID_SPIN ], [ 9, Moves.ROCK_TOMB ], + [ 10, Moves.HEAL_BLOCK ], [ 12, Moves.POWER_TRICK ], [ 15, Moves.PSYBEAM ], [ 18, Moves.ANCIENT_POWER ], @@ -6497,6 +6512,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.LATIOS]: [ [ 1, Moves.DRAGON_DANCE ], [ 1, Moves.STORED_POWER ], + [ 1, Moves.HEAL_BLOCK ], [ 5, Moves.HELPING_HAND ], [ 10, Moves.RECOVER ], [ 15, Moves.CONFUSION ], @@ -7355,6 +7371,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 36, Moves.IRON_DEFENSE ], [ 40, Moves.METAL_SOUND ], [ 44, Moves.FUTURE_SIGHT ], + [ 45, Moves.HEAL_BLOCK ], ], [Species.BRONZONG]: [ [ 0, Moves.BLOCK ], @@ -7373,6 +7390,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 38, Moves.IRON_DEFENSE ], [ 44, Moves.METAL_SOUND ], [ 50, Moves.FUTURE_SIGHT ], + [ 52, Moves.HEAL_BLOCK ], [ 56, Moves.RAIN_DANCE ], ], [Species.BONSLY]: [ @@ -7932,7 +7950,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 49, Moves.U_TURN ], ], [Species.LEAFEON]: [ - [ 0, Moves.RAZOR_LEAF ], + [ 0, Moves.SAPPY_SEED ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -7946,19 +7964,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.LEECH_SEED ], - [ 25, Moves.MAGICAL_LEAF ], - [ 30, Moves.SYNTHESIS ], - [ 35, Moves.SUNNY_DAY ], - [ 40, Moves.GIGA_DRAIN ], - [ 45, Moves.SWORDS_DANCE ], - [ 50, Moves.LEAF_BLADE ], - [ 55, Moves.LAST_RESORT ], + [ 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]: [ - [ 0, Moves.ICY_WIND ], + [ 0, Moves.FREEZY_FROST ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -7971,16 +7990,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.ICE_SHARD ], - [ 25, Moves.BITE ], - [ 30, Moves.ICE_FANG ], - [ 35, Moves.SNOWSCAPE ], - [ 40, Moves.FREEZE_DRY ], - [ 45, Moves.MIRROR_COAT ], - [ 50, Moves.BLIZZARD ], - [ 55, Moves.LAST_RESORT ], + [ 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.SAND_ATTACK ], @@ -9480,6 +9500,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [Species.YAMASK]: [ [ 1, Moves.PROTECT ], [ 1, Moves.ASTONISH ], + [ 1, Moves.HEAL_BLOCK ], [ 4, Moves.HAZE ], [ 8, Moves.NIGHT_SHADE ], [ 12, Moves.DISABLE ], @@ -9502,6 +9523,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], @@ -9709,6 +9731,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], @@ -9724,6 +9747,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.PSYSHOCK ], [ 24, Moves.HYPNOSIS ], [ 28, Moves.FAKE_TEARS ], + [ 34, Moves.HEAL_BLOCK ], [ 35, Moves.PSYCH_UP ], [ 46, Moves.FLATTER ], [ 52, Moves.FUTURE_SIGHT ], @@ -9739,6 +9763,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.PSYSHOCK ], [ 24, Moves.HYPNOSIS ], [ 28, Moves.FAKE_TEARS ], + [ 34, Moves.HEAL_BLOCK ], [ 35, Moves.PSYCH_UP ], [ 40, Moves.PSYCHIC ], [ 48, Moves.FLATTER ], @@ -9760,6 +9785,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 36, Moves.PSYCHIC ], [ 40, Moves.SKILL_SWAP ], [ 44, Moves.FUTURE_SIGHT ], + [ 46, Moves.HEAL_BLOCK ], [ 48, Moves.WONDER_ROOM ], ], [Species.DUOSION]: [ @@ -9776,6 +9802,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 35, Moves.PAIN_SPLIT ], [ 40, Moves.PSYCHIC ], [ 46, Moves.SKILL_SWAP ], + [ 50, Moves.HEAL_BLOCK ], [ 52, Moves.FUTURE_SIGHT ], [ 58, Moves.WONDER_ROOM ], ], @@ -9794,6 +9821,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 35, Moves.PAIN_SPLIT ], [ 40, Moves.PSYCHIC ], [ 48, Moves.SKILL_SWAP ], + [ 54, Moves.HEAL_BLOCK ], [ 56, Moves.FUTURE_SIGHT ], [ 64, Moves.WONDER_ROOM ], ], @@ -10198,6 +10226,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.GROWL ], [ 1, Moves.CONFUSION ], [ 6, Moves.IMPRISON ], + [ 8, Moves.HEAL_BLOCK ], [ 12, Moves.TELEPORT ], [ 18, Moves.PSYBEAM ], [ 24, Moves.GUARD_SPLIT ], @@ -10215,6 +10244,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], @@ -10873,6 +10903,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 20, Moves.SHOCK_WAVE ], [ 25, Moves.AGILITY ], [ 30, Moves.CHARGE ], + [ 31, Moves.HEAL_BLOCK ], [ 35, Moves.VOLT_SWITCH ], [ 40, Moves.CRUNCH ], [ 45, Moves.DISCHARGE ], @@ -11822,7 +11853,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 66, Moves.HYPER_BEAM ], ], [Species.SYLVEON]: [ - [ 0, Moves.DISARMING_VOICE ], + [ 0, Moves.SPARKLY_SWIRL ], [ 1, Moves.TACKLE ], [ 1, Moves.TAKE_DOWN ], [ 1, Moves.DOUBLE_EDGE ], @@ -11835,16 +11866,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.COVET ], [ 1, Moves.COPYCAT ], [ 5, Moves.SAND_ATTACK ], - [ 10, Moves.QUICK_ATTACK ], - [ 15, Moves.BABY_DOLL_EYES ], - [ 20, Moves.SWIFT ], - [ 25, Moves.LIGHT_SCREEN ], - [ 30, Moves.DRAINING_KISS ], - [ 35, Moves.MISTY_TERRAIN ], - [ 40, Moves.SKILL_SWAP ], - [ 45, Moves.PSYCH_UP ], - [ 50, Moves.MOONBLAST ], - [ 55, Moves.LAST_RESORT ], + [ 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 ], @@ -11960,6 +11992,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 40, Moves.PLAY_ROUGH ], [ 44, Moves.MAGIC_ROOM ], [ 48, Moves.FOUL_PLAY ], + [ 50, Moves.HEAL_BLOCK ], [ 52, Moves.LAST_RESORT ], ], [Species.PHANTUMP]: [ @@ -13033,6 +13066,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 45, Moves.IRON_HEAD ], [ 50, Moves.TAKE_DOWN ], [ 55, Moves.DOUBLE_EDGE ], + [ 60, Moves.HEAL_BLOCK ], ], [Species.SILVALLY]: [ [ 0, Moves.MULTI_ATTACK ], @@ -13047,6 +13081,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 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 ], @@ -17237,6 +17272,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { ], [Species.ALOLA_RAICHU]: [ [ 0, Moves.PSYCHIC ], + [ 0, Moves.ZIPPY_ZAP ], [ 1, Moves.TAIL_WHIP ], [ 1, Moves.GROWL ], [ 1, Moves.THUNDER_SHOCK ], @@ -17257,6 +17293,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = { [ 1, Moves.PLAY_NICE ], [ 1, Moves.NUZZLE ], [ 5, Moves.THUNDERBOLT ], + [ 50, Moves.PIKA_PAPOW ], ], [Species.ALOLA_SANDSHREW]: [ [ 1, Moves.SCRATCH ], diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index ceeca373b..7f33d9ec7 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -138,9 +138,9 @@ export abstract class PokemonSpeciesForm { this.genderDiffs = genderDiffs; } - getRootSpeciesId(): Species { + getRootSpeciesId(forStarter: boolean = false): Species { let ret = this.speciesId; - while (pokemonPrevolutions.hasOwnProperty(ret)) + while (pokemonPrevolutions.hasOwnProperty(ret) && (!forStarter || !speciesStarters.hasOwnProperty(ret))) ret = pokemonPrevolutions[ret]; return ret; } @@ -367,8 +367,8 @@ export abstract class PokemonSpeciesForm { loadAssets(scene: BattleScene, female: boolean, formIndex?: integer, shiny?: boolean, variant?: Variant, startLoad?: boolean): Promise { return new Promise(resolve => { const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant); - scene.load.audio(this.getCryKey(formIndex), `audio/cry/${this.getCryKey(formIndex)}.m4a`); scene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant)); + scene.load.audio(this.getCryKey(formIndex), `audio/cry/${this.getCryKey(formIndex)}.m4a`); scene.load.once(Phaser.Loader.Events.COMPLETE, () => { const originalWarn = console.warn; // Ignore warnings for missing frames, because there will be a lot @@ -476,7 +476,7 @@ export abstract class PokemonSpeciesForm { export default class PokemonSpecies extends PokemonSpeciesForm implements Localizable { public name: string; - public pseudoLegendary: boolean; + public subLegendary: boolean; public legendary: boolean; public mythical: boolean; public species: string; @@ -486,7 +486,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali public canChangeForm: boolean; public forms: PokemonForm[]; - constructor(id: Species, generation: integer, pseudoLegendary: boolean, legendary: boolean, mythical: boolean, species: string, + constructor(id: Species, generation: integer, subLegendary: boolean, legendary: boolean, mythical: boolean, species: string, type1: Type, type2: Type, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, baseTotal: integer, baseHp: integer, baseAtk: integer, baseDef: integer, baseSpatk: integer, baseSpdef: integer, baseSpd: integer, catchRate: integer, baseFriendship: integer, baseExp: integer, growthRate: GrowthRate, malePercent: number, @@ -496,7 +496,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali this.speciesId = id; this.formIndex = 0; this.generation = generation; - this.pseudoLegendary = pseudoLegendary; + this.subLegendary = subLegendary; this.legendary = legendary; this.mythical = mythical; this.species = species; @@ -712,14 +712,14 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali getCompatibleFusionSpeciesFilter(): PokemonSpeciesFilter { const hasEvolution = pokemonEvolutions.hasOwnProperty(this.speciesId); const hasPrevolution = pokemonPrevolutions.hasOwnProperty(this.speciesId); - const pseudoLegendary = this.pseudoLegendary; + const pseudoLegendary = this.subLegendary; const legendary = this.legendary; const mythical = this.mythical; return species => { return (pseudoLegendary || legendary || mythical || (pokemonEvolutions.hasOwnProperty(species.speciesId) === hasEvolution && pokemonPrevolutions.hasOwnProperty(species.speciesId) === hasPrevolution)) - && species.pseudoLegendary === pseudoLegendary + && species.subLegendary === pseudoLegendary && species.legendary === legendary && species.mythical === mythical && (this.isTrainerForbidden() || !species.isTrainerForbidden()); @@ -1710,17 +1710,17 @@ export function initSpecies() { new PokemonSpecies(Species.VIRIZION, 5, true, false, false, "Grassland Pokémon", Type.GRASS, Type.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", Type.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", Type.FLYING, null, 1.5, 63, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290), - new PokemonForm("Therian Forme", "therian", Type.FLYING, null, 1.4, 63, Abilities.REGENERATOR, Abilities.NONE, Abilities.NONE, 580, 79, 100, 80, 110, 90, 121, 3, 90, 290), + new PokemonForm("Therian Forme", "therian", Type.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", Type.ELECTRIC, Type.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", Type.ELECTRIC, Type.FLYING, 1.5, 61, Abilities.PRANKSTER, Abilities.NONE, Abilities.DEFIANT, 580, 79, 115, 70, 125, 80, 111, 3, 90, 290), - new PokemonForm("Therian Forme", "therian", Type.ELECTRIC, Type.FLYING, 3, 61, Abilities.VOLT_ABSORB, Abilities.NONE, Abilities.NONE, 580, 79, 105, 70, 145, 80, 101, 3, 90, 290), + new PokemonForm("Therian Forme", "therian", Type.ELECTRIC, Type.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", Type.DRAGON, Type.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", Type.DRAGON, Type.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", Type.GROUND, Type.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", Type.GROUND, Type.FLYING, 1.5, 68, Abilities.SAND_FORCE, Abilities.NONE, Abilities.SHEER_FORCE, 600, 89, 125, 90, 115, 80, 101, 3, 90, 300), - new PokemonForm("Therian Forme", "therian", Type.GROUND, Type.FLYING, 1.3, 68, Abilities.INTIMIDATE, Abilities.NONE, Abilities.NONE, 600, 89, 145, 90, 105, 80, 91, 3, 90, 300), + new PokemonForm("Therian Forme", "therian", Type.GROUND, Type.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", Type.DRAGON, Type.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", "", Type.DRAGON, Type.ICE, 3, 325, Abilities.PRESSURE, Abilities.NONE, Abilities.NONE, 660, 125, 130, 90, 130, 90, 95, 3, 0, 330), @@ -1748,12 +1748,18 @@ export function initSpecies() { new PokemonSpecies(Species.FENNEKIN, 6, false, false, false, "Fox Pokémon", Type.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", Type.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", Type.FIRE, Type.PSYCHIC, 1.5, 39, Abilities.BLAZE, Abilities.NONE, Abilities.MAGICIAN, 534, 75, 69, 72, 114, 100, 104, 45, 70, 240, GrowthRate.MEDIUM_SLOW, 87.5, false), - new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", Type.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), - new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", Type.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), + new PokemonSpecies(Species.FROAKIE, 6, false, false, false, "Bubble Frog Pokémon", Type.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", "", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63), + new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.3, 7, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 314, 41, 56, 40, 62, 44, 71, 45, 70, 63, false, ""), + ), + new PokemonSpecies(Species.FROGADIER, 6, false, false, false, "Bubble Frog Pokémon", Type.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", "", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142), + new PokemonForm("Battle Bond", "battle-bond", Type.WATER, null, 0.6, 10.9, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 405, 54, 63, 52, 83, 56, 97, 45, 70, 142, false, ""), + ), new PokemonSpecies(Species.GRENINJA, 6, false, false, false, "Ninja Pokémon", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, GrowthRate.MEDIUM_SLOW, 87.5, false, false, new PokemonForm("Normal", "", Type.WATER, Type.DARK, 1.5, 40, Abilities.TORRENT, Abilities.NONE, Abilities.PROTEAN, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239), - new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.NONE, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, false, ""), - new PokemonForm("Ash", "ash", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.NONE, 640, 72, 145, 67, 153, 71, 132, 45, 70, 239), + new PokemonForm("Battle Bond", "battle-bond", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, false, ""), + new PokemonForm("Ash", "ash", Type.WATER, Type.DARK, 1.5, 40, Abilities.BATTLE_BOND, Abilities.NONE, Abilities.BATTLE_BOND, 640, 72, 145, 67, 153, 71, 132, 45, 70, 239), ), new PokemonSpecies(Species.BUNNELBY, 6, false, false, false, "Digging Pokémon", Type.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", Type.NORMAL, Type.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), @@ -1855,15 +1861,15 @@ export function initSpecies() { new PokemonSpecies(Species.PANGORO, 6, false, false, false, "Daunting Pokémon", Type.FIGHTING, Type.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", Type.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", "", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165), - new PokemonForm("Heart Trim", "heart", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Star Trim", "star", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Diamond Trim", "diamond", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Debutante Trim", "debutante", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Matron Trim", "matron", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Dandy Trim", "dandy", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("La Reine Trim", "la-reine", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Kabuki Trim", "kabuki", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), - new PokemonForm("Pharaoh Trim", "pharaoh", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false, ""), + new PokemonForm("Heart Trim", "heart", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Star Trim", "star", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Diamond Trim", "diamond", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Debutante Trim", "debutante", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Matron Trim", "matron", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Dandy Trim", "dandy", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("La Reine Trim", "la-reine", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Kabuki Trim", "kabuki", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), + new PokemonForm("Pharaoh Trim", "pharaoh", Type.NORMAL, null, 1.2, 28, Abilities.FUR_COAT, Abilities.NONE, Abilities.NONE, 472, 75, 80, 60, 65, 90, 102, 160, 70, 165, false), ), new PokemonSpecies(Species.ESPURR, 6, false, false, false, "Restraint Pokémon", Type.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", Type.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, @@ -1970,12 +1976,12 @@ export function initSpecies() { new PokemonSpecies(Species.RIBOMBEE, 7, false, false, false, "Bee Fly Pokémon", Type.BUG, Type.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", Type.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", "", Type.ROCK, null, 0.5, 9.2, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.STEADFAST, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56), - new PokemonForm("Own Tempo", "own-tempo", Type.ROCK, null, 0.5, 9.2, Abilities.OWN_TEMPO, Abilities.NONE, Abilities.NONE, 280, 45, 65, 40, 30, 40, 60, 190, 50, 56, false, ""), + new PokemonForm("Own Tempo", "own-tempo", Type.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, ""), ), new PokemonSpecies(Species.LYCANROC, 7, false, false, false, "Wolf Pokémon", Type.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", Type.ROCK, null, 0.8, 25, Abilities.KEEN_EYE, Abilities.SAND_RUSH, Abilities.STEADFAST, 487, 75, 115, 65, 55, 65, 112, 90, 50, 170, false, ""), new PokemonForm("Midnight Form", "midnight", Type.ROCK, null, 1.1, 25, Abilities.KEEN_EYE, Abilities.VITAL_SPIRIT, Abilities.NO_GUARD, 487, 85, 115, 75, 55, 75, 82, 90, 50, 170), - new PokemonForm("Dusk Form", "dusk", Type.ROCK, null, 0.8, 25, Abilities.TOUGH_CLAWS, Abilities.NONE, Abilities.NONE, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170), + new PokemonForm("Dusk Form", "dusk", Type.ROCK, null, 0.8, 25, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, Abilities.TOUGH_CLAWS, 487, 75, 117, 65, 55, 65, 110, 90, 50, 170), ), new PokemonSpecies(Species.WISHIWASHI, 7, false, false, false, "Small Fry Pokémon", Type.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", "", Type.WATER, null, 0.2, 0.3, Abilities.SCHOOLING, Abilities.NONE, Abilities.NONE, 175, 45, 20, 20, 25, 25, 40, 60, 50, 61), @@ -2209,14 +2215,14 @@ export function initSpecies() { new PokemonSpecies(Species.MILCERY, 8, false, false, false, "Cream Pokémon", Type.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", Type.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", Type.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, ""), - new PokemonForm("Ruby Cream", "ruby-cream", Type.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, ""), - new PokemonForm("Matcha Cream", "matcha-cream", Type.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, ""), - new PokemonForm("Mint Cream", "mint-cream", Type.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, ""), - new PokemonForm("Lemon Cream", "lemon-cream", Type.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, ""), - new PokemonForm("Salted Cream", "salted-cream", Type.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, ""), - new PokemonForm("Ruby Swirl", "ruby-swirl", Type.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, ""), - new PokemonForm("Caramel Swirl", "caramel-swirl", Type.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, ""), - new PokemonForm("Rainbow Swirl", "rainbow-swirl", Type.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, ""), + new PokemonForm("Ruby Cream", "ruby-cream", Type.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), + new PokemonForm("Matcha Cream", "matcha-cream", Type.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), + new PokemonForm("Mint Cream", "mint-cream", Type.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), + new PokemonForm("Lemon Cream", "lemon-cream", Type.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), + new PokemonForm("Salted Cream", "salted-cream", Type.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), + new PokemonForm("Ruby Swirl", "ruby-swirl", Type.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), + new PokemonForm("Caramel Swirl", "caramel-swirl", Type.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), + new PokemonForm("Rainbow Swirl", "rainbow-swirl", Type.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), new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 595, 80, 70, 85, 140, 150, 65, 100, 50, 173), ), new PokemonSpecies(Species.FALINKS, 8, false, false, false, "Formation Pokémon", Type.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), @@ -2295,7 +2301,7 @@ export function initSpecies() { new PokemonSpecies(Species.OVERQWIL, 8, false, false, false, "Pin Cluster Pokémon", Type.DARK, Type.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", Type.FAIRY, Type.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", Type.FAIRY, Type.FLYING, 1.6, 48, Abilities.CUTE_CHARM, Abilities.NONE, Abilities.CONTRARY, 580, 74, 115, 70, 135, 80, 106, 3, 50, 116), - new PokemonForm("Therian Forme", "therian", Type.FAIRY, Type.FLYING, 1.6, 48, Abilities.OVERCOAT, Abilities.NONE, Abilities.NONE, 580, 74, 115, 110, 135, 100, 46, 3, 50, 116), + new PokemonForm("Therian Forme", "therian", Type.FAIRY, Type.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", Type.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", Type.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), @@ -3150,6 +3156,30 @@ export const noStarterFormKeys: string[] = [ SpeciesFormKey.ETERNAMAX ].map(k => k.toString()); +export function getStarterValueFriendshipCap(value: integer): integer { + switch (value) { + case 1: + return 20; + case 2: + return 40; + case 3: + return 60; + case 4: + return 100; + case 5: + return 140; + case 6: + return 200; + case 7: + return 280; + case 8: + case 9: + return 450; + default: + return 600; + } +} + export const starterPassiveAbilities = { [Species.BULBASAUR]: Abilities.SOLAR_POWER, [Species.CHARMANDER]: Abilities.INTIMIDATE, @@ -3179,7 +3209,7 @@ export const starterPassiveAbilities = { [Species.BELLSPROUT]: Abilities.CORROSION, [Species.TENTACOOL]: Abilities.INNARDS_OUT, [Species.GEODUDE]: Abilities.ROCKY_PAYLOAD, - [Species.PONYTA]: Abilities.PIXILATE, + [Species.PONYTA]: Abilities.MAGIC_GUARD, [Species.SLOWPOKE]: Abilities.UNAWARE, [Species.MAGNEMITE]: Abilities.MOTOR_DRIVE, [Species.FARFETCHD]: Abilities.PURE_POWER, @@ -3205,7 +3235,7 @@ export const starterPassiveAbilities = { [Species.SCYTHER]: Abilities.SPEED_BOOST, [Species.PINSIR]: Abilities.SAP_SIPPER, [Species.TAUROS]: Abilities.ROCK_HEAD, - [Species.MAGIKARP]: Abilities.BERSERK, + [Species.MAGIKARP]: Abilities.MULTISCALE, [Species.LAPRAS]: Abilities.LIQUID_VOICE, [Species.DITTO]: Abilities.GOOEY, [Species.EEVEE]: Abilities.PROTEAN, @@ -3219,16 +3249,16 @@ export const starterPassiveAbilities = { [Species.DRATINI]: Abilities.DELTA_STREAM, [Species.MEWTWO]: Abilities.NEUROFORCE, [Species.MEW]: Abilities.PROTEAN, - [Species.CHIKORITA]: Abilities.RIPEN, + [Species.CHIKORITA]: Abilities.THICK_FAT, [Species.CYNDAQUIL]: Abilities.TURBOBLAZE, [Species.TOTODILE]: Abilities.TOUGH_CLAWS, [Species.SENTRET]: Abilities.FLUFFY, [Species.HOOTHOOT]: Abilities.CURSED_BODY, - [Species.LEDYBA]: Abilities.SCREEN_CLEANER, + [Species.LEDYBA]: Abilities.PRANKSTER, [Species.SPINARAK]: Abilities.PRANKSTER, [Species.CHINCHOU]: Abilities.REGENERATOR, [Species.PICHU]: Abilities.TRANSISTOR, - [Species.CLEFFA]: Abilities.MISTY_SURGE, + [Species.CLEFFA]: Abilities.MAGIC_BOUNCE, [Species.IGGLYBUFF]: Abilities.SERENE_GRACE, [Species.TOGEPI]: Abilities.OPPORTUNIST, [Species.NATU]: Abilities.TINTED_LENS, @@ -3246,7 +3276,7 @@ export const starterPassiveAbilities = { [Species.DUNSPARCE]: Abilities.MARVEL_SCALE, [Species.GLIGAR]: Abilities.MERCILESS, [Species.SNUBBULL]: Abilities.BALL_FETCH, - [Species.QWILFISH]: Abilities.LIQUID_OOZE, + [Species.QWILFISH]: Abilities.TOXIC_DEBRIS, [Species.SHUCKLE]: Abilities.WELL_BAKED_BODY, [Species.HERACROSS]: Abilities.QUICK_FEET, [Species.SNEASEL]: Abilities.MOXIE, @@ -3262,7 +3292,7 @@ export const starterPassiveAbilities = { [Species.STANTLER]: Abilities.MAGIC_GUARD, [Species.SMEARGLE]: Abilities.QUICK_DRAW, [Species.TYROGUE]: Abilities.STAMINA, - [Species.SMOOCHUM]: Abilities.CUTE_CHARM, + [Species.SMOOCHUM]: Abilities.DAZZLING, [Species.ELEKID]: Abilities.IRON_FIST, [Species.MAGBY]: Abilities.CONTRARY, [Species.MILTANK]: Abilities.GLUTTONY, @@ -3270,10 +3300,10 @@ export const starterPassiveAbilities = { [Species.ENTEI]: Abilities.MOXIE, [Species.SUICUNE]: Abilities.UNAWARE, [Species.LARVITAR]: Abilities.SAND_FORCE, - [Species.LUGIA]: Abilities.STORM_DRAIN, + [Species.LUGIA]: Abilities.DELTA_STREAM, [Species.HO_OH]: Abilities.MAGIC_GUARD, [Species.CELEBI]: Abilities.GRASSY_SURGE, - [Species.TREECKO]: Abilities.GRASSY_SURGE, + [Species.TREECKO]: Abilities.TINTED_LENS, [Species.TORCHIC]: Abilities.RECKLESS, [Species.MUDKIP]: Abilities.REGENERATOR, [Species.POOCHYENA]: Abilities.STRONG_JAW, @@ -3290,7 +3320,7 @@ export const starterPassiveAbilities = { [Species.NINCADA]: Abilities.OVERCOAT, [Species.WHISMUR]: Abilities.PUNK_ROCK, [Species.MAKUHITA]: Abilities.STAMINA, - [Species.AZURILL]: Abilities.UNNERVE, + [Species.AZURILL]: Abilities.MISTY_SURGE, [Species.NOSEPASS]: Abilities.LEVITATE, [Species.SKITTY]: Abilities.SCRAPPY, [Species.SABLEYE]: Abilities.UNNERVE, @@ -3321,7 +3351,7 @@ export const starterPassiveAbilities = { [Species.BALTOY]: Abilities.OWN_TEMPO, [Species.LILEEP]: Abilities.WATER_ABSORB, [Species.ANORITH]: Abilities.WATER_ABSORB, - [Species.FEEBAS]: Abilities.PASTEL_VEIL, + [Species.FEEBAS]: Abilities.MAGIC_GUARD, [Species.CASTFORM]: Abilities.ADAPTABILITY, [Species.KECLEON]: Abilities.ADAPTABILITY, [Species.SHUPPET]: Abilities.MUMMY, @@ -3336,13 +3366,13 @@ export const starterPassiveAbilities = { [Species.LUVDISC]: Abilities.PICKUP, [Species.BAGON]: Abilities.GALE_WINGS, [Species.BELDUM]: Abilities.IRON_FIST, - [Species.REGIROCK]: Abilities.REGENERATOR, - [Species.REGICE]: Abilities.ICE_SCALES, - [Species.REGISTEEL]: Abilities.STEELY_SPIRIT, - [Species.LATIAS]: Abilities.SERENE_GRACE, - [Species.LATIOS]: Abilities.SERENE_GRACE, + [Species.REGIROCK]: Abilities.SAND_STREAM, + [Species.REGICE]: Abilities.SNOW_WARNING, + [Species.REGISTEEL]: Abilities.FILTER, + [Species.LATIAS]: Abilities.SOUL_HEART, + [Species.LATIOS]: Abilities.TINTED_LENS, [Species.KYOGRE]: Abilities.HYDRATION, - [Species.GROUDON]: Abilities.EARTH_EATER, + [Species.GROUDON]: Abilities.PROTOSYNTHESIS, [Species.RAYQUAZA]: Abilities.UNNERVE, [Species.JIRACHI]: Abilities.COMATOSE, [Species.DEOXYS]: Abilities.PROTEAN, @@ -3384,16 +3414,16 @@ export const starterPassiveAbilities = { [Species.MANTYKE]: Abilities.STORM_DRAIN, [Species.SNOVER]: Abilities.SNOW_CLOAK, [Species.ROTOM]: Abilities.HADRON_ENGINE, - [Species.UXIE]: Abilities.ILLUSION, + [Species.UXIE]: Abilities.UNAWARE, [Species.MESPRIT]: Abilities.MOODY, [Species.AZELF]: Abilities.NEUROFORCE, [Species.DIALGA]: Abilities.SPEED_BOOST, - [Species.PALKIA]: Abilities.MAGIC_BOUNCE, - [Species.HEATRAN]: Abilities.ROUGH_SKIN, + [Species.PALKIA]: Abilities.MULTISCALE, + [Species.HEATRAN]: Abilities.FILTER, [Species.REGIGIGAS]: Abilities.MINDS_EYE, - [Species.GIRATINA]: Abilities.SHADOW_TAG, + [Species.GIRATINA]: Abilities.SHADOW_SHIELD, [Species.CRESSELIA]: Abilities.MAGIC_BOUNCE, - [Species.PHIONE]: Abilities.SWIFT_SWIM, + [Species.PHIONE]: Abilities.SIMPLE, [Species.MANAPHY]: Abilities.SIMPLE, [Species.DARKRAI]: Abilities.UNNERVE, [Species.SHAYMIN]: Abilities.FLOWER_VEIL, @@ -3401,7 +3431,7 @@ export const starterPassiveAbilities = { [Species.VICTINI]: Abilities.SUPER_LUCK, [Species.SNIVY]: Abilities.MULTISCALE, [Species.TEPIG]: Abilities.ROCK_HEAD, - [Species.OSHAWOTT]: Abilities.MOLD_BREAKER, + [Species.OSHAWOTT]: Abilities.QUICK_DRAW, [Species.PATRAT]: Abilities.STAKEOUT, [Species.LILLIPUP]: Abilities.BALL_FETCH, [Species.PURRLOIN]: Abilities.DEFIANT, @@ -3414,14 +3444,14 @@ export const starterPassiveAbilities = { [Species.ROGGENROLA]: Abilities.SOLID_ROCK, [Species.WOOBAT]: Abilities.SOUL_HEART, [Species.DRILBUR]: Abilities.SAND_STREAM, - [Species.AUDINO]: Abilities.SERENE_GRACE, + [Species.AUDINO]: Abilities.FRIEND_GUARD, [Species.TIMBURR]: Abilities.STAMINA, [Species.TYMPOLE]: Abilities.MOODY, [Species.THROH]: Abilities.SIMPLE, [Species.SAWK]: Abilities.DEFIANT, [Species.SEWADDLE]: Abilities.SHARPNESS, [Species.VENIPEDE]: Abilities.INTIMIDATE, - [Species.COTTONEE]: Abilities.MISTY_SURGE, + [Species.COTTONEE]: Abilities.FLUFFY, [Species.PETILIL]: Abilities.DANCER, [Species.BASCULIN]: Abilities.OPPORTUNIST, [Species.SANDILE]: Abilities.STRONG_JAW, @@ -3430,7 +3460,7 @@ export const starterPassiveAbilities = { [Species.DWEBBLE]: Abilities.STAMINA, [Species.SCRAGGY]: Abilities.ROCK_HEAD, [Species.SIGILYPH]: Abilities.MAGICIAN, - [Species.YAMASK]: Abilities.GOOD_AS_GOLD, + [Species.YAMASK]: Abilities.PURIFYING_SALT, [Species.TIRTOUGA]: Abilities.SHELL_ARMOR, [Species.ARCHEN]: Abilities.ROCKY_PAYLOAD, [Species.TRUBBISH]: Abilities.GOOEY, @@ -3470,16 +3500,16 @@ export const starterPassiveAbilities = { [Species.LARVESTA]: Abilities.DROUGHT, [Species.COBALION]: Abilities.INTREPID_SWORD, [Species.TERRAKION]: Abilities.ROCKY_PAYLOAD, - [Species.VIRIZION]: Abilities.SYMBIOSIS, - [Species.TORNADUS]: Abilities.DELTA_STREAM, + [Species.VIRIZION]: Abilities.SHARPNESS, + [Species.TORNADUS]: Abilities.DRIZZLE, [Species.THUNDURUS]: Abilities.DRIZZLE, [Species.RESHIRAM]: Abilities.ORICHALCUM_PULSE, [Species.ZEKROM]: Abilities.HADRON_ENGINE, - [Species.LANDORUS]: Abilities.PRANKSTER, + [Species.LANDORUS]: Abilities.STORM_DRAIN, [Species.KYUREM]: Abilities.SNOW_WARNING, - [Species.KELDEO]: Abilities.SHARPNESS, - [Species.MELOETTA]: Abilities.PUNK_ROCK, - [Species.GENESECT]: Abilities.MEGA_LAUNCHER, + [Species.KELDEO]: Abilities.GRIM_NEIGH, + [Species.MELOETTA]: Abilities.MINDS_EYE, + [Species.GENESECT]: Abilities.REGENERATOR, [Species.CHESPIN]: Abilities.IRON_BARBS, [Species.FENNEKIN]: Abilities.MAGIC_BOUNCE, [Species.FROAKIE]: Abilities.ADAPTABILITY, @@ -3491,7 +3521,7 @@ export const starterPassiveAbilities = { [Species.SKIDDO]: Abilities.GRASSY_SURGE, [Species.PANCHAM]: Abilities.FLUFFY, [Species.FURFROU]: Abilities.BALL_FETCH, - [Species.ESPURR]: Abilities.PSYCHIC_SURGE, + [Species.ESPURR]: Abilities.FUR_COAT, [Species.HONEDGE]: Abilities.SHARPNESS, [Species.SPRITZEE]: Abilities.MISTY_SURGE, [Species.SWIRLIX]: Abilities.WELL_BAKED_BODY, @@ -3511,14 +3541,14 @@ export const starterPassiveAbilities = { [Species.PUMPKABOO]: Abilities.FLASH_FIRE, [Species.BERGMITE]: Abilities.MIRROR_ARMOR, [Species.NOIBAT]: Abilities.PUNK_ROCK, - [Species.XERNEAS]: Abilities.COMPETITIVE, - [Species.YVELTAL]: Abilities.DEFIANT, - [Species.ZYGARDE]: Abilities.REGENERATOR, - [Species.DIANCIE]: Abilities.QUEENLY_MAJESTY, - [Species.HOOPA]: Abilities.TRACE, + [Species.XERNEAS]: Abilities.MISTY_SURGE, + [Species.YVELTAL]: Abilities.SOUL_HEART, + [Species.ZYGARDE]: Abilities.HUGE_POWER, + [Species.DIANCIE]: Abilities.LEVITATE, + [Species.HOOPA]: Abilities.OPPORTUNIST, [Species.VOLCANION]: Abilities.FILTER, [Species.ROWLET]: Abilities.SNIPER, - [Species.LITTEN]: Abilities.PRANKSTER, + [Species.LITTEN]: Abilities.FLAME_BODY, [Species.POPPLIO]: Abilities.PUNK_ROCK, [Species.PIKIPEK]: Abilities.ANGER_POINT, [Species.YUNGOOS]: Abilities.HUGE_POWER, @@ -3547,39 +3577,39 @@ export const starterPassiveAbilities = { [Species.KOMALA]: Abilities.GUTS, [Species.TURTONATOR]: Abilities.ANGER_SHELL, [Species.TOGEDEMARU]: Abilities.STATIC, - [Species.MIMIKYU]: Abilities.CURSED_BODY, + [Species.MIMIKYU]: Abilities.TOUGH_CLAWS, [Species.BRUXISH]: Abilities.MULTISCALE, [Species.DRAMPA]: Abilities.FLASH_FIRE, [Species.DHELMISE]: Abilities.INFILTRATOR, [Species.JANGMO_O]: Abilities.DANCER, - [Species.TAPU_KOKO]: Abilities.GALVANIZE, - [Species.TAPU_LELE]: Abilities.BERSERK, - [Species.TAPU_BULU]: Abilities.FLOWER_VEIL, + [Species.TAPU_KOKO]: Abilities.TRANSISTOR, + [Species.TAPU_LELE]: Abilities.SHEER_FORCE, + [Species.TAPU_BULU]: Abilities.GRASS_PELT, [Species.TAPU_FINI]: Abilities.FAIRY_AURA, [Species.COSMOG]: Abilities.BEAST_BOOST, - [Species.NIHILEGO]: Abilities.POISON_PUPPETEER, + [Species.NIHILEGO]: Abilities.LEVITATE, [Species.BUZZWOLE]: Abilities.MOXIE, - [Species.PHEROMOSA]: Abilities.MOXIE, - [Species.XURKITREE]: Abilities.LIGHTNING_ROD, - [Species.CELESTEELA]: Abilities.CHLOROPHYLL, + [Species.PHEROMOSA]: Abilities.TINTED_LENS, + [Species.XURKITREE]: Abilities.TRANSISTOR, + [Species.CELESTEELA]: Abilities.HEATPROOF, [Species.KARTANA]: Abilities.SHARPNESS, - [Species.GUZZLORD]: Abilities.GLUTTONY, + [Species.GUZZLORD]: Abilities.INNARDS_OUT, [Species.NECROZMA]: Abilities.BEAST_BOOST, [Species.MAGEARNA]: Abilities.STEELY_SPIRIT, [Species.MARSHADOW]: Abilities.IRON_FIST, - [Species.POIPOLE]: Abilities.MERCILESS, - [Species.STAKATAKA]: Abilities.DAUNTLESS_SHIELD, + [Species.POIPOLE]: Abilities.SHEER_FORCE, + [Species.STAKATAKA]: Abilities.SOLID_ROCK, [Species.BLACEPHALON]: Abilities.MAGIC_GUARD, - [Species.ZERAORA]: Abilities.MOTOR_DRIVE, - [Species.MELTAN]: Abilities.FULL_METAL_BODY, + [Species.ZERAORA]: Abilities.TOUGH_CLAWS, + [Species.MELTAN]: Abilities.STEELY_SPIRIT, [Species.GROOKEY]: Abilities.GRASS_PELT, [Species.SCORBUNNY]: Abilities.RECKLESS, [Species.SOBBLE]: Abilities.SUPER_LUCK, [Species.SKWOVET]: Abilities.HONEY_GATHER, [Species.ROOKIDEE]: Abilities.IRON_BARBS, - [Species.BLIPBUG]: Abilities.TINTED_LENS, + [Species.BLIPBUG]: Abilities.PSYCHIC_SURGE, [Species.NICKIT]: Abilities.INTIMIDATE, - [Species.GOSSIFLEUR]: Abilities.STORM_DRAIN, + [Species.GOSSIFLEUR]: Abilities.GRASSY_SURGE, [Species.WOOLOO]: Abilities.ROCK_HEAD, [Species.CHEWTLE]: Abilities.ROCK_HEAD, [Species.YAMPER]: Abilities.STAKEOUT, @@ -3594,7 +3624,7 @@ export const starterPassiveAbilities = { [Species.SINISTEA]: Abilities.WATER_ABSORB, [Species.HATENNA]: Abilities.MAGIC_GUARD, [Species.IMPIDIMP]: Abilities.TANGLING_HAIR, - [Species.MILCERY]: Abilities.WELL_BAKED_BODY, + [Species.MILCERY]: Abilities.MISTY_SURGE, [Species.FALINKS]: Abilities.MOXIE, [Species.PINCURCHIN]: Abilities.IRON_BARBS, [Species.SNOM]: Abilities.SNOW_WARNING, @@ -3609,17 +3639,17 @@ export const starterPassiveAbilities = { [Species.ARCTOVISH]: Abilities.STRONG_JAW, [Species.DURALUDON]: Abilities.MEGA_LAUNCHER, [Species.DREEPY]: Abilities.PARENTAL_BOND, - [Species.ZACIAN]: Abilities.GUARD_DOG, - [Species.ZAMAZENTA]: Abilities.GUARD_DOG, + [Species.ZACIAN]: Abilities.UNNERVE, + [Species.ZAMAZENTA]: Abilities.STAMINA, [Species.ETERNATUS]: Abilities.SUPREME_OVERLORD, [Species.KUBFU]: Abilities.IRON_FIST, - [Species.ZARUDE]: Abilities.PRANKSTER, - [Species.REGIELEKI]: Abilities.LEVITATE, - [Species.REGIDRAGO]: Abilities.INTIMIDATE, + [Species.ZARUDE]: Abilities.GRASSY_SURGE, + [Species.REGIELEKI]: Abilities.ELECTRIC_SURGE, + [Species.REGIDRAGO]: Abilities.MULTISCALE, [Species.GLASTRIER]: Abilities.FILTER, - [Species.SPECTRIER]: Abilities.PERISH_BODY, + [Species.SPECTRIER]: Abilities.SHADOW_SHIELD, [Species.CALYREX]: Abilities.HARVEST, - [Species.ENAMORUS]: Abilities.PRANKSTER, + [Species.ENAMORUS]: Abilities.FAIRY_AURA, [Species.SPRIGATITO]: Abilities.MAGICIAN, [Species.FUECOCO]: Abilities.EARTH_EATER, [Species.QUAXLY]: Abilities.DANCER, @@ -3644,9 +3674,9 @@ export const starterPassiveAbilities = { [Species.RELLOR]: Abilities.MAGIC_GUARD, [Species.FLITTLE]: Abilities.COMPETITIVE, [Species.TINKATINK]: Abilities.HUGE_POWER, - [Species.WIGLETT]: Abilities.STORM_DRAIN, + [Species.WIGLETT]: Abilities.STURDY, [Species.BOMBIRDIER]: Abilities.UNAWARE, - [Species.FINIZEN]: Abilities.LIQUID_VOICE, + [Species.FINIZEN]: Abilities.IRON_FIST, [Species.VAROOM]: Abilities.SPEED_BOOST, [Species.CYCLIZAR]: Abilities.PROTEAN, [Species.ORTHWORM]: Abilities.HEATPROOF, @@ -3658,55 +3688,55 @@ export const starterPassiveAbilities = { [Species.DONDOZO]: Abilities.GLUTTONY, [Species.TATSUGIRI]: Abilities.WATER_BUBBLE, [Species.GREAT_TUSK]: Abilities.INTIMIDATE, - [Species.SCREAM_TAIL]: Abilities.PIXILATE, + [Species.SCREAM_TAIL]: Abilities.UNAWARE, [Species.BRUTE_BONNET]: Abilities.BEAST_BOOST, [Species.FLUTTER_MANE]: Abilities.DAZZLING, - [Species.SLITHER_WING]: Abilities.MOXIE, + [Species.SLITHER_WING]: Abilities.SCRAPPY, [Species.SANDY_SHOCKS]: Abilities.EARTH_EATER, - [Species.IRON_TREADS]: Abilities.BULLETPROOF, + [Species.IRON_TREADS]: Abilities.STEELY_SPIRIT, [Species.IRON_BUNDLE]: Abilities.SNOW_WARNING, [Species.IRON_HANDS]: Abilities.IRON_FIST, - [Species.IRON_JUGULIS]: Abilities.NO_GUARD, + [Species.IRON_JUGULIS]: Abilities.AERILATE, [Species.IRON_MOTH]: Abilities.LEVITATE, [Species.IRON_THORNS]: Abilities.SAND_STREAM, [Species.FRIGIBAX]: Abilities.THICK_FAT, [Species.GIMMIGHOUL]: Abilities.SUPER_LUCK, - [Species.WO_CHIEN]: Abilities.TRIAGE, - [Species.CHIEN_PAO]: Abilities.REFRIGERATE, + [Species.WO_CHIEN]: Abilities.GRASSY_SURGE, + [Species.CHIEN_PAO]: Abilities.INTREPID_SWORD, [Species.TING_LU]: Abilities.STAMINA, - [Species.CHI_YU]: Abilities.BLAZE, - [Species.ROARING_MOON]: Abilities.AERILATE, + [Species.CHI_YU]: Abilities.DROUGHT, + [Species.ROARING_MOON]: Abilities.TOUGH_CLAWS, [Species.IRON_VALIANT]: Abilities.DOWNLOAD, [Species.KORAIDON]: Abilities.PROTOSYNTHESIS, [Species.MIRAIDON]: Abilities.QUARK_DRIVE, [Species.WALKING_WAKE]: Abilities.BEAST_BOOST, [Species.IRON_LEAVES]: Abilities.SHARPNESS, [Species.POLTCHAGEIST]: Abilities.FLAME_BODY, - [Species.OKIDOGI]: Abilities.INTIMIDATE, - [Species.MUNKIDORI]: Abilities.PRANKSTER, - [Species.FEZANDIPITI]: Abilities.DAZZLING, + [Species.OKIDOGI]: Abilities.FUR_COAT, + [Species.MUNKIDORI]: Abilities.NEUROFORCE, + [Species.FEZANDIPITI]: Abilities.LEVITATE, [Species.OGERPON]: Abilities.OPPORTUNIST, [Species.GOUGING_FIRE]: Abilities.BEAST_BOOST, [Species.RAGING_BOLT]: Abilities.BEAST_BOOST, [Species.IRON_BOULDER]: Abilities.SHARPNESS, [Species.IRON_CROWN]: Abilities.SHARPNESS, - [Species.TERAPAGOS]: Abilities.PROTEAN, - [Species.PECHARUNT]: Abilities.CORROSION, + [Species.TERAPAGOS]: Abilities.REGENERATOR, + [Species.PECHARUNT]: Abilities.TOXIC_CHAIN, [Species.ALOLA_RATTATA]: Abilities.CHEEK_POUCH, [Species.ALOLA_SANDSHREW]: Abilities.ICE_BODY, [Species.ALOLA_VULPIX]: Abilities.ICE_BODY, - [Species.ALOLA_DIGLETT]: Abilities.CUTE_CHARM, + [Species.ALOLA_DIGLETT]: Abilities.STURDY, [Species.ALOLA_MEOWTH]: Abilities.UNNERVE, [Species.ALOLA_GEODUDE]: Abilities.ELECTROMORPHOSIS, [Species.ALOLA_GRIMER]: Abilities.MERCILESS, [Species.ETERNAL_FLOETTE]: Abilities.MAGIC_GUARD, [Species.GALAR_MEOWTH]: Abilities.SUPER_LUCK, - [Species.GALAR_PONYTA]: Abilities.MAGIC_GUARD, + [Species.GALAR_PONYTA]: Abilities.PIXILATE, [Species.GALAR_SLOWPOKE]: Abilities.POISON_TOUCH, [Species.GALAR_FARFETCHD]: Abilities.SUPER_LUCK, [Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE, [Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS, - [Species.GALAR_MOLTRES]: Abilities.REGENERATOR, + [Species.GALAR_MOLTRES]: Abilities.DARK_AURA, [Species.GALAR_CORSOLA]: Abilities.SHADOW_TAG, [Species.GALAR_ZIGZAGOON]: Abilities.PICKPOCKET, [Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE, diff --git a/src/data/splash-messages.ts b/src/data/splash-messages.ts index 11629cf05..198ff07ce 100644 --- a/src/data/splash-messages.ts +++ b/src/data/splash-messages.ts @@ -33,6 +33,5 @@ splashMessages.push(...[ 'Also Try Emerald Rogue!', 'Also Try Radical Red!', 'Eevee Expo!', - 'YNOproject!', - 'Shh, don\'t tell Sam!' + 'YNOproject!' ]); \ No newline at end of file diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts index 4ae095265..c14d49a32 100644 --- a/src/data/status-effect.ts +++ b/src/data/status-effect.ts @@ -134,4 +134,44 @@ export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect): } return 1; +} + +/** +* Returns a random non-volatile StatusEffect +*/ +export function generateRandomStatusEffect(): StatusEffect { + return Utils.randIntRange(1, 6); +} + +/** +* Returns a random non-volatile StatusEffect between the two provided +* @param statusEffectA The first StatusEffect +* @param statusEffectA The second StatusEffect +*/ +export function getRandomStatusEffect(statusEffectA: StatusEffect, statusEffectB: StatusEffect): StatusEffect { + if (statusEffectA === StatusEffect.NONE || statusEffectA === StatusEffect.FAINT) { + return statusEffectB; + } + if (statusEffectB === StatusEffect.NONE || statusEffectB === StatusEffect.FAINT) { + return statusEffectA; + } + + return Utils.randIntRange(0, 2) ? statusEffectA : statusEffectB; +} + +/** +* Returns a random non-volatile StatusEffect between the two provided +* @param statusA The first Status +* @param statusB The second Status +*/ +export function getRandomStatus(statusA: Status, statusB: Status): Status { + if (statusA === undefined || statusA.effect === StatusEffect.NONE || statusA.effect === StatusEffect.FAINT) { + return statusB; + } + if (statusB === undefined || statusB.effect === StatusEffect.NONE || statusB.effect === StatusEffect.FAINT) { + return statusA; + } + + + return Utils.randIntRange(0, 2) ? statusA : statusB; } \ No newline at end of file diff --git a/src/data/terrain.ts b/src/data/terrain.ts index 48ffc1c68..c0328d98d 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -4,6 +4,7 @@ import { Type } from "./type"; import * as Utils from "../utils"; import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability"; import { ProtectAttr } from "./move"; +import { BattlerIndex } from "#app/battle.js"; export enum TerrainType { NONE, @@ -48,13 +49,13 @@ export class Terrain { return 1; } - isMoveTerrainCancelled(user: Pokemon, move: Move): boolean { + isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean { switch (this.terrainType) { case TerrainType.PSYCHIC: - if (!move.getAttrs(ProtectAttr).length){ + if (!move.getAttrs(ProtectAttr).length) { const priority = new Utils.IntegerHolder(move.priority); applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority); - return priority.value > 0; + return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0; } } diff --git a/src/data/tms.ts b/src/data/tms.ts index 71264d16c..eeccd9310 100644 --- a/src/data/tms.ts +++ b/src/data/tms.ts @@ -29550,7 +29550,6 @@ export const tmSpecies: TmSpecies = { Species.MURKROW, Species.SLOWKING, Species.MISDREAVUS, - Species.UNOWN, Species.GIRAFARIG, Species.PINECO, Species.FORRETRESS, @@ -51856,7 +51855,6 @@ export const tmSpecies: TmSpecies = { Species.MABOSSTIFF, Species.BOMBIRDIER, Species.WALKING_WAKE, - Species.PIKACHU, Species.ALOLA_SANDSHREW, Species.ALOLA_SANDSLASH, Species.ALOLA_DIGLETT, @@ -60030,6 +60028,7 @@ export const tmSpecies: TmSpecies = { Species.SHARPEDO, Species.SEVIPER, Species.SALAMENCE, + Species.METAGROSS, Species.SHINX, Species.LUXIO, Species.LUXRAY, @@ -62012,21 +62011,49 @@ export const tmSpecies: TmSpecies = { Species.ALOLA_MAROWAK, ], [Moves.TERA_BLAST]: [ + 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, @@ -62042,16 +62069,31 @@ export const tmSpecies: TmSpecies = { 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, @@ -62059,20 +62101,52 @@ export const tmSpecies: TmSpecies = { 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, @@ -62082,21 +62156,37 @@ export const tmSpecies: TmSpecies = { 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, @@ -62120,8 +62210,12 @@ export const tmSpecies: TmSpecies = { Species.FORRETRESS, Species.DUNSPARCE, Species.GLIGAR, + Species.STEELIX, + Species.SNUBBULL, + Species.GRANBULL, Species.QWILFISH, Species.SCIZOR, + Species.SHUCKLE, Species.HERACROSS, Species.SNEASEL, Species.TEDDIURSA, @@ -62130,24 +62224,58 @@ export const tmSpecies: TmSpecies = { 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, @@ -62160,49 +62288,101 @@ export const tmSpecies: TmSpecies = { 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, @@ -62215,30 +62395,49 @@ export const tmSpecies: TmSpecies = { 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, @@ -62248,19 +62447,30 @@ export const tmSpecies: TmSpecies = { 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, @@ -62272,39 +62482,127 @@ export const tmSpecies: TmSpecies = { 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, @@ -62314,23 +62612,40 @@ export const tmSpecies: TmSpecies = { 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, @@ -62345,6 +62660,8 @@ export const tmSpecies: TmSpecies = { 'battle-bond', 'ash', ], + Species.BUNNELBY, + Species.DIGGERSBY, Species.FLETCHLING, Species.FLETCHINDER, Species.TALONFLAME, @@ -62354,14 +62671,43 @@ export const tmSpecies: TmSpecies = { Species.LITLEO, Species.PYROAR, Species.FLABEBE, - Species.FLOETTE, + [ + Species.FLOETTE, + 'red', + 'yellow', + 'orange', + 'blue', + 'white', + ], 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, @@ -62372,16 +62718,30 @@ export const tmSpecies: TmSpecies = { 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, @@ -62394,28 +62754,84 @@ export const tmSpecies: TmSpecies = { 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.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, @@ -62596,21 +63012,6 @@ export const tmSpecies: TmSpecies = { Species.MUNKIDORI, Species.FEZANDIPITI, Species.OGERPON, - 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.ETERNAL_FLOETTE, Species.GALAR_MEOWTH, Species.GALAR_SLOWPOKE, Species.GALAR_SLOWBRO, diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 044bd4ec8..36d76edcf 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -212,7 +212,7 @@ export class TrainerConfig { this.battleBgm = 'battle_trainer'; this.victoryBgm = 'victory_trainer'; this.partyTemplates = [ trainerPartyTemplates.TWO_AVG ]; - this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.pseudoLegendary && !species.mythical)) && !species.isTrainerForbidden(); + this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden(); } getKey(): string { @@ -509,7 +509,7 @@ function getRandomPartyMemberFunc(speciesPool: Species[], trainerSlot: TrainerSl function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilter, trainerSlot: TrainerSlot = TrainerSlot.TRAINER, allowLegendaries?: boolean, postProcess?: (EnemyPokemon: EnemyPokemon) => void): PartyMemberFunc { const originalSpeciesFilter = speciesFilter; - speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.pseudoLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species); + speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species); return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => { const ret = scene.addEnemyPokemon(getPokemonSpecies(scene.randomSpecies(scene.currentBattle.waveIndex, level, false, speciesFilter).getTrainerSpeciesForLevel(level, true, strength)), level, trainerSlot, undefined, undefined, postProcess); return ret; diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index a1c83af07..348976eae 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -97,7 +97,7 @@ export const trainerNamePools = { [TrainerType.MAID]: ["Belinda","Sophie","Emily","Elena","Clare","Alica","Tanya","Tammy"], [TrainerType.MUSICIAN]: ["Boris","Preston","Charles","Clyde","Vincent","Dalton","Kirk","Shawn","Fabian","Fernando","Joseph","Marcos","Arturo","Jerry","Lonnie","Tony"], [TrainerType.NURSERY_AIDE]: ["Autumn","Briana","Leah","Miho","Ethel","Hollie","Ilse","June","Kimya","Rosalyn"], - [TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Sheriff","Raymond"], + [TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Raymond"], [TrainerType.PARASOL_LADY]: ["Angelica","Clarissa","Madeline","Akari","Annabell","Kayley","Rachel","Alexa","Sabrina","April","Gwyneth","Laura","Lumi","Mariah","Melita","Nicole","Tihana","Ingrid","Tyra"], [TrainerType.PILOT]: ["Chase","Leonard","Ted","Elron","Ewing","Flynn","Winslow"], [TrainerType.POKEFAN]: [["Alex","Allan","Brandon","Carter","Colin","Derek","Jeremy","Joshua","Rex","Robert","Trevor","William","Colton","Miguel","Francisco","Kaleb","Leonard","Boone","Elliot","Jude","Norbert","Corey","Gabe","Baxter"],["Beverly","Georgia","Jaime","Ruth","Isabel","Marissa","Vanessa","Annika","Bethany","Kimberly","Meredith","Rebekah","Eleanor","Darcy","Lydia","Sachiko","Abigail","Agnes","Lydie","Roisin","Tara","Carmen","Janet"]], @@ -106,7 +106,7 @@ export const trainerNamePools = { [TrainerType.RANGER]: [["Carlos","Jackson","Sebastian","Gav","Lorenzo","Logan","Nicolas","Trenton","Deshawn","Dwayne","Jeffery","Kyler","Taylor","Alain","Claude","Crofton","Forrest","Harry","Jaden","Keith","Lewis","Miguel","Pedro","Ralph","Richard","Bret","Daryl","Eddie","Johan","Leaf","Louis","Maxwell","Parker","Rick","Steve","Bjorn","Chaise","Dean","Lee","Maurice","Nash","Ralf","Reed","Shinobu","Silas"],["Catherine","Jenna","Sophia","Merdith","Nora","Beth","Chelsea","Katelyn","Madeline","Allison","Ashlee","Felicia","Krista","Annie","Audra","Brenda","Chloris","Eliza","Heidi","Irene","Mary","Mylene","Shanti","Shelly","Thalia","Anja","Briana","Dianna","Elaine","Elle","Hillary","Katie","Lena","Lois","Malory","Melita","Mikiko","Naoko","Serenity","Ambre","Brooke","Clementine","Melina","Petra","Twiggy"]], [TrainerType.RICH]: [["Alfred","Edward","Gregory","Preston","Thomas","Tucker","Walter","Clifford","Everett","Micah","Nate","Pierre","Terrance","Arthur","Brooks","Emanuel","Lamar","Jeremy","Leonardo","Milton","Frederic","Renaud","Robert","Yan","Daniel","Sheldon","Stonewall","Gerald","Ronald","Smith","Stanley","Reginald","Orson","Wilco","Caden","Glenn"],["Rebecca","Reina","Cassandra","Emilia","Grace","Marian","Elizabeth","Kathleen","Sayuri","Caroline","Judy"]], [TrainerType.RICH_KID]: [["Garret","Winston","Dawson","Enrique","Jason","Roman","Trey","Liam","Anthony","Brad","Cody","Manuel","Martin","Pierce","Rolan","Keenan","Filbert","Antoin","Cyus","Diek","Dugo","Flitz","Jurek","Lond","Perd","Quint","Basto","Benit","Brot","Denc","Guyit","Marcon","Perc","Puros","Roex","Sainz","Symin","Tark","Venak"],["Anette","Brianna","Cindy","Colleen","Daphne","Elizabeth","Naomi","Sarah","Charlotte","Gillian","Jacki","Lady","Melissa","Celeste","Colette","Elizandra","Isabel","Lynette","Magnolia","Sophie","Lina","Dulcie","Auro","Brin","Caril","Eloos","Gwin","Illa","Kowly","Rima","Ristin","Vesey","Brena","Deasy","Denslon","Kylet","Nemi","Rene","Sanol","Stouner","Sturk","Talmen","Zoila"]], - [TrainerType.ROUGHNECK]: ["Camron","Corey","Gabriel","Isaiah","Jamal","Koji","Luke","Paxton","Raul","Zeek","Kirby","Chance","Dave","Fletcher","Johnny","Reese","Joey","Roughneck","Ricky","Silvester","Martin"], + [TrainerType.ROUGHNECK]: ["Camron","Corey","Gabriel","Isaiah","Jamal","Koji","Luke","Paxton","Raul","Zeek","Kirby","Chance","Dave","Fletcher","Johnny","Reese","Joey","Ricky","Silvester","Martin"], [TrainerType.SCIENTIST]: [["Jed","Marc","Mitch","Rich","Ross","Beau","Braydon","Connor","Ed","Ivan","Jerry","Jose","Joshua","Parker","Rodney","Taylor","Ted","Travis","Zackery","Darrius","Emilio","Fredrick","Shaun","Stefano","Travon","Daniel","Garett","Gregg","Linden","Lowell","Trenton","Dudley","Luke","Markus","Nathan","Orville","Randall","Ron","Ronald","Simon","Steve","William","Franklin","Clarke","Jacques","Terrance","Ernst","Justus","Ikaika","Jayson","Kyle","Reid","Tyrone","Adam","Albert","Alphonse","Cory","Donnie","Elton","Francis","Gordon","Herbert","Humphrey","Jordan","Julian","Keaton","Levi","Melvin","Murray","West","Craig","Coren","Dubik","Kotan","Lethco","Mante","Mort","Myron","Odlow","Ribek","Roeck","Vogi","Vonder","Zogo","Doimo","Doton","Durel","Hildon","Kukla","Messa","Nanot","Platen","Raburn","Reman","Acrod","Coffy","Elrok","Foss","Hardig","Hombol","Hospel","Kaller","Klots","Krilok","Limar","Loket","Mesak","Morbit","Newin","Orill","Tabor","Tekot"],["Blythe","Chan","Kathrine","Marie","Maria","Naoko","Samantha","Satomi","Shannon","Athena","Caroline","Lumi","Lumina","Marissa","Sonia"]], [TrainerType.SMASHER]: ["Aspen","Elena","Mari","Amy","Lizzy"], [TrainerType.SNOW_WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]], diff --git a/src/data/type.ts b/src/data/type.ts index 14f9f932a..35c56aecd 100644 --- a/src/data/type.ts +++ b/src/data/type.ts @@ -543,4 +543,4 @@ export function getTypeRgb(type: Type): [ integer, integer, integer ] { default: return [ 0, 0, 0 ]; } -} \ No newline at end of file +} diff --git a/src/egg-hatch-phase.ts b/src/egg-hatch-phase.ts index 19934ad6e..70f2d5f38 100644 --- a/src/egg-hatch-phase.ts +++ b/src/egg-hatch-phase.ts @@ -241,10 +241,12 @@ export class EggHatchPhase extends Phase { doReveal(): void { const isShiny = this.pokemon.isShiny(); - if (this.pokemon.species.mythical) - this.scene.validateAchv(achvs.HATCH_MYTHICAL); + if (this.pokemon.species.subLegendary) + this.scene.validateAchv(achvs.HATCH_SUB_LEGENDARY); if (this.pokemon.species.legendary) this.scene.validateAchv(achvs.HATCH_LEGENDARY); + if (this.pokemon.species.mythical) + this.scene.validateAchv(achvs.HATCH_MYTHICAL); if (isShiny) this.scene.validateAchv(achvs.HATCH_SHINY); this.eggContainer.setVisible(false); diff --git a/src/enums/buttons.ts b/src/enums/buttons.ts new file mode 100644 index 000000000..034c5a2af --- /dev/null +++ b/src/enums/buttons.ts @@ -0,0 +1,19 @@ +export enum Button { + UP, + DOWN, + LEFT, + RIGHT, + SUBMIT, + ACTION, + CANCEL, + MENU, + STATS, + CYCLE_SHINY, + CYCLE_FORM, + CYCLE_GENDER, + CYCLE_ABILITY, + CYCLE_NATURE, + CYCLE_VARIANT, + SPEED_UP, + SLOW_DOWN +} diff --git a/src/field/arena.ts b/src/field/arena.ts index 910d998d6..e8cc98c0a 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -18,8 +18,7 @@ import { TimeOfDay } from "../data/enums/time-of-day"; import { Terrain, TerrainType } from "../data/terrain"; import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability"; import Pokemon from "./pokemon"; - -const WEATHER_OVERRIDE = WeatherType.NONE; +import { WEATHER_OVERRIDE } from '../overrides'; export class Arena { public scene: BattleScene; @@ -107,7 +106,7 @@ export class Arena { ret = getPokemonSpecies(species); - if (ret.pseudoLegendary || ret.legendary || ret.mythical) { + if (ret.subLegendary || ret.legendary || ret.mythical) { switch (true) { case (ret.baseTotal >= 720): regen = level < 90; @@ -337,8 +336,8 @@ export class Arena { return this.weather && !this.weather.isEffectSuppressed(this.scene) && this.weather.isMoveWeatherCancelled(move); } - isMoveTerrainCancelled(user: Pokemon, move: Move) { - return this.terrain && this.terrain.isMoveTerrainCancelled(user, move); + isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move) { + return this.terrain && this.terrain.isMoveTerrainCancelled(user, targets, move); } getTerrainType() : TerrainType { @@ -493,7 +492,7 @@ export class Arena { } addTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, side: ArenaTagSide = ArenaTagSide.BOTH, targetIndex?: BattlerIndex): boolean { - const existingTag = this.getTag(tagType); + const existingTag = this.getTagOnSide(tagType, side); if (existingTag) { existingTag.onOverlap(this); return false; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index af97a4e65..2242b1ee6 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1,25 +1,25 @@ import Phaser from 'phaser'; -import BattleScene, { ABILITY_OVERRIDE, AnySound, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE } from '../battle-scene'; +import BattleScene, { AnySound } from '../battle-scene'; import { Variant, VariantSet, variantColorCache } from '#app/data/variant'; import { variantData } from '#app/data/variant'; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info'; import { Moves } from "../data/enums/moves"; -import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr } from "../data/move"; -import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, starterPassiveAbilities } from '../data/pokemon-species'; +import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr, CounterDamageAttr } from "../data/move"; +import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species'; import * as Utils from '../utils'; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type'; import { getLevelTotalExp } from '../data/exp'; import { Stat } from '../data/pokemon-stat'; -import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, PokemonMultiHitModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier, TerastallizeModifier } from '../modifier/modifier'; +import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonMultiHitModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier, TerastallizeModifier } from '../modifier/modifier'; import { PokeballType } from '../data/pokeball'; import { Gender } from '../data/gender'; import { initMoveAnim, loadMoveAnimAssets } from '../data/battle-anims'; -import { Status, StatusEffect } from '../data/status-effect'; +import { Status, StatusEffect, getRandomStatus } from '../data/status-effect'; import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from '../data/pokemon-evolutions'; import { reverseCompatibleTms, tmSpecies } from '../data/tms'; import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchSummonPhase } from '../phases'; import { BattleStat } from '../data/battle-stat'; -import { BattlerTag, BattlerTagLapseType, EncoreTag, HelpingHandTag, TypeBoostTag, getBattlerTag } from '../data/battler-tags'; +import { BattlerTag, BattlerTagLapseType, EncoreTag, HelpingHandTag, HighestStatBoostTag, TypeBoostTag, getBattlerTag } from '../data/battler-tags'; import { BattlerTagType } from "../data/enums/battler-tag-type"; import { Species } from '../data/enums/species'; import { WeatherType } from '../data/weather'; @@ -27,7 +27,7 @@ import { TempBattleStat } from '../data/temp-battle-stat'; import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag'; import { ArenaTagType } from "../data/enums/arena-tag-type"; import { Biome } from "../data/enums/biome"; -import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr } from '../data/ability'; +import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr } from '../data/ability'; import { Abilities } from "#app/data/enums/abilities"; import PokemonData from '../system/pokemon-data'; import Battle, { BattlerIndex } from '../battle'; @@ -37,12 +37,15 @@ import PartyUiHandler, { PartyOption, PartyUiMode } from '../ui/party-ui-handler import SoundFade from 'phaser3-rex-plugins/plugins/soundfade'; import { LevelMoves } from '../data/pokemon-level-moves'; import { DamageAchv, achvs } from '../system/achv'; -import { DexAttr, StarterMoveset } from '../system/game-data'; +import { DexAttr, StarterDataEntry, StarterMoveset } from '../system/game-data'; import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from '@material/material-color-utilities'; import { Nature, getNatureStatMultiplier } from '../data/nature'; import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from '../data/pokemon-forms'; import { TerrainType } from '../data/terrain'; import { TrainerSlot } from '../data/trainer-config'; +import { ABILITY_OVERRIDE, MOVE_OVERRIDE, MOVE_OVERRIDE_2, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_MOVE_OVERRIDE_2, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../overrides'; +import { BerryType } from '../data/berry'; +import i18next from '../plugins/i18n'; export enum FieldPosition { CENTER, @@ -75,6 +78,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public friendship: integer; public metLevel: integer; public metBiome: Biome | -1; + public luck: integer; public pauseEvolutions: boolean; public pokerus: boolean; @@ -84,6 +88,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { public fusionShiny: boolean; public fusionVariant: Variant; public fusionGender: Gender; + public fusionLuck: integer; private summonDataPrimer: PokemonSummonData; @@ -142,6 +147,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.status = dataSource.status; this.friendship = dataSource.friendship !== undefined ? dataSource.friendship : this.species.baseFriendship; this.metLevel = dataSource.metLevel || 5; + this.luck = dataSource.luck; this.metBiome = dataSource.metBiome; this.pauseEvolutions = dataSource.pauseEvolutions; this.pokerus = !!dataSource.pokerus; @@ -151,6 +157,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.fusionShiny = dataSource.fusionShiny; this.fusionVariant = dataSource.fusionVariant || 0; this.fusionGender = dataSource.fusionGender; + this.fusionLuck = dataSource.fusionLuck; } else { this.id = Utils.randSeedInt(4294967296); this.ivs = ivs || Utils.getIvsFromId(this.id); @@ -189,6 +196,8 @@ 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.generateName(); @@ -448,6 +457,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return 1; } + getHeldItems(): PokemonHeldItemModifier[] { + if (!this.scene) + return []; + return this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === this.id, this.isPlayer()) as PokemonHeldItemModifier[]; + } + updateScale(): void { this.setScale(this.getSpriteScale()); } @@ -574,13 +589,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { ret *= 1.5; break; case Stat.SPD: + // Check both the player and enemy to see if Tailwind should be multiplying the speed of the Pokemon + if ((this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)) + || (!this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.ENEMY))) + ret *= 2; + if (this.getTag(BattlerTagType.SLOW_START)) ret >>= 1; if (this.status && this.status.effect === StatusEffect.PARALYSIS) ret >>= 1; break; } - + + const highestStatBoost = this.findTag(t => t instanceof HighestStatBoostTag && (t as HighestStatBoostTag).stat === stat) as HighestStatBoostTag; + if (highestStatBoost) + ret *= highestStatBoost.multiplier; + return Math.floor(ret); } @@ -651,7 +675,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getHpRatio(precise: boolean = false): number { return precise ? this.hp / this.getMaxHp() - : ((this.hp / this.getMaxHp()) * 100) / 100; + : Math.round((this.hp / this.getMaxHp()) * 100) / 100; } generateGender(): void { @@ -686,6 +710,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return !this.isFusion() ? this.variant : Math.max(this.variant, this.fusionVariant) as Variant; } + getLuck(): integer { + return this.luck + (this.isFusion() ? this.fusionLuck : 0); + } + isFusion(): boolean { return !!this.fusionSpecies; } @@ -701,6 +729,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.moveset[0] = new PokemonMove(MOVE_OVERRIDE, Math.min(this.moveset[0].ppUsed, allMoves[MOVE_OVERRIDE].pp)); else if (OPP_MOVE_OVERRIDE && !this.isPlayer()) this.moveset[0] = new PokemonMove(OPP_MOVE_OVERRIDE, Math.min(this.moveset[0].ppUsed, allMoves[OPP_MOVE_OVERRIDE].pp)); + if (MOVE_OVERRIDE_2 && this.isPlayer()) + this.moveset[1] = new PokemonMove(MOVE_OVERRIDE_2, Math.min(this.moveset[1].ppUsed, allMoves[MOVE_OVERRIDE_2].pp)); + else if (OPP_MOVE_OVERRIDE_2 && !this.isPlayer()) + this.moveset[1] = new PokemonMove(OPP_MOVE_OVERRIDE_2, Math.min(this.moveset[1].ppUsed, allMoves[OPP_MOVE_OVERRIDE_2].pp)); + return ret; } @@ -745,9 +778,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { types.splice(flyingIndex, 1); } - if (!types.length) + if (!types.length) // become UNKNOWN if no types are present types.push(Type.UNKNOWN); + if (types.length > 1 && types.includes(Type.UNKNOWN)) { // remove UNKNOWN if other types are present + const index = types.indexOf(Type.UNKNOWN); + if (index !== -1) { + types.splice(index, 1); + } + } + return types; } @@ -847,7 +887,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getAttackMoveEffectiveness(source: Pokemon, move: PokemonMove): TypeDamageMultiplier { const typeless = !!move.getMove().getAttrs(TypelessAttr).length; - const typeMultiplier = new Utils.NumberHolder(this.getAttackTypeEffectiveness(move.getMove().type)); + const typeMultiplier = new Utils.NumberHolder(this.getAttackTypeEffectiveness(move.getMove().type, source)); const cancelled = new Utils.BooleanHolder(false); if (!typeless) applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, move, cancelled, typeMultiplier, true); @@ -856,11 +896,20 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return (!cancelled.value ? typeMultiplier.value : 0) as TypeDamageMultiplier; } - getAttackTypeEffectiveness(moveType: Type): TypeDamageMultiplier { + getAttackTypeEffectiveness(moveType: Type, source?: Pokemon): TypeDamageMultiplier { if (moveType === Type.STELLAR) return this.isTerastallized() ? 2 : 1; const types = this.getTypes(true, true); - let multiplier = getTypeDamageMultiplier(moveType, types[0]) * (types.length > 1 ? getTypeDamageMultiplier(moveType, types[1]) : 1) * (types.length > 2 ? getTypeDamageMultiplier(moveType, types[2]) : 1) as TypeDamageMultiplier; + + const ignorableImmunities = source?.getAbility()?.getAttrs(IgnoreTypeImmunityAbAttr) || []; + const cancelled = new Utils.BooleanHolder(false); + + let multiplier = types.map(defType => + ignorableImmunities.some(attr => attr.apply(source, false, cancelled, [moveType, defType])) + ? 1 + : getTypeDamageMultiplier(moveType, defType) + ).reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier; + // Handle strong winds lowering effectiveness of types super effective against pure flying if (this.scene.arena.weather?.weatherType === WeatherType.STRONG_WINDS && !this.scene.arena.weather.isEffectSuppressed(this.scene) && multiplier >= 2 && this.isOfType(Type.FLYING) && getTypeDamageMultiplier(moveType, Type.FLYING) === 2) multiplier /= 2; @@ -871,12 +920,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const types = this.getTypes(true); const enemyTypes = pokemon.getTypes(true, true); const outspeed = (this.isActive(true) ? this.getBattleStat(Stat.SPD, pokemon) : this.getStat(Stat.SPD)) <= pokemon.getBattleStat(Stat.SPD, this); - let atkScore = pokemon.getAttackTypeEffectiveness(types[0]) * (outspeed ? 1.25 : 1); - let defScore = 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[0]), 0.25); + let atkScore = pokemon.getAttackTypeEffectiveness(types[0], this) * (outspeed ? 1.25 : 1); + let defScore = 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[0], pokemon), 0.25); if (types.length > 1) - atkScore *= pokemon.getAttackTypeEffectiveness(types[1]); + atkScore *= pokemon.getAttackTypeEffectiveness(types[1], this); if (enemyTypes.length > 1) - defScore *= (1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1]), 0.25)); + defScore *= (1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1], pokemon), 0.25)); let hpDiffRatio = this.getHpRatio() + (1 - pokemon.getHpRatio()); if (outspeed) hpDiffRatio = Math.min(hpDiffRatio * 1.5, 1); @@ -1048,6 +1097,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } this.fusionFormIndex = this.scene.getSpeciesFormIndex(this.fusionSpecies, this.fusionGender, this.getNature(), true); + this.fusionLuck = this.luck; this.generateName(); } @@ -1057,7 +1107,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.fusionFormIndex = 0; this.fusionAbilityIndex = 0; this.fusionShiny = false; + this.fusionVariant = 0; this.fusionGender = 0; + this.fusionLuck = 0; this.generateName(); this.calculateStats(); @@ -1165,6 +1217,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return this.battleInfo.updateInfo(this, instant); } + toggleStats(visible: boolean): void { + this.battleInfo.toggleStats(visible); + } + addExp(exp: integer) { const maxExpLevel = this.scene.getMaxExpLevel(); const initialExp = this.exp; @@ -1222,7 +1278,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const cancelled = new Utils.BooleanHolder(false); const typeless = !!move.getAttrs(TypelessAttr).length; const typeMultiplier = new Utils.NumberHolder(!typeless && (moveCategory !== MoveCategory.STATUS || move.getAttrs(StatusMoveTypeImmunityAttr).find(attr => types.includes((attr as StatusMoveTypeImmunityAttr).immuneType))) - ? this.getAttackTypeEffectiveness(type) + ? this.getAttackTypeEffectiveness(type, source) : 1); applyMoveAttrs(VariableMoveTypeMultiplierAttr, source, this, move, typeMultiplier); if (typeless) @@ -1301,7 +1357,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } const sourceAtk = new Utils.IntegerHolder(source.getBattleStat(isPhysical ? Stat.ATK : Stat.SPATK, this, null, isCritical)); const targetDef = new Utils.IntegerHolder(this.getBattleStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, isCritical)); - const criticalMultiplier = isCritical ? 1.5 : 1; + const criticalMultiplier = new Utils.NumberHolder(isCritical ? 1.5 : 1); + applyAbAttrs(MultCritAbAttr, source, null, criticalMultiplier); const screenMultiplier = new Utils.NumberHolder(1); if (!isCritical) { this.scene.arena.applyTagsForSide(WeakenMoveScreenTag, this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, move.category, this.scene.currentBattle.double, screenMultiplier); @@ -1324,7 +1381,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyMoveAttrs(VariableDefAttr, source, this, move, targetDef); if (!isTypeImmune) { - damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier * screenMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier); + damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier * screenMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier.value); if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) { const burnDamageReductionCancelled = new Utils.BooleanHolder(false); applyAbAttrs(BypassBurnDamageReductionAbAttr, source, burnDamageReductionCancelled); @@ -1392,7 +1449,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { damage.value = this.damageAndUpdate(damage.value, result as DamageResult, isCritical, oneHitKo, oneHitKo); this.turnData.damageTaken += damage.value; if (isCritical) - this.scene.queueMessage('A critical hit!'); + this.scene.queueMessage(i18next.t('battle:hitResultCriticalHit')); this.scene.setPhaseQueueSplice(); if (source.isPlayer()) { this.scene.validateAchvs(DamageAchv, damage); @@ -1410,16 +1467,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (source.turnData.hitsLeft === 1) { switch (result) { case HitResult.SUPER_EFFECTIVE: - this.scene.queueMessage('It\'s super effective!'); + this.scene.queueMessage(i18next.t('battle:hitResultSuperEffective')); break; case HitResult.NOT_VERY_EFFECTIVE: - this.scene.queueMessage('It\'s not very effective…'); + this.scene.queueMessage(i18next.t('battle:hitResultNotVeryEffective')); break; case HitResult.NO_EFFECT: - this.scene.queueMessage(`It doesn\'t affect ${this.name}!`); + this.scene.queueMessage(i18next.t('battle:hitResultNoEffect', { pokemonName: this.name })); break; case HitResult.ONE_HIT_KO: - this.scene.queueMessage('It\'s a one-hit KO!'); + this.scene.queueMessage(i18next.t('battle:hitResultOneHitKO')); break; } } @@ -1436,7 +1493,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { defendingSidePlayField.forEach((p) => applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, battlerMove, cancelled, typeMultiplier)); } if (!typeMultiplier.value) - this.scene.queueMessage(`It doesn\'t affect ${this.name}!`); + this.scene.queueMessage(i18next.t('battle:hitResultNoEffect', { pokemonName: this.name })); result = cancelled.value || !typeMultiplier.value ? HitResult.NO_EFFECT : HitResult.STATUS; break; } @@ -1606,6 +1663,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.summonData.tags.push(tag); if (this instanceof PlayerPokemon && source.summonData.battleStats.find(bs => bs === 6)) this.scene.validateAchv(achvs.TRANSFER_MAX_BATTLE_STAT); + this.updateInfo(); } getMoveHistory(): TurnMove[] { @@ -1866,6 +1924,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyAbAttrs(ReduceStatusEffectDurationAbAttr, this, null, effect, statusCureTurn); this.setFrameRate(4); + + // If the user is invulnerable, lets remove their invulnerability when they fall asleep + const invulnerableTags = [ + BattlerTagType.UNDERGROUND, + BattlerTagType.UNDERWATER, + BattlerTagType.HIDDEN, + BattlerTagType.FLYING + ]; + + const tag = invulnerableTags.find((t) => this.getTag(t)); + + if (tag) { + this.removeTag(tag); + this.getMoveQueue().pop(); + } } this.status = new Status(effect, 0, statusCureTurn?.value); @@ -1906,6 +1979,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } this.summonDataPrimer = null; } + this.updateInfo(); } resetBattleData(): void { @@ -2099,7 +2173,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (variantColors) { const color = Utils.rgbaToInt([r, g, b, a]); if (variantColorSet.has(color)) { - console.log(color); const mappedPixel = variantColorSet.get(color); [ r, g, b, a ] = mappedPixel; } @@ -2335,6 +2408,37 @@ export class PlayerPokemon extends Pokemon { }, PartyUiHandler.FilterNonFainted); }); } + + addFriendship(friendship: integer): void { + const starterSpeciesId = this.species.getRootSpeciesId(); + const fusionStarterSpeciesId = this.isFusion() ? this.fusionSpecies.getRootSpeciesId() : 0; + const starterData = [ + this.scene.gameData.starterData[starterSpeciesId], + fusionStarterSpeciesId ? this.scene.gameData.starterData[fusionStarterSpeciesId] : null + ].filter(d => d); + const amount = new Utils.IntegerHolder(friendship); + const starterAmount = new Utils.IntegerHolder(Math.floor(friendship * (this.scene.gameMode.isClassic ? 2 : 1) / (fusionStarterSpeciesId ? 2 : 1))); + if (amount.value > 0) { + this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, this, amount); + this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, this, starterAmount); + + this.friendship = Math.min(this.friendship + amount.value, 255); + if (this.friendship === 255) + this.scene.validateAchv(achvs.MAX_FRIENDSHIP); + starterData.forEach((sd: StarterDataEntry, i: integer) => { + const speciesId = !i ? starterSpeciesId : fusionStarterSpeciesId as Species; + sd.friendship = (sd.friendship || 0) + starterAmount.value; + if (sd.friendship >= getStarterValueFriendshipCap(speciesStarters[speciesId])) { + this.scene.gameData.addStarterCandy(getPokemonSpecies(speciesId), 1); + sd.friendship = 0; + } + }); + } else { + this.friendship = Math.max(this.friendship + amount.value, 0); + for (let sd of starterData) + sd.friendship = Math.max((sd.friendship || 0) + starterAmount.value, 0); + } + } getPossibleEvolution(evolution: SpeciesFormEvolution): Promise { return new Promise(resolve => { @@ -2402,20 +2506,28 @@ export class PlayerPokemon extends Pokemon { private handleSpecialEvolutions(evolution: SpeciesFormEvolution) { const isFusion = evolution instanceof FusionSpeciesFormEvolution; - if ((!isFusion ? this.species : this.fusionSpecies).speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) { - const newEvolution = pokemonEvolutions[this.species.speciesId][1]; + + const evoSpecies = (!isFusion ? this.species : this.fusionSpecies) + if (evoSpecies.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) { + const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1]; + if (newEvolution.condition.predicate(this)) { const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature); newPokemon.natureOverride = this.natureOverride; + newPokemon.passive = this.passive; newPokemon.moveset = this.moveset.slice(); + newPokemon.moveset = this.copyMoveset(); + newPokemon.luck = this.luck; newPokemon.fusionSpecies = this.fusionSpecies; newPokemon.fusionFormIndex = this.fusionFormIndex; newPokemon.fusionAbilityIndex = this.fusionAbilityIndex; newPokemon.fusionShiny = this.fusionShiny; newPokemon.fusionVariant = this.fusionVariant; newPokemon.fusionGender = this.fusionGender; + newPokemon.fusionLuck = this.fusionLuck; + this.scene.getParty().push(newPokemon); - newPokemon.evolve(newEvolution); + newPokemon.evolve(!isFusion ? newEvolution : new FusionSpeciesFormEvolution(this.id, newEvolution)); const modifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === this.id, true) as PokemonHeldItemModifier[]; modifiers.forEach(m => { @@ -2465,20 +2577,42 @@ export class PlayerPokemon extends Pokemon { this.generateCompatibleTms(); } + /** + * Returns a Promise to fuse two PlayerPokemon together + * @param pokemon The PlayerPokemon to fuse to this one + */ fuse(pokemon: PlayerPokemon): Promise { return new Promise(resolve => { this.fusionSpecies = pokemon.species; this.fusionFormIndex = pokemon.formIndex; this.fusionAbilityIndex = pokemon.abilityIndex; this.fusionShiny = pokemon.shiny; - this.fusionVariant = pokemon.fusionVariant; + this.fusionVariant = pokemon.variant; this.fusionGender = pokemon.gender; + this.fusionLuck = pokemon.luck; this.scene.validateAchv(achvs.SPLICE); this.scene.gameData.gameStats.pokemonFused++; + // Store the average HP% that each Pokemon has + const newHpPercent = ((pokemon.hp / pokemon.stats[Stat.HP]) + (this.hp / this.stats[Stat.HP])) / 2; + this.generateName(); this.calculateStats(); + + // Set this Pokemon's HP to the average % of both fusion components + this.hp = Math.round(this.stats[Stat.HP] * newHpPercent); + if (!this.isFainted()) { + // If this Pokemon hasn't fainted, make sure the HP wasn't set over the new maximum + this.hp = Math.min(this.hp, this.stats[Stat.HP]); + this.status = getRandomStatus(this.status, pokemon.status); // Get a random valid status between the two + } + else if (!pokemon.isFainted()) { + // If this Pokemon fainted but the other hasn't, make sure the HP wasn't set to zero + this.hp = Math.max(this.hp, 1); + this.status = pokemon.status; // Inherit the other Pokemon's status + } + this.generateCompatibleTms(); this.updateInfo(true); const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon); @@ -2512,6 +2646,15 @@ export class PlayerPokemon extends Pokemon { this.updateFusionPalette(); }); } + + /** Returns a deep copy of this Pokemon's moveset array */ + copyMoveset(): PokemonMove[] { + let newMoveset = []; + this.moveset.forEach(move => + newMoveset.push(new PokemonMove(move.moveId, 0, move.ppUp, move.virtual))); + + return newMoveset; + } } export class EnemyPokemon extends Pokemon { @@ -2532,9 +2675,17 @@ export class EnemyPokemon extends Pokemon { this.generateAndPopulateMoveset(); this.trySetShiny(); - - if (this.shiny) + if (OPP_SHINY_OVERRIDE) { + this.shiny = true; + this.initShinySparkle(); + } + if (this.shiny) { this.variant = this.generateVariant(); + if (OPP_VARIANT_OVERRIDE) + this.variant = OPP_VARIANT_OVERRIDE; + } + + this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0); let prevolution: Species; let speciesId = species.speciesId; @@ -2642,9 +2793,13 @@ export class EnemyPokemon extends Pokemon { let targetScores: integer[] = []; for (let mt of moveTargets[move.id]) { + // Prevent a target score from being calculated when the target is whoever attacks the user + if (mt === BattlerIndex.ATTACKER) + break; + const target = this.scene.getField()[mt]; let targetScore = move.getUserBenefitScore(this, target, move) + move.getTargetBenefitScore(this, target, move) * (mt < BattlerIndex.ENEMY === this.isPlayer() ? 1 : -1); - if (move.name.endsWith(' (N)')) + if (move.name.endsWith(' (N)') || !move.applyConditions(this, target, move)) targetScore = -20; else if (move instanceof AttackMove) { const effectiveness = target.getAttackMoveEffectiveness(this, pokemonMove); @@ -2712,8 +2867,14 @@ export class EnemyPokemon extends Pokemon { return scoreA < scoreB ? 1 : scoreA > scoreB ? -1 : 0; }); - if (!sortedBenefitScores.length) + if (!sortedBenefitScores.length) { + // Set target to BattlerIndex.ATTACKER when using a counter move + // This is the same as when the player does so + if (!!move.findAttr(attr => attr instanceof CounterDamageAttr)) + return [BattlerIndex.ATTACKER]; + return []; + } let targetWeights = sortedBenefitScores.map(s => s[1]); const lowestWeight = targetWeights[targetWeights.length - 1]; @@ -2964,6 +3125,7 @@ export class PokemonSummonData { export class PokemonBattleData { public hitCount: integer = 0; public endured: boolean = false; + public berriesEaten: BerryType[] = []; } export class PokemonBattleSummonData { @@ -3026,7 +3188,7 @@ export class PokemonMove { isUsable(pokemon: Pokemon, ignorePp?: boolean): boolean { if (this.moveId && pokemon.summonData?.disabledMove === this.moveId) return false; - return ignorePp || this.ppUsed < this.getMovePp() || this.getMove().pp === -1; + return (ignorePp || this.ppUsed < this.getMovePp() || this.getMove().pp === -1) && !this.getMove().name.endsWith(' (N)'); } getMove(): Move { diff --git a/src/game-mode.ts b/src/game-mode.ts index 0ac3f0503..81db82425 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -1,10 +1,11 @@ import { fixedBattles } from "./battle"; -import BattleScene, { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from "./battle-scene"; +import BattleScene from "./battle-scene"; import { Biome } from "./data/enums/biome"; import { Species } from "./data/enums/species"; import PokemonSpecies, { allSpecies } from "./data/pokemon-species"; import { Arena } from "./field/arena"; import * as Utils from "./utils"; +import { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from './overrides'; export enum GameModes { CLASSIC, @@ -120,7 +121,7 @@ export class GameMode implements GameModeConfig { getOverrideSpecies(waveIndex: integer): PokemonSpecies { if (this.isDaily && this.isWaveFinal(waveIndex)) { - const allFinalBossSpecies = allSpecies.filter(s => (s.pseudoLegendary || s.legendary || s.mythical) + const allFinalBossSpecies = allSpecies.filter(s => (s.subLegendary || s.legendary || s.mythical) && s.baseTotal >= 600 && s.speciesId !== Species.ETERNATUS && s.speciesId !== Species.ARCEUS); return Utils.randSeedItem(allFinalBossSpecies); } diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts new file mode 100644 index 000000000..5f5615358 --- /dev/null +++ b/src/inputs-controller.ts @@ -0,0 +1,294 @@ +import Phaser, {Time} from "phaser"; +import * as Utils from "./utils"; +import {initTouchControls} from './touch-controls'; +import pad_generic from "./configs/pad_generic"; +import pad_unlicensedSNES from "./configs/pad_unlicensedSNES"; +import pad_xbox360 from "./configs/pad_xbox360"; +import pad_dualshock from "./configs/pad_dualshock"; +import {Button} from "./enums/buttons"; + +export interface GamepadMapping { + [key: string]: number; +} + +export interface GamepadConfig { + padID: string; + padType: string; + gamepadMapping: GamepadMapping; +} + +export interface ActionGamepadMapping { + [key: string]: Button; +} + +const repeatInputDelayMillis = 250; + +export class InputsController { + private buttonKeys: Phaser.Input.Keyboard.Key[][]; + private gamepads: Array = new Array(); + private scene: Phaser.Scene; + + // buttonLock ensures only a single movement key is firing repeated inputs + // (i.e. by holding down a button) at a time + private buttonLock: Button; + private buttonLock2: Button; + private interactions: Map> = new Map(); + private time: Time; + private player: Map = new Map(); + + constructor(scene: Phaser.Scene) { + this.scene = scene; + this.time = this.scene.time; + this.buttonKeys = []; + + for (const b of Utils.getEnumValues(Button)) { + this.interactions[b] = { + pressTime: false, + isPressed: false, + } + } + // We don't want the menu key to be repeated + delete this.interactions[Button.MENU]; + delete this.interactions[Button.STATS]; + this.init(); + } + + init(): void { + this.events = new Phaser.Events.EventEmitter(); + // Handle the game losing focus + this.scene.game.events.on(Phaser.Core.Events.BLUR, () => { + this.loseFocus() + }) + + if (typeof this.scene.input.gamepad !== 'undefined') { + this.scene.input.gamepad.on('connected', function (thisGamepad) { + this.refreshGamepads(); + this.setupGamepad(thisGamepad); + }, this); + + // Check to see if the gamepad has already been setup by the browser + this.scene.input.gamepad.refreshPads(); + if (this.scene.input.gamepad.total) { + this.refreshGamepads(); + for (const thisGamepad of this.gamepads) { + this.scene.input.gamepad.emit('connected', thisGamepad); + } + } + + this.scene.input.gamepad.on('down', this.gamepadButtonDown, this); + this.scene.input.gamepad.on('up', this.gamepadButtonUp, this); + } + + // Keyboard + this.setupKeyboardControls(); + } + + loseFocus(): void { + this.deactivatePressedKey(); + } + + update(): void { + // reversed to let the cancel button have a kinda priority on the action button + for (const b of Utils.getEnumValues(Button).reverse()) { + if (!this.interactions.hasOwnProperty(b)) continue; + if (this.repeatInputDurationJustPassed(b) && this.interactions[b].isPressed) { + this.events.emit('input_down', { + controller_type: 'repeated', + button: b, + }); + this.setLastProcessedMovementTime(b); + } + } + } + + setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void { + let gamepadID = thisGamepad.id.toLowerCase(); + const mappedPad = this.mapGamepad(gamepadID); + this.player['mapping'] = mappedPad.gamepadMapping; + } + + refreshGamepads(): void { + // Sometimes, gamepads are undefined. For some reason. + this.gamepads = this.scene.input.gamepad.gamepads.filter(function (el) { + return el != null; + }); + + for (const [index, thisGamepad] of this.gamepads.entries()) { + thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier + } + } + + getActionGamepadMapping(): ActionGamepadMapping { + const gamepadMapping = {}; + if (!this.player?.mapping) return gamepadMapping; + gamepadMapping[this.player.mapping.LC_N] = Button.UP; + gamepadMapping[this.player.mapping.LC_S] = Button.DOWN; + gamepadMapping[this.player.mapping.LC_W] = Button.LEFT; + gamepadMapping[this.player.mapping.LC_E] = Button.RIGHT; + gamepadMapping[this.player.mapping.TOUCH] = Button.SUBMIT; + gamepadMapping[this.player.mapping.RC_S] = this.scene.abSwapped ? Button.CANCEL : Button.ACTION; + gamepadMapping[this.player.mapping.RC_E] = this.scene.abSwapped ? Button.ACTION : Button.CANCEL; + gamepadMapping[this.player.mapping.SELECT] = Button.STATS; + gamepadMapping[this.player.mapping.START] = Button.MENU; + gamepadMapping[this.player.mapping.RB] = Button.CYCLE_SHINY; + gamepadMapping[this.player.mapping.LB] = Button.CYCLE_FORM; + gamepadMapping[this.player.mapping.LT] = Button.CYCLE_GENDER; + gamepadMapping[this.player.mapping.RT] = Button.CYCLE_ABILITY; + gamepadMapping[this.player.mapping.RC_W] = Button.CYCLE_NATURE; + gamepadMapping[this.player.mapping.RC_N] = Button.CYCLE_VARIANT; + gamepadMapping[this.player.mapping.LS] = Button.SPEED_UP; + gamepadMapping[this.player.mapping.RS] = Button.SLOW_DOWN; + + return gamepadMapping; + } + + gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { + if (!this.scene.gamepadSupport) return; + const actionMapping = this.getActionGamepadMapping(); + const buttonDown = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index]; + if (buttonDown !== undefined) { + this.events.emit('input_down', { + controller_type: 'gamepad', + button: buttonDown, + }); + this.setLastProcessedMovementTime(buttonDown); + } + } + + gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { + if (!this.scene.gamepadSupport) return; + const actionMapping = this.getActionGamepadMapping(); + const buttonUp = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index]; + if (buttonUp !== undefined) { + this.events.emit('input_up', { + controller_type: 'gamepad', + button: buttonUp, + }); + this.delLastProcessedMovementTime(buttonUp); + } + } + + setupKeyboardControls(): void { + const keyCodes = Phaser.Input.Keyboard.KeyCodes; + const keyConfig = { + [Button.UP]: [keyCodes.UP, keyCodes.W], + [Button.DOWN]: [keyCodes.DOWN, keyCodes.S], + [Button.LEFT]: [keyCodes.LEFT, keyCodes.A], + [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D], + [Button.SUBMIT]: [keyCodes.ENTER], + [Button.ACTION]: [keyCodes.SPACE, keyCodes.Z], + [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X], + [Button.MENU]: [keyCodes.ESC, keyCodes.M], + [Button.STATS]: [keyCodes.SHIFT, keyCodes.C], + [Button.CYCLE_SHINY]: [keyCodes.R], + [Button.CYCLE_FORM]: [keyCodes.F], + [Button.CYCLE_GENDER]: [keyCodes.G], + [Button.CYCLE_ABILITY]: [keyCodes.E], + [Button.CYCLE_NATURE]: [keyCodes.N], + [Button.CYCLE_VARIANT]: [keyCodes.V], + [Button.SPEED_UP]: [keyCodes.PLUS], + [Button.SLOW_DOWN]: [keyCodes.MINUS] + }; + const mobileKeyConfig = {}; + for (const b of Utils.getEnumValues(Button)) { + const keys: Phaser.Input.Keyboard.Key[] = []; + if (keyConfig.hasOwnProperty(b)) { + for (let k of keyConfig[b]) + keys.push(this.scene.input.keyboard.addKey(k, false)); + mobileKeyConfig[Button[b]] = keys[0]; + } + this.buttonKeys[b] = keys; + } + + initTouchControls(mobileKeyConfig); + this.listenInputKeyboard(); + } + + listenInputKeyboard(): void { + this.buttonKeys.forEach((row, index) => { + for (const key of row) { + key.on('down', () => { + this.events.emit('input_down', { + controller_type: 'keyboard', + button: index, + }); + this.setLastProcessedMovementTime(index); + }); + key.on('up', () => { + this.events.emit('input_up', { + controller_type: 'keyboard', + button: index, + }); + this.delLastProcessedMovementTime(index); + }); + } + }); + } + + mapGamepad(id: string): GamepadConfig { + id = id.toLowerCase(); + + if (id.includes('081f') && id.includes('e401')) { + return pad_unlicensedSNES; + } else if (id.includes('xbox') && id.includes('360')) { + return pad_xbox360; + } else if (id.includes('054c')) { + return pad_dualshock; + } + + return pad_generic; + } + + /** + * repeatInputDurationJustPassed returns true if @param button has been held down long + * enough to fire a repeated input. A button must claim the buttonLock before + * firing a repeated input - this is to prevent multiple buttons from firing repeatedly. + */ + repeatInputDurationJustPassed(button: Button): boolean { + if (!this.isButtonLocked(button)) return false; + if (this.time.now - this.interactions[button].pressTime >= repeatInputDelayMillis) { + return true; + } + } + + setLastProcessedMovementTime(button: Button): void { + if (!this.interactions.hasOwnProperty(button)) return; + this.setButtonLock(button); + this.interactions[button].pressTime = this.time.now; + this.interactions[button].isPressed = true; + } + + delLastProcessedMovementTime(button: Button): void { + if (!this.interactions.hasOwnProperty(button)) return; + this.releaseButtonLock(button); + this.interactions[button].pressTime = null; + this.interactions[button].isPressed = false; + } + + deactivatePressedKey(): void { + this.releaseButtonLock(this.buttonLock); + this.releaseButtonLock(this.buttonLock2); + for (const b of Utils.getEnumValues(Button)) { + if (!this.interactions.hasOwnProperty(b)) return; + this.interactions[b].pressTime = null; + this.interactions[b].isPressed = false; + } + } + + isButtonLocked(button: Button): boolean { + return (this.buttonLock === button || this.buttonLock2 === button); + } + + setButtonLock(button: Button): void { + if (this.buttonLock === button || this.buttonLock2 === button) return; + if (this.buttonLock === button) this.buttonLock2 = button; + else if (this.buttonLock2 === button) this.buttonLock = button; + else if(!!this.buttonLock) this.buttonLock2 = button; + else this.buttonLock = button; + } + + releaseButtonLock(button: Button): void { + if (this.buttonLock === button) this.buttonLock = null; + else if (this.buttonLock2 === button) this.buttonLock2 = null; + } +} \ No newline at end of file diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 2f37b900a..88e60fb9c 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -31,6 +31,8 @@ export class LoadingScene extends SceneBase { this.loadAtlas('bg', 'ui'); this.loadImage('command_fight_labels', 'ui'); this.loadAtlas('prompt', 'ui'); + this.loadImage('candy', 'ui'); + this.loadImage('candy_overlay', 'ui'); this.loadImage('cursor', 'ui'); this.loadImage('cursor_reverse', 'ui'); for (let wv of Utils.getEnumValues(WindowVariant)) { @@ -39,15 +41,21 @@ export class LoadingScene extends SceneBase { } this.loadAtlas('namebox', 'ui'); this.loadImage('pbinfo_player', 'ui'); + this.loadImage('pbinfo_player_stats', 'ui'); this.loadImage('pbinfo_player_mini', 'ui'); + this.loadImage('pbinfo_player_mini_stats', 'ui'); this.loadAtlas('pbinfo_player_type', 'ui'); this.loadAtlas('pbinfo_player_type1', 'ui'); this.loadAtlas('pbinfo_player_type2', 'ui'); this.loadImage('pbinfo_enemy_mini', 'ui'); + this.loadImage('pbinfo_enemy_mini_stats', 'ui'); this.loadImage('pbinfo_enemy_boss', 'ui'); + this.loadImage('pbinfo_enemy_boss_stats', 'ui'); this.loadAtlas('pbinfo_enemy_type', 'ui'); this.loadAtlas('pbinfo_enemy_type1', 'ui'); this.loadAtlas('pbinfo_enemy_type2', 'ui'); + this.loadAtlas('pbinfo_stat', 'ui'); + this.loadAtlas('pbinfo_stat_numbers', 'ui'); this.loadImage('overlay_lv', 'ui'); this.loadAtlas('numbers', 'ui'); this.loadAtlas('numbers_red', 'ui'); @@ -61,6 +69,7 @@ export class LoadingScene extends SceneBase { this.loadImage('achv_bar_2', 'ui'); this.loadImage('achv_bar_3', 'ui'); this.loadImage('achv_bar_4', 'ui'); + this.loadImage('achv_bar_5', 'ui'); this.loadImage('shiny_star', 'ui', 'shiny.png'); this.loadImage('shiny_star_1', 'ui', 'shiny_1.png'); this.loadImage('shiny_star_2', 'ui', 'shiny_2.png'); @@ -216,6 +225,7 @@ export class LoadingScene extends SceneBase { this.loadSe('sparkle'); this.loadSe('restore'); this.loadSe('shine'); + this.loadSe('shing'); this.loadSe('charge'); this.loadSe('beam'); this.loadSe('upgrade'); diff --git a/src/locales/de/battle.ts b/src/locales/de/battle.ts new file mode 100644 index 000000000..b48aa1129 --- /dev/null +++ b/src/locales/de/battle.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const battle: SimpleTranslationEntries = { + "bossAppeared": "{{bossName}} erscheint.", + "trainerAppeared": "{{trainerName}}\nmöchte kämpfen!", + "singleWildAppeared": "Ein wildes {{pokemonName}} erscheint!", + "multiWildAppeared": "Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!", + "playerComeBack": "Komm zurück, {{pokemonName}}!", + "trainerComeBack": "{{trainerName}} ruft {{pokemonName}} zurück!", + "playerGo": "Los! {{pokemonName}}!", + "trainerGo": "{{trainerName}} sendet {{pokemonName}} raus!", + "switchQuestion": "Willst du\n{{pokemonName}} auswechseln?", + "trainerDefeated": `You defeated\n{{trainerName}}!`, + "pokemonCaught": "{{pokemonName}} was caught!", + "pokemon": "Pokémon", + "sendOutPokemon": "Los! {{pokemonName}}!", + "hitResultCriticalHit": "A critical hit!", + "hitResultSuperEffective": "It's super effective!", + "hitResultNotVeryEffective": "It's not very effective…", + "hitResultNoEffect": "It doesn't affect {{pokemonName}}!", + "hitResultOneHitKO": "It's a one-hit KO!", + "attackFailed": "But it failed!", + "attackHitsCount": `Hit {{count}} time(s)!`, + "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!", + "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!", + "learnMove": "{{pokemonName}} learned\n{{moveName}}!", + "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.", + "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.", + "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?", + "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?", + "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.", + "learnMoveForgetQuestion": "Which move should be forgotten?", + "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.", + "levelCapUp": "Das Levellimit\nhat sich zu {{levelCap}} erhöht!", + "moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.", + "moveNoPP": "There's no PP left for\nthis move!", + "moveDisabled": "{{moveName}} ist deaktiviert!", + "noPokeballForce": "Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.", + "noPokeballTrainer": "Du kannst das Pokémon\neines anderen Trainers nicht fangen!", + "noPokeballMulti": "Du kannst erst einen Pokéball werden,\nwenn nur noch ein Pokémon übrig ist!", + "noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!", + "noEscapeForce": "Eine unsichtbare Kraft\nverhindert die Flucht.", + "noEscapeTrainer": "Du kannst nicht\naus einem Trainerkampf fliehen!", + "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nverhindert {{escapeVerb}}!", + "runAwaySuccess": "You got away safely!", + "runAwayCannotEscape": 'You can\'t escape!', + "escapeVerbSwitch": "auswechseln", + "escapeVerbFlee": "flucht", + "notDisabled": "{{moveName}} ist\nnicht mehr deaktiviert!", + "skipItemQuestion": "Are you sure you want to skip taking an item?", + "eggHatching": "Oh?", + "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?" +} as const; \ No newline at end of file diff --git a/src/locales/de/fight-ui-handler.ts b/src/locales/de/fight-ui-handler.ts new file mode 100644 index 000000000..1ce9e0317 --- /dev/null +++ b/src/locales/de/fight-ui-handler.ts @@ -0,0 +1,6 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const fightUiHandler: SimpleTranslationEntries = { + "pp": "PP", + "power": "POWER", +} as const; \ No newline at end of file diff --git a/src/locales/de/menu.ts b/src/locales/de/menu.ts index d70cd83c5..aa4604f9d 100644 --- a/src/locales/de/menu.ts +++ b/src/locales/de/menu.ts @@ -35,28 +35,12 @@ export const menu: SimpleTranslationEntries = { "boyOrGirl": "Bist du ein Junge oder ein Mädchen?", "boy": "Junge", "girl": "Mädchen", - "bossAppeared": "{{bossName}} erscheint.", - "trainerAppeared": "{{trainerName}}\nmöchte kämpfen!", - "singleWildAppeared": "Ein wildes {{pokemonName}} erscheint!", - "multiWildAppeared": "Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!", - "playerComeBack": "Komm zurück, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}} ruft {{pokemonName}} zurück!", - "playerGo": "Los! {{pokemonName}}!", - "trainerGo": "{{trainerName}} sendet {{pokemonName}} raus!", - "switchQuestion": "Willst du\n{{pokemonName}} auswechseln?", - "pokemon": "Pokémon", - "sendOutPokemon": "Los! {{pokemonName}}!", - "levelCapUp": "Das Levellimit\nhat sich zu {{levelCap}} erhöht!", - "moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.", - "moveDisabled": "{{moveName}} ist deaktiviert!", - "noPokeballForce": "Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.", - "noPokeballTrainer": "Du kannst das Pokémon\neines anderen Trainers nicht fangen!", - "noPokeballMulti": "Du kannst erst einen Pokéball werden,\nwenn nur noch ein Pokémon übrig ist!", - "noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!", - "noEscapeForce": "Eine unsichtbare Kraft\nverhindert die Flucht.", - "noEscapeTrainer": "Du kannst nicht\naus einem Trainerkampf fliehen!", - "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nverhindert {{escapeVerb}}!", - "escapeVerbSwitch": "auswechseln", - "escapeVerbFlee": "flucht", - "notDisabled": "{{moveName}} ist\nnicht mehr deaktiviert!", + "dailyRankings": "Daily Rankings", + "weeklyRankings": "Weekly Rankings", + "noRankings": "No Rankings", + "loading": "Loading…", + "playersOnline": "Players Online", + "empty":"Empty", + "yes":"Yes", + "no":"No", } as const; \ No newline at end of file diff --git a/src/locales/de/move.ts b/src/locales/de/move.ts index f0c1c623a..f39721b1d 100644 --- a/src/locales/de/move.ts +++ b/src/locales/de/move.ts @@ -2,44 +2,44 @@ import { MoveTranslationEntries } from "#app/plugins/i18n"; export const move: MoveTranslationEntries = { "pound": { - name: "Pound", - effect: "The target is physically pounded with a long tail, a foreleg, or the like." + name: "Klaps", + effect: "Ein Hieb mit den Vorderbeinen oder dem Schweif." }, "karateChop": { - name: "Karate Chop", - effect: "The target is attacked with a sharp chop. Critical hits land more easily." + name: "Karateschlag", + effect: "Gute Möglichkeit, einen Volltreffer zu landen." }, "doubleSlap": { - name: "Double Slap", - effect: "The target is slapped repeatedly, back and forth, two to five times in a row." + name: "Duplexhieb", + effect: "Trifft das Ziel zwei- bis fünfmal hintereinander mit einem Duplexhieb." }, "cometPunch": { - name: "Comet Punch", - effect: "The target is hit with a flurry of punches that strike two to five times in a row." + name: "Kometenhieb", + effect: "Trifft das Ziel zwei- bis fünfmal hintereinander mit kräftigen Hieben." }, "megaPunch": { - name: "Mega Punch", - effect: "The target is slugged by a punch thrown with muscle-packed power." + name: "Megahieb", + effect: "Ein unglaublich kräftiger Hieb." }, "payDay": { - name: "Pay Day", - effect: "Numerous coins are hurled at the target to inflict damage. Money is earned after the battle." + name: "Zahltag", + effect: "Das Ziel wird mit Münzen beworfen. Das Geld wird nach dem Kampf aufgesammelt." }, "firePunch": { - name: "Fire Punch", - effect: "The target is punched with a fiery fist. This may also leave the target with a burn." + name: "Feuerschlag", + effect: "Feuriger Schlag, der dem Ziel eventuell Verbrennungen zufügt." }, "icePunch": { - name: "Ice Punch", - effect: "The target is punched with an icy fist. This may also leave the target frozen." + name: "Eishieb", + effect: "Ein eisiger Schlag, der das Ziel eventuell einfriert." }, "thunderPunch": { - name: "Thunder Punch", - effect: "The target is punched with an electrified fist. This may also leave the target with paralysis." + name: "Donnerschlag", + effect: "Ein elektrischer Schlag, der das Ziel eventuell paralysiert." }, "scratch": { - name: "Scratch", - effect: "Hard, pointed, sharp claws rake the target to inflict damage." + name: "Kratzer", + effect: "Das Ziel wird mit scharfen Klauen zerkratzt." }, "viseGrip": { name: "Vise Grip", @@ -47,3263 +47,3263 @@ export const move: MoveTranslationEntries = { }, "guillotine": { name: "Guillotine", - effect: "A vicious, tearing attack with big pincers. The target faints instantly if this attack hits." + effect: "Kräftige Scheren-Attacke. Führt beim Ziel sofort zum K.O." }, "razorWind": { - name: "Razor Wind", - effect: "In this two-turn attack, blades of wind hit opposing Pokémon on the second turn. Critical hits land more easily." + name: "Klingensturm", + effect: "Eine Attacke, die über zwei Runden geht. Hohe Volltrefferquote." }, "swordsDance": { - name: "Swords Dance", - effect: "A frenetic dance to uplift the fighting spirit. This sharply raises the user's Attack stat." + name: "Schwerttanz", + effect: "Ein wilder Kampftanz, der den eigenen Angriffs-Wert stark erhöht." }, "cut": { - name: "Cut", - effect: "The target is cut with a scythe or claw." + name: "Zerschneider", + effect: "Ein Basisangriff mit Schere oder Klaue. Damit können kleine Bäume gefällt werden." }, "gust": { - name: "Gust", - effect: "A gust of wind is whipped up by wings and launched at the target to inflict damage." + name: "Windstoß", + effect: "Trifft das Ziel mit einem Windstoß durch einen Flügelschlag." }, "wingAttack": { - name: "Wing Attack", - effect: "The target is struck with large, imposing wings spread wide to inflict damage." + name: "Flügelschlag", + effect: "Trifft das Ziel mit ausgebreiteten Flügeln." }, "whirlwind": { - name: "Whirlwind", - effect: "The target is blown away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + name: "Wirbelwind", + effect: "Weht das Ziel weg und ersetzt es durch ein anderes Pokémon. In der Wildnis endet der Kampf." }, "fly": { - name: "Fly", - effect: "The user flies up into the sky and then strikes its target on the next turn." + name: "Fliegen", + effect: "Steigt in Runde 1 empor und trifft das Ziel in Runde 2." }, "bind": { - name: "Bind", - effect: "Things such as long bodies or tentacles are used to bind and squeeze the target for four to five turns." + name: "Klammergriff", + effect: "Umklammert und quetscht das Ziel über vier bis fünf Runden." }, "slam": { name: "Slam", - effect: "The target is slammed with a long tail, vines, or the like to inflict damage." + effect: "Schlag mit einem langen Schweif, einer Ranke oder Ähnlichem." }, "vineWhip": { - name: "Vine Whip", - effect: "The target is struck with slender, whiplike vines to inflict damage." + name: "Rankenhieb", + effect: "Peitschenähnlicher Schlag mit Ranken." }, "stomp": { - name: "Stomp", - effect: "The target is stomped with a big foot. This may also make the target flinch." + name: "Stampfer", + effect: "Stampfen mit dem Fuß. Das Ziel schreckt eventuell zurück." }, "doubleKick": { - name: "Double Kick", - effect: "The target is quickly kicked twice in succession using both feet." + name: "Doppelkick", + effect: "Der Anwender tritt in einer Runde zweimal schnell zu." }, "megaKick": { - name: "Mega Kick", - effect: "The target is attacked by a kick launched with muscle-packed power." + name: "Megakick", + effect: "Das Ziel wird mit einem extrem heftigen Tritt angegriffen." }, "jumpKick": { - name: "Jump Kick", - effect: "The user jumps up high, then strikes with a kick. If the kick misses, the user hurts itself." + name: "Sprungkick", + effect: "Der Angreifer hüpft hoch und tritt zu. Bei Misserfolg schadet er sich selbst." }, "rollingKick": { - name: "Rolling Kick", - effect: "The user lashes out with a quick, spinning kick. This may also make the target flinch." + name: "Fegekick", + effect: "Heftiger Tritt aus einer schnellen Drehbewegung. Lässt das Ziel eventuell zurückschrecken." }, "sandAttack": { - name: "Sand Attack", - effect: "Sand is hurled in the target's face, reducing the target's accuracy." + name: "Sandwirbel", + effect: "Senkt Genauigkeit des Zieles, indem ihm Sand ins Gesicht geworfen wird." }, "headbutt": { - name: "Headbutt", - effect: "The user sticks out its head and attacks by charging straight into the target. This may also make the target flinch." + name: "Kopfnuss", + effect: "Rammt das Ziel mit einer Kopfnuss. Ziel schreckt eventuell zurück." }, "hornAttack": { - name: "Horn Attack", - effect: "The target is jabbed with a sharply pointed horn to inflict damage." + name: "Hornattacke", + effect: "Spießt das Ziel mit einem spitzen Horn auf." }, "furyAttack": { - name: "Fury Attack", - effect: "The target is jabbed repeatedly with a horn or beak two to five times in a row." + name: "Furienschlag", + effect: "Spießt das Ziel zwei- bis fünfmal mit spitzem Horn oder Schnabel auf." }, "hornDrill": { - name: "Horn Drill", - effect: "The user stabs the target with a horn that rotates like a drill. The target faints instantly if this attack hits." + name: "Hornbohrer", + effect: "K.O.-Attacke, bei der ein Horn als Bohrer eingesetzt wird." }, "tackle": { name: "Tackle", - effect: "A physical attack in which the user charges and slams into the target with its whole body." + effect: "Trifft das Ziel mit vollem Körpereinsatz." }, "bodySlam": { - name: "Body Slam", - effect: "The user drops onto the target with its full body weight. This may also leave the target with paralysis." + name: "Bodyslam", + effect: "Trifft das Ziel mit vollem Körpereinsatz. Bewirkt eventuell Paralyse." }, "wrap": { - name: "Wrap", - effect: "A long body, vines, or the like are used to wrap and squeeze the target for four to five turns." + name: "Wickel", + effect: "Umwickelt das Ziel über vier bis fünf Runden mit Ranken oder Ähnlichem und fügt ihm Schaden zu." }, "takeDown": { - name: "Take Down", - effect: "A reckless, full-body charge attack for slamming into the target. This also damages the user a little." + name: "Bodycheck", + effect: "Rücksichtslose Attacke, bei der sich der Angreifer selbst leicht verletzt." }, "thrash": { - name: "Thrash", - effect: "The user rampages and attacks for two to three turns. The user then becomes confused." + name: "Fuchtler", + effect: "Attacke über zwei bis drei Runden, die den Angreifer verwirrt." }, "doubleEdge": { - name: "Double-Edge", - effect: "A reckless, life-risking tackle in which the user rushes the target. This also damages the user quite a lot." + name: "Risikotackle", + effect: "Lebensgefährlicher Angriff, bei dem sich der Angreifer selbst verletzt." }, "tailWhip": { - name: "Tail Whip", - effect: "The user wags its tail cutely, making opposing Pokémon less wary and lowering their Defense stats." + name: "Rutenschlag", + effect: "Hieb mit dem Schweif. Senkt die Verteidigung des Zieles." }, "poisonSting": { - name: "Poison Sting", - effect: "The user stabs the target with a poisonous stinger. This may also poison the target." + name: "Giftstachel", + effect: "Angriff mit Giftstachel. Das Ziel wird eventuell vergiftet." }, "twineedle": { - name: "Twineedle", - effect: "The user damages the target twice in succession by jabbing it with two spikes. This may also poison the target." + name: "Duonadel", + effect: "Stacheln treffen das Ziel zweimal. Das Ziel wird eventuell vergiftet." }, "pinMissile": { - name: "Pin Missile", - effect: "Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row." + name: "Nadelrakete", + effect: "Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander." }, "leer": { - name: "Leer", - effect: "The user gives opposing Pokémon an intimidating leer that lowers the Defense stat." + name: "Silberblick", + effect: "Gegnerischer Verteidigungs-Wert wird durch angsteinflößenden Blick gesenkt." }, "bite": { - name: "Bite", - effect: "The target is bitten with viciously sharp fangs. This may also make the target flinch." + name: "Biss", + effect: "Beißt zu und lässt das Ziel eventuell zurückschrecken." }, "growl": { - name: "Growl", - effect: "The user growls in an endearing way, making opposing Pokémon less wary. This lowers their Attack stats." + name: "Heuler", + effect: "Der Anwender nimmt das Ziel für sich ein und senkt dessen Angriffs-Wert." }, "roar": { - name: "Roar", - effect: "The target is scared off, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + name: "Brüller", + effect: "Verjagt das Ziel und ersetzt es durch ein anderes Pokémon. Beendet den Kampf in der Wildnis." }, "sing": { - name: "Sing", - effect: "A soothing lullaby is sung in a calming voice that puts the target into a deep slumber." + name: "Gesang", + effect: "Ein Lied, das das Ziel in tiefen Schlaf versetzt." }, "supersonic": { - name: "Supersonic", - effect: "The user generates odd sound waves from its body that confuse the target." + name: "Superschall", + effect: "Ausstoß bizarrer Schallwellen. Das Ziel wird verwirrt." }, "sonicBoom": { - name: "Sonic Boom", - effect: "The target is hit with a destructive shock wave that always inflicts 20 HP damage." + name: "Ultraschall", + effect: "Das Ziel wird von einer Schockwelle getroffen, die stets 20 KP Schaden anrichtet." }, "disable": { - name: "Disable", - effect: "For four turns, this move prevents the target from using the move it last used." + name: "Aussetzer", + effect: "Die zuletzt eingesetzte Attacke des Zieles wird für mehrere Runden blockiert." }, "acid": { - name: "Acid", - effect: "Opposing Pokémon are attacked with a spray of harsh acid. This may also lower their Sp. Def stats." + name: "Säure", + effect: "Versprüht ätzende Flüssigkeit, die eventuell die Spezial-Verteidigung der Gegner in der Nähe des Anwenders senkt." }, "ember": { - name: "Ember", - effect: "The target is attacked with small flames. This may also leave the target with a burn." + name: "Glut", + effect: "Schwache Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet." }, "flamethrower": { - name: "Flamethrower", - effect: "The target is scorched with an intense blast of fire. This may also leave the target with a burn." + name: "Flammenwurf", + effect: "Starke Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet." }, "mist": { - name: "Mist", - effect: "The user cloaks itself and its allies in a white mist that prevents any of their stats from being lowered for five turns." + name: "Weißnebel", + effect: "Anwender schützt das Team mit einem Nebel. Verhindert Statussenkungen für fünf Runden." }, "waterGun": { - name: "Water Gun", - effect: "The target is blasted with a forceful shot of water." + name: "Aquaknarre", + effect: "Das Ziel wird mit Wasser bespritzt." }, "hydroPump": { - name: "Hydro Pump", - effect: "The target is blasted by a huge volume of water launched under great pressure." + name: "Hydropumpe", + effect: "Spritzt eine Menge Wasser mit Hochdruck auf das Ziel." }, "surf": { - name: "Surf", - effect: "The user attacks everything around it by swamping its surroundings with a giant wave." + name: "Surfer", + effect: "Eine Welle bricht über alle Pokémon in der Nähe des Anwenders herein." }, "iceBeam": { - name: "Ice Beam", - effect: "The target is struck with an icy-cold beam of energy. This may also leave the target frozen." + name: "Eisstrahl", + effect: "Das Ziel wird von einem Eisstrahl getroffen und friert eventuell ein." }, "blizzard": { name: "Blizzard", - effect: "A howling blizzard is summoned to strike opposing Pokémon. This may also leave the opposing Pokémon frozen." + effect: "Ein Schneesturm wütet, der das Ziel einfrieren kann." }, "psybeam": { - name: "Psybeam", - effect: "The target is attacked with a peculiar ray. This may also leave the target confused." + name: "Psystrahl", + effect: "Feuert einen Strahl ab, der das Ziel verwirren kann." }, "bubbleBeam": { - name: "Bubble Beam", - effect: "A spray of bubbles is forcefully ejected at the target. This may also lower the target's Speed stat." + name: "Blubbstrahl", + effect: "Versprüht Blasen, die eventuell den Initiative-Wert des Zieles senken." }, "auroraBeam": { - name: "Aurora Beam", - effect: "The target is hit with a rainbow-colored beam. This may also lower the target's Attack stat." + name: "Aurorastrahl", + effect: "Regenbogenfarbener Strahl, der eventuell den Angriffs-Wert des Zieles senkt." }, "hyperBeam": { - name: "Hyper Beam", - effect: "The target is attacked with a powerful beam. The user can't move on the next turn." + name: "Hyperstrahl", + effect: "Starke Attacke, die den Anwender zwingt, eine Runde auszusetzen." }, "peck": { - name: "Peck", - effect: "The target is jabbed with a sharply pointed beak or horn." + name: "Pikser", + effect: "Greift das Ziel mit dem Schnabel oder Horn an." }, "drillPeck": { - name: "Drill Peck", - effect: "A corkscrewing attack that strikes the target with a sharp beak acting as a drill." + name: "Bohrschnabel", + effect: "Korkenzieherangriff, bei dem der Schnabel als Bohrer dient." }, "submission": { - name: "Submission", - effect: "The user grabs the target and recklessly dives for the ground. This also damages the user a little." + name: "Überroller", + effect: "Harte Körperattacke, bei der sich der Angreifer selbst leicht verletzt." }, "lowKick": { - name: "Low Kick", - effect: "A powerful low kick that makes the target fall over. The heavier the target, the greater the move's power." + name: "Fußkick", + effect: "Ein Tritt, der das Ziel umwirft. Je schwerer das Ziel ist, desto mehr Schaden fügt ihm die Attacke zu." }, "counter": { - name: "Counter", - effect: "A retaliation move that counters any physical attack, inflicting double the damage taken." + name: "Konter", + effect: "Kontert physische Treffer und fügt dem Ziel das Doppelte des Schadens zu, den der Anwender erlitten hat." }, "seismicToss": { - name: "Seismic Toss", - effect: "The target is thrown using the power of gravity. It inflicts damage equal to the user's level." + name: "Geowurf", + effect: "Ziel wird mit der Kraft der Gravitation umgeworfen. Richtet Schaden gemäß Level des Angreifers an." }, "strength": { - name: "Strength", - effect: "The target is slugged with a punch thrown at maximum power." + name: "Stärke", + effect: "Das Ziel wird extrem stark getroffen. Macht Verschieben von Felsen möglich." }, "absorb": { - name: "Absorb", - effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target." + name: "Absorber", + effect: "Attacke, die die Hälfte des Schadens absorbiert." }, "megaDrain": { - name: "Mega Drain", - effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target." + name: "Megasauger", + effect: "Attacke, die die Hälfte des Schadens absorbiert." }, "leechSeed": { - name: "Leech Seed", - effect: "A seed is planted on the target. It steals some HP from the target every turn." + name: "Egelsamen", + effect: "Ziel wird bepflanzt und verliert jede Runde KP, die ein Pokémon aus dem Team des Anwenders heilen." }, "growth": { - name: "Growth", - effect: "The user's body grows all at once, raising the Attack and Sp. Atk stats." + name: "Wachstum", + effect: "Der Körper wächst. Dadurch steigen Angriff und Spezial-Angriff." }, "razorLeaf": { - name: "Razor Leaf", - effect: "Sharp-edged leaves are launched to slash at opposing Pokémon. Critical hits land more easily." + name: "Rasierblatt", + effect: "Trifft das Ziel mit Blättern. Hohe Volltrefferquote." }, "solarBeam": { - name: "Solar Beam", - effect: "In this two-turn attack, the user gathers light, then blasts a bundled beam on the next turn." + name: "Solarstrahl", + effect: "Absorbiert Licht in Runde 1. In Runde 2 erfolgt der Angriff." }, "poisonPowder": { - name: "Poison Powder", - effect: "The user scatters a cloud of poisonous dust that poisons the target." + name: "Giftpuder", + effect: "Verstreut giftigen Puder auf das Ziel." }, "stunSpore": { - name: "Stun Spore", - effect: "The user scatters a cloud of numbing powder that paralyzes the target." + name: "Stachelspore", + effect: "Verstreut lähmenden Puder." }, "sleepPowder": { - name: "Sleep Powder", - effect: "The user scatters a big cloud of sleep-inducing dust around the target." + name: "Schlafpuder", + effect: "Verstreut Schlafpuder, der das Ziel eventuell in Schlaf versetzt." }, "petalDance": { - name: "Petal Dance", - effect: "The user attacks the target by scattering petals for two to three turns. The user then becomes confused." + name: "Blättertanz", + effect: "Angriff mit Blütenblättern für zwei bis drei Runden. Angreifer wird verwirrt." }, "stringShot": { - name: "String Shot", - effect: "Opposing Pokémon are bound with silk blown from the user's mouth that harshly lowers the Speed stat." + name: "Fadenschuss", + effect: "Umwickelt Ziele in der Nähe mit Fäden aus dem Mund und senkt den Initiative-Wert." }, "dragonRage": { - name: "Dragon Rage", - effect: "This attack hits the target with a shock wave of pure rage. This attack always inflicts 40 HP damage." + name: "Drachenwut", + effect: "Stößt eine wutgeladene Schockwelle aus, die stets 40 KP Schaden anrichtet." }, "fireSpin": { - name: "Fire Spin", - effect: "The target becomes trapped within a fierce vortex of fire that rages for four to five turns." + name: "Feuerwirbel", + effect: "Das Ziel wird für vier bis fünf Runden in einem Feuerkreis gefangen." }, "thunderShock": { - name: "Thunder Shock", - effect: "A jolt of electricity crashes down on the target to inflict damage. This may also leave the target with paralysis." + name: "Donnerschock", + effect: "Eine Elektro-Attacke, die das Ziel eventuell paralysiert." }, "thunderbolt": { - name: "Thunderbolt", - effect: "A strong electric blast crashes down on the target. This may also leave the target with paralysis." + name: "Donnerblitz", + effect: "Eine starke Elektro-Attacke, die das Ziel eventuell paralysiert." }, "thunderWave": { - name: "Thunder Wave", - effect: "The user launches a weak jolt of electricity that paralyzes the target." + name: "Donnerwelle", + effect: "Ein schwacher Stromstoß, der das Ziel paralysiert." }, "thunder": { - name: "Thunder", - effect: "A wicked thunderbolt is dropped on the target to inflict damage. This may also leave the target with paralysis." + name: "Donner", + effect: "Eine verheerende Elektro-Attacke, die das Ziel eventuell paralysiert." }, "rockThrow": { - name: "Rock Throw", - effect: "The user picks up and throws a small rock at the target to attack." + name: "Steinwurf", + effect: "Das Ziel wird mit einem kleinen Stein beworfen." }, "earthquake": { - name: "Earthquake", - effect: "The user sets off an earthquake that strikes every Pokémon around it." + name: "Erdbeben", + effect: "Ein mächtiges Beben, das die anderen Pokémon in der Nähe des Anwenders trifft." }, "fissure": { - name: "Fissure", - effect: "The user opens up a fissure in the ground and drops the target in. The target faints instantly if this attack hits." + name: "Geofissur", + effect: "Das Ziel wird in eine Erdspalte geworfen. Ist die Attacke erfolgreich, führt sie zu einem K.O." }, "dig": { - name: "Dig", - effect: "The user burrows into the ground, then attacks on the next turn." + name: "Schaufler", + effect: "In Runde 1 gräbt sich der Anwender ein und in Runde 2 greift er an. Macht Flucht aus Höhlen möglich." }, "toxic": { - name: "Toxic", - effect: "A move that leaves the target badly poisoned. Its poison damage worsens every turn." + name: "Toxin", + effect: "Vergiftet das Ziel mit einem potenten Toxin schwer. Vergiftung wird von Runde zu Runde stärker." }, "confusion": { - name: "Confusion", - effect: "The target is hit by a weak telekinetic force. This may also confuse the target." + name: "Konfusion", + effect: "Das Ziel wird von schwacher telekinetischer Energie getroffen und eventuell verwirrt." }, "psychic": { - name: "Psychic", - effect: "The target is hit by a strong telekinetic force. This may also lower the target's Sp. Def stat." + name: "Psychokinese", + effect: "Starke Psycho-Attacke, die eventuell die Spezial-Verteidigung des Zieles senkt." }, "hypnosis": { - name: "Hypnosis", - effect: "The user employs hypnotic suggestion to make the target fall into a deep sleep." + name: "Hypnose", + effect: "Hypnose-Attacke, die das Ziel in Schlaf versetzt." }, "meditate": { - name: "Meditate", - effect: "The user meditates to awaken the power deep within its body and raise its Attack stat." + name: "Meditation", + effect: "Anwender aktiviert Kräfte, die tief in seinem Inneren schlummern, und steigert so seinen Angriffs-Wert." }, "agility": { - name: "Agility", - effect: "The user relaxes and lightens its body to move faster. This sharply raises the Speed stat." + name: "Agilität", + effect: "Entspannt den Körper, um den Initiative-Wert stark zu steigern." }, "quickAttack": { - name: "Quick Attack", - effect: "The user lunges at the target at a speed that makes it almost invisible. This move always goes first." + name: "Ruckzuckhieb", + effect: "Sehr schneller Angriff mit Erstschlaggarantie." }, "rage": { - name: "Rage", - effect: "As long as this move is in use, the power of rage raises the Attack stat each time the user is hit in battle." + name: "Raserei", + effect: "Erhöht Angriff des Anwenders, wenn dieser getroffen wird, solange die Attacke aktiviert ist." }, "teleport": { name: "Teleport", - effect: "The user switches places with a party Pokémon in waiting, if any. If a wild Pokémon uses this move, it flees." + effect: "Der Anwender tauscht den Platz mit einem anderen Team-Mitglied, sofern vorhanden. Setzen wilde Pokémon die Attacke ein, ergreifen diese die Flucht." }, "nightShade": { - name: "Night Shade", - effect: "The user makes the target see a frightening mirage. It inflicts damage equal to the user's level." + name: "Nachtnebel", + effect: "Das Ziel sieht eine Illusion. Richtet Schaden gemäß dem Level des Anwenders an." }, "mimic": { - name: "Mimic", - effect: "The user copies the target's last move. The move can be used during battle until the Pokémon is switched out." + name: "Mimikry", + effect: "Kopiert die zuvor ausgeführte Attacke des Zieles. Kann im Kampf bis zur Auswechslung verwendet werden." }, "screech": { - name: "Screech", - effect: "An earsplitting screech harshly lowers the target's Defense stat." + name: "Kreideschrei", + effect: "Stößt einen Schrei aus, um die Verteidigung des Zieles stark zu senken." }, "doubleTeam": { - name: "Double Team", - effect: "By moving rapidly, the user makes illusory copies of itself to raise its evasiveness." + name: "Doppelteam", + effect: "Erzeugt durch schnelle Bewegungen Ebenbilder, um den Fluchtwert zu erhöhen." }, "recover": { - name: "Recover", - effect: "Restoring its own cells, the user restores its own HP by half of its max HP." + name: "Genesung", + effect: "Eine Selbstheilung. KP des Anwenders werden um 50 % des maximalen Wertes aufgefüllt." }, "harden": { - name: "Harden", - effect: "The user stiffens all the muscles in its body to raise its Defense stat." + name: "Härtner", + effect: "Stärkt die Muskulatur und erhöht den Verteidigungs-Wert." }, "minimize": { - name: "Minimize", - effect: "The user compresses its body to make itself look smaller, which sharply raises its evasiveness." + name: "Komprimator", + effect: "Anwender schrumpft, um seinen Fluchtwert stark zu erhöhen." }, "smokescreen": { - name: "Smokescreen", - effect: "The user releases an obscuring cloud of smoke or ink. This lowers the target's accuracy." + name: "Rauchwolke", + effect: "Senkt Genauigkeit des Zieles mit Rauch, Tinte oder Ähnlichem." }, "confuseRay": { - name: "Confuse Ray", - effect: "The target is exposed to a sinister ray that triggers confusion." + name: "Konfusstrahl", + effect: "Ein fieser Strahl, der das Ziel verwirrt." }, "withdraw": { - name: "Withdraw", - effect: "The user withdraws its body into its hard shell, raising its Defense stat." + name: "Panzerschutz", + effect: "Rückzug in den harten Panzer. Erhöht den Verteidigungs-Wert." }, "defenseCurl": { - name: "Defense Curl", - effect: "The user curls up to conceal weak spots and raise its Defense stat." + name: "Einigler", + effect: "Verbirgt Schwächen durch Einrollen und hebt gleichzeitig den Verteidigungs-Wert." }, "barrier": { - name: "Barrier", - effect: "The user throws up a sturdy wall that sharply raises its Defense stat." + name: "Barriere", + effect: "Erzeugt eine Barriere, die den Verteidigungs-Wert stark erhöht." }, "lightScreen": { - name: "Light Screen", - effect: "A wondrous wall of light is put up to reduce damage from special attacks for five turns." + name: "Lichtschild", + effect: "Erzeugt eine Lichtwand und senkt den Schaden durch Spezial-Angriffe für fünf Runden." }, "haze": { - name: "Haze", - effect: "The user creates a haze that eliminates every stat change among all the Pokémon engaged in battle." + name: "Dunkelnebel", + effect: "Erzeugt einen dunklen Nebel. Alle Veränderungen der Statuswerte der Kampfteilnehmer werden annulliert." }, "reflect": { - name: "Reflect", - effect: "A wondrous wall of light is put up to reduce damage from physical attacks for five turns." + name: "Reflektor", + effect: "Eine mysteriöse Wand, die fünf Runden den Schaden von physischen gegnerischen Treffern reduziert." }, "focusEnergy": { - name: "Focus Energy", - effect: "The user takes a deep breath and focuses so that critical hits land more easily." + name: "Energiefokus", + effect: "Anwender atmet ein und bündelt Kraft. Die Volltrefferquote steigt dadurch." }, "bide": { - name: "Bide", - effect: "The user endures attacks for two turns, then strikes back to cause double the damage taken." + name: "Geduld", + effect: "Erträgt zwei Runden Angriffe und schlägt dann mit dem doppelten Wert des erlittenen Schadens zurück." }, "metronome": { - name: "Metronome", - effect: "The user waggles a finger and stimulates its brain into randomly using nearly any move." + name: "Metronom", + effect: "Bewegt Finger, um das Gehirn zu stimulieren. Wählt zufällig eine Attacke aus." }, "mirrorMove": { - name: "Mirror Move", - effect: "The user counters the target by mimicking the target's last move." + name: "Spiegeltrick", + effect: "Kopiert die letzte Attacke des Zieles und greift es an." }, "selfDestruct": { - name: "Self-Destruct", - effect: "The user attacks everything around it by causing an explosion. The user faints upon using this move." + name: "Finale", + effect: "Anwender sprengt sich, richtet rundum Riesenschaden an und wird dabei besiegt." }, "eggBomb": { - name: "Egg Bomb", - effect: "A large egg is hurled at the target with maximum force to inflict damage." + name: "Eierbombe", + effect: "Ein großes Ei wird auf das Ziel abgefeuert, um ihm zu schaden." }, "lick": { - name: "Lick", - effect: "The target is licked with a long tongue, causing damage. This may also leave the target with paralysis." + name: "Schlecker", + effect: "Leck-Attacke mit langer Zunge. Das Ziel wird eventuell paralysiert." }, "smog": { name: "Smog", - effect: "The target is attacked with a discharge of filthy gases. This may also poison the target." + effect: "Angriff mit Gas. Das Ziel kann eventuell vergiftet werden." }, "sludge": { - name: "Sludge", - effect: "Unsanitary sludge is hurled at the target. This may also poison the target." + name: "Schlammbad", + effect: "Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet." }, "boneClub": { - name: "Bone Club", - effect: "The user clubs the target with a bone. This may also make the target flinch." + name: "Knochenkeule", + effect: "Schlägt das Ziel mit einer Keule und lässt es eventuell zurückschrecken." }, "fireBlast": { - name: "Fire Blast", - effect: "The target is attacked with an intense blast of all-consuming fire. This may also leave the target with a burn." + name: "Feuersturm", + effect: "Feuersbrunst, die das Ziel versengt und ihm eventuell eine Verbrennung zufügt." }, "waterfall": { - name: "Waterfall", - effect: "The user charges at the target and may make it flinch." + name: "Kaskade", + effect: "Eine mächtige Attacke, durch die das Ziel eventuell zurückschreckt." }, "clamp": { - name: "Clamp", - effect: "The target is clamped and squeezed by the user's very thick and sturdy shell for four to five turns." + name: "Schnapper", + effect: "Fängt und quetscht das Ziel über vier bis fünf Runden durch die harte Schale des Anwenders." }, "swift": { - name: "Swift", - effect: "Star-shaped rays are shot at opposing Pokémon. This attack never misses." + name: "Sternschauer", + effect: "Verschießt sternförmige Strahlen, die stets treffen, auf Ziele in der Umgebung." }, "skullBash": { - name: "Skull Bash", - effect: "The user tucks in its head to raise its Defense stat on the first turn, then rams the target on the next turn." + name: "Schädelwumme", + effect: "Der Anwender erhöht in Runde 1 seine Verteidigung und greift in Runde 2 an." }, "spikeCannon": { - name: "Spike Cannon", - effect: "Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row." + name: "Dornkanone", + effect: "Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander." }, "constrict": { - name: "Constrict", - effect: "The target is attacked with long, creeping tentacles, vines, or the like. This may also lower the target's Speed stat." + name: "Umklammerung", + effect: "Angriff mit langen Tentakeln oder Ranken. Senkt eventuell den Initiative-Wert." }, "amnesia": { - name: "Amnesia", - effect: "The user temporarily empties its mind to forget its concerns. This sharply raises the user's Sp. Def stat." + name: "Amnesie", + effect: "Gedächtnisverlust, der die Spezial-Verteidigung stark erhöht." }, "kinesis": { - name: "Kinesis", - effect: "The user distracts the target by bending a spoon. This lowers the target's accuracy." + name: "Psykraft", + effect: "Lenkt Ziel durch Verbiegen eines Löffels ab. Senkt dessen Genauigkeit." }, "softBoiled": { - name: "Soft-Boiled", - effect: "The user restores its own HP by up to half of its max HP." + name: "Weichei", + effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." }, "highJumpKick": { - name: "High Jump Kick", - effect: "The target is attacked with a knee kick from a jump. If it misses, the user is hurt instead." + name: "Turmkick", + effect: "Sprungtritt mit Knie. Bei Misserfolg verletzt sich der Anwender selbst." }, "glare": { - name: "Glare", - effect: "The user intimidates the target with the pattern on its belly to cause paralysis." + name: "Schlangenblick", + effect: "Schüchtert Ziel mit dem Muster auf seinem Bauch ein, sodass dieses paralysiert wird." }, "dreamEater": { - name: "Dream Eater", - effect: "The user eats the dreams of a sleeping target. The user's HP is restored by half the damage taken by the target." + name: "Traumfresser", + effect: "Attacke gegen schlafendes Ziel. Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben." }, "poisonGas": { - name: "Poison Gas", - effect: "A cloud of poison gas is sprayed in the face of opposing Pokémon, poisoning those it hits." + name: "Giftwolke", + effect: "Hüllt Ziele in der Umgebung in Gas ein, das sie eventuell vergiftet." }, "barrage": { - name: "Barrage", - effect: "Round objects are hurled at the target to strike two to five times in a row." + name: "Stakkato", + effect: "Wirft zwei- bis fünfmal runde Gegenstände auf das Ziel." }, "leechLife": { - name: "Leech Life", - effect: "The user drains the target's blood. The user's HP is restored by half the damage taken by the target." + name: "Blutsauger", + effect: "Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben." }, "lovelyKiss": { - name: "Lovely Kiss", - effect: "With a scary face, the user tries to force a kiss on the target. If it succeeds, the target falls asleep." + name: "Todeskuss", + effect: "Anwender zwingt dem Ziel einen Kuss auf, der Schlaf verursacht." }, "skyAttack": { - name: "Sky Attack", - effect: "A second-turn attack move where critical hits land more easily. This may also make the target flinch." + name: "Himmelsfeger", + effect: "Anwender greift in der zweiten Runde mit hoher Volltrefferquote an. Ziel schreckt eventuell zurück." }, "transform": { - name: "Transform", - effect: "The user transforms into a copy of the target right down to having the same move set." + name: "Wandler", + effect: "Anwender verwandelt sich in ein Abbild des Zieles und kann so auf die gleichen Attacken zugreifen." }, "bubble": { - name: "Bubble", - effect: "A spray of countless bubbles is jetted at the opposing Pokémon. This may also lower their Speed stat." + name: "Blubber", + effect: "Angriff mit Blasen. Initiative-Wert des Zieles wird eventuell gesenkt." }, "dizzyPunch": { - name: "Dizzy Punch", - effect: "The target is hit with rhythmically launched punches. This may also leave the target confused." + name: "Irrschlag", + effect: "Rhythmische Schläge, die das Ziel verwirren können." }, "spore": { - name: "Spore", - effect: "The user scatters bursts of spores that induce sleep." + name: "Pilzspore", + effect: "Erzeugt eine Wolke aus einschläfernden Sporen." }, "flash": { - name: "Flash", - effect: "The user flashes a bright light that cuts the target's accuracy." + name: "Blitz", + effect: "Erzeugt helles Licht, das die Genauigkeit des Zieles senkt." }, "psywave": { - name: "Psywave", - effect: "The target is attacked with an odd psychic wave. The attack varies in intensity." + name: "Psywelle", + effect: "Anwender erzeugt eine mysteriöse Energiewelle, deren Intensität von Mal zu Mal anders ausfällt." }, "splash": { - name: "Splash", - effect: "The user just flops and splashes around to no effect at all..." + name: "Platscher", + effect: "Nur ein Platscher, der überhaupt nichts bewirkt." }, "acidArmor": { - name: "Acid Armor", - effect: "The user alters its cellular structure to liquefy itself, sharply raising its Defense stat." + name: "Säurepanzer", + effect: "Verflüssigt Körperzellen des Anwenders. Erhöht den Verteidigungs-Wert stark." }, "crabhammer": { - name: "Crabhammer", - effect: "The target is hammered with a large pincer. Critical hits land more easily." + name: "Krabbhammer", + effect: "Schlägt mit Schere zu. Hohe Volltrefferquote." }, "explosion": { name: "Explosion", - effect: "The user attacks everything around it by causing a tremendous explosion. The user faints upon using this move." + effect: "Anwender explodiert, richtet bei allen Pokémon in seiner Umgebung großen Schaden an und wird selbst kampfunfähig." }, "furySwipes": { - name: "Fury Swipes", - effect: "The target is raked with sharp claws or scythes quickly two to five times in a row." + name: "Kratzfurie", + effect: "Beharkt das Ziel zwei- bis fünfmal mit scharfen Klauen oder Sicheln." }, "bonemerang": { - name: "Bonemerang", - effect: "The user throws the bone it holds. The bone loops around to hit the target twice—coming and going." + name: "Knochmerang", + effect: "Ein Bumerang aus Knochen, der zweimal trifft." }, "rest": { - name: "Rest", - effect: "The user goes to sleep for two turns. This fully restores the user's HP and heals any status conditions." + name: "Erholung", + effect: "Anwender wird vollkommen geheilt und schläft die folgenden zwei Runden." }, "rockSlide": { - name: "Rock Slide", - effect: "Large boulders are hurled at opposing Pokémon to inflict damage. This may also make the opposing Pokémon flinch." + name: "Steinhagel", + effect: "Schleudert riesige Felsen auf Ziele in der Umgebung, die eventuell zurückschrecken." }, "hyperFang": { - name: "Hyper Fang", - effect: "The user bites hard on the target with its sharp front fangs. This may also make the target flinch." + name: "Hyperzahn", + effect: "Angriff mit scharfen Reißzähnen. Ziel schreckt eventuell zurück." }, "sharpen": { - name: "Sharpen", - effect: "The user makes its edges more jagged, which raises its Attack stat." + name: "Schärfer", + effect: "Anwender senkt die Polygonzahl, um Kanten zu erzeugen, die den Angriffs-Wert erhöhen." }, "conversion": { - name: "Conversion", - effect: "The user changes its type to become the same type as the move at the top of the list of moves it knows." + name: "Umwandlung", + effect: "Wandelt den Typ des Anwenders in den Typ der ersten Attacke des Anwenders um." }, "triAttack": { - name: "Tri Attack", - effect: "The user strikes with a simultaneous three-beam attack. This may also burn, freeze, or paralyze the target." + name: "Triplette", + effect: "Feuert drei Strahlen ab. Verursacht eventuell Paralyse, Verbrennung oder Einfrieren." }, "superFang": { - name: "Super Fang", - effect: "The user chomps hard on the target with its sharp front fangs. This cuts the target's HP in half." + name: "Superzahn", + effect: "Greift mit scharfen Reißzähnen an. KP des Zieles werden halbiert." }, "slash": { - name: "Slash", - effect: "The target is attacked with a slash of claws or blades. Critical hits land more easily." + name: "Schlitzer", + effect: "Hieb mit Klauen oder Ähnlichem. Hohe Volltrefferquote." }, "substitute": { - name: "Substitute", - effect: "The user creates a substitute for itself using some of its HP. The substitute serves as the user's decoy." + name: "Delegator", + effect: "Anwender setzt eine kleine Menge an KP ein, um einen Doppelgänger zu erzeugen, der für ihn Schläge einsteckt." }, "struggle": { - name: "Struggle", - effect: "This attack is used in desperation only if the user has no PP. It also damages the user a little." + name: "Verzweifler", + effect: "Angriff nur bei verbrauchten AP. Anwender verletzt sich selbst leicht." }, "sketch": { - name: "Sketch", - effect: "It enables the user to permanently learn the move last used by the target. Once used, Sketch disappears." + name: "Nachahmer", + effect: "Anwender lernt die letzte Attacke des Zieles dauerhaft. Nachahmer verschwindet nach Gebrauch." }, "tripleKick": { - name: "Triple Kick", - effect: "A consecutive three-kick attack that becomes more powerful with each successful hit." + name: "Dreifachkick", + effect: "Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu." }, "thief": { - name: "Thief", - effect: "The user attacks and has a 30% chance to steal the target's held item simultaneously." + name: "Raub", + effect: "Erlaubt es, das Item des Zieles zu stehlen, solang der Anwender selbst keins bei sich trägt." }, "spiderWeb": { - name: "Spider Web", - effect: "The user ensnares the target with thin, gooey silk so it can't flee from battle." + name: "Spinnennetz", + effect: "Wickelt das Ziel ein. Flucht oder Tausch unmöglich." }, "mindReader": { - name: "Mind Reader", - effect: "The user senses the target's movements with its mind to ensure its next attack does not miss the target." + name: "Willensleser", + effect: "Ahnt Bewegungen des Zieles voraus, um zu gewährleisten, dass die nächste eigene Attacke trifft." }, "nightmare": { - name: "Nightmare", - effect: "A sleeping target sees a nightmare that inflicts some damage every turn." + name: "Nachtmahr", + effect: "Dem schlafenden Ziel wird durch einen Alptraum in jeder Runde Schaden zugefügt, solang es schläft." }, "flameWheel": { - name: "Flame Wheel", - effect: "The user cloaks itself in fire and charges at the target. This may also leave the target with a burn." + name: "Flammenrad", + effect: "Feuer-Attacke, die das Ziel eventuell verbrennt." }, "snore": { - name: "Snore", - effect: "This attack can be used only if the user is asleep. The harsh noise may also make the target flinch." + name: "Schnarcher", + effect: "Attacke nur im Schlaf möglich. Ziel schreckt eventuell zurück." }, "curse": { - name: "Curse", - effect: "A move that works differently for the Ghost type than for all other types." + name: "Fluch", + effect: "Attacke, deren Wirkung davon abhängt, ob der Anwender ein Geist-Pokémon ist." }, "flail": { - name: "Flail", - effect: "The user flails about aimlessly to attack. The less HP the user has, the greater the move's power." + name: "Dreschflegel", + effect: "Attacke richtet mehr Schaden an, wenn eigene KP niedrig sind." }, "conversion2": { - name: "Conversion 2", - effect: "The user changes its type to make itself resistant to the type of the attack the target used last." + name: "Umwandlung2", + effect: "Anwender ändert Typ und wird gegen letzten Angriffstyp resistent." }, "aeroblast": { - name: "Aeroblast", - effect: "A vortex of air is shot at the target to inflict damage. Critical hits land more easily." + name: "Luftstoß", + effect: "Erzeugt Luftstrudel gegen das Ziel. Hohe Volltrefferquote." }, "cottonSpore": { - name: "Cotton Spore", - effect: "The user releases cotton-like spores that cling to opposing Pokémon, which harshly lowers their Speed stats." + name: "Baumwollsaat", + effect: "Wattebäusche heften sich an das Ziel. Der Initiative-Wert sinkt stark." }, "reversal": { - name: "Reversal", - effect: "An all-out attack that becomes more powerful the less HP the user has." + name: "Gegenschlag", + effect: "Richtet mehr Schaden an, wenn eigene KP niedrig sind." }, "spite": { - name: "Spite", - effect: "The user unleashes its grudge on the move last used by the target by cutting 4 PP from it." + name: "Groll", + effect: "AP der letzten Attacke des Zieles werden um 4 gesenkt." }, "powderSnow": { - name: "Powder Snow", - effect: "The user attacks with a chilling gust of powdery snow. This may also freeze opposing Pokémon." + name: "Pulverschnee", + effect: "Angriff mit Schnee. Das Ziel wird eventuell eingefroren." }, "protect": { - name: "Protect", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession." + name: "Schutzschild", + effect: "Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung." }, "machPunch": { - name: "Mach Punch", - effect: "The user throws a punch at blinding speed. This move always goes first." + name: "Tempohieb", + effect: "Extrem schneller Hieb, der stets zuerst trifft." }, "scaryFace": { - name: "Scary Face", - effect: "The user frightens the target with a scary face to harshly lower its Speed stat." + name: "Grimasse", + effect: "Jagt dem Ziel mit einer Grimasse Angst ein. Dessen Initiative-Wert sinkt stark." }, "feintAttack": { - name: "Feint Attack", - effect: "The user approaches the target disarmingly, then throws a sucker punch. This attack never misses." + name: "Finte", + effect: "Anwender nähert sich mit Unschuldsmiene dem Ziel und schlägt zu, sobald dieses unachtsam wird. Ein Treffer ist gewiss." }, "sweetKiss": { - name: "Sweet Kiss", - effect: "The user kisses the target with a sweet, angelic cuteness that causes confusion." + name: "Bitterkuss", + effect: "Anwender küsst das Ziel, das durch diese Niedlichkeit verwirrt wird." }, "bellyDrum": { - name: "Belly Drum", - effect: "The user maximizes its Attack stat in exchange for HP equal to half its max HP." + name: "Bauchtrommel", + effect: "Der Anwender maximiert den Angriffs-Wert auf Kosten der Hälfte seiner maximalen KP." }, "sludgeBomb": { - name: "Sludge Bomb", - effect: "Unsanitary sludge is hurled at the target. This may also poison the target." + name: "Matschbombe", + effect: "Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet." }, "mudSlap": { - name: "Mud-Slap", - effect: "The user hurls mud in the target's face to inflict damage and lower its accuracy." + name: "Lehmschelle", + effect: "Schadet dem Ziel durch Matsch. Dessen Genauigkeit sinkt." }, "octazooka": { name: "Octazooka", - effect: "The user attacks by spraying ink in the target's face or eyes. This may also lower the target's accuracy." + effect: "Schießt mit Tinte, um Schaden anzurichten und die Genauigkeit zu senken." }, "spikes": { - name: "Spikes", - effect: "The user lays a trap of spikes at the opposing team's feet. The trap hurts Pokémon that switch into battle." + name: "Stachler", + effect: "Der Anwender verteilt Stacheln, die gegnerische Pokémon verletzen, die in den Kampf gerufen werden." }, "zapCannon": { - name: "Zap Cannon", - effect: "The user fires an electric blast like a cannon to inflict damage and cause paralysis." + name: "Blitzkanone", + effect: "Kanonenähnlicher Elektro-Schuss, der schadet und paralysiert." }, "foresight": { - name: "Foresight", - effect: "Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit." + name: "Scharfblick", + effect: "Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles." }, "destinyBond": { - name: "Destiny Bond", - effect: "After using this move, if the user faints, the Pokémon that landed the knockout hit also faints. Its chance of failing rises if it is used in succession." + name: "Abgangsbund", + effect: "Wird der Anwender nach Einsatz dieser Attacke besiegt, führt dies auch beim Ziel zum K.O." }, "perishSong": { - name: "Perish Song", - effect: "Any Pokémon that hears this song faints in three turns, unless it switches out of battle." + name: "Abgesang", + effect: "Wer diese Musik hört, wird nach drei Runden besiegt. Rettung ist durch den Eintausch eines neuen Pokémon möglich." }, "icyWind": { - name: "Icy Wind", - effect: "The user attacks with a gust of chilled air. This also lowers opposing Pokémon's Speed stats." + name: "Eissturm", + effect: "Eis-Attacke, die dem Ziel Schaden zufügt und seinen Initiative-Wert senkt." }, "detect": { - name: "Detect", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession." + name: "Scanner", + effect: "Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung." }, "boneRush": { - name: "Bone Rush", - effect: "The user strikes the target with a hard bone two to five times in a row." + name: "Knochenhatz", + effect: "Greift Ziel zwei- bis fünfmal in Folge mit einem harten Knochen an." }, "lockOn": { - name: "Lock-On", - effect: "The user takes sure aim at the target. This ensures the next attack does not miss the target." + name: "Zielschuss", + effect: "Visiert das Ziel an und trifft in der nächsten Runde garantiert." }, "outrage": { - name: "Outrage", - effect: "The user rampages and attacks for two to three turns. The user then becomes confused." + name: "Wutanfall", + effect: "Attacke über zwei bis drei Runden, die den Anwender verwirrt." }, "sandstorm": { - name: "Sandstorm", - effect: "A five-turn sandstorm is summoned to hurt all combatants except Rock, Ground, and Steel types. It raises the Sp. Def stat of Rock types." + name: "Sandsturm", + effect: "Sandsturm für fünf Runden. Fügt Pokémon von jedem Typ außer Gestein, Boden und Stahl Schaden zu." }, "gigaDrain": { - name: "Giga Drain", - effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target." + name: "Gigasauger", + effect: "Das Ziel wird angegriffen und die Hälfte des zugefügten Schadens dem Angreifer als KP gutgeschrieben." }, "endure": { - name: "Endure", - effect: "The user endures any attack with at least 1 HP. Its chance of failing rises if it is used in succession." + name: "Ausdauer", + effect: "Nach fatalen Attacken bleibt stets 1 KP übrig. Misserfolg bei Wiederholung möglich." }, "charm": { - name: "Charm", - effect: "The user gazes at the target rather charmingly, making it less wary. This harshly lowers the target's Attack stat." + name: "Charme", + effect: "Betört das Ziel und reduziert dessen Angriffs-Wert stark." }, "rollout": { - name: "Rollout", - effect: "The user continually rolls into the target over five turns. It becomes more powerful each time it hits." + name: "Walzer", + effect: "Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu." }, "falseSwipe": { - name: "False Swipe", - effect: "A restrained attack that prevents the target from fainting. The target is left with at least 1 HP." + name: "Trugschlag", + effect: "Ein Angriff, der dem Ziel zumindest 1 KP lässt." }, "swagger": { - name: "Swagger", - effect: "The user enrages and confuses the target. However, this also sharply raises the target's Attack stat." + name: "Angeberei", + effect: "Verwirrt das Ziel und erhöht dessen Angriffs-Wert stark." }, "milkDrink": { - name: "Milk Drink", - effect: "The user restores its own HP by up to half of its max HP." + name: "Milchgetränk", + effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." }, "spark": { - name: "Spark", - effect: "The user throws an electrically charged tackle at the target. This may also leave the target with paralysis." + name: "Funkensprung", + effect: "Elektro-Hieb, der das Ziel paralysieren kann." }, "furyCutter": { - name: "Fury Cutter", - effect: "The target is slashed with scythes or claws. This attack becomes more powerful if it hits in succession." + name: "Zornklinge", + effect: "Eine Attacke mit Scheren oder Klauen, deren Härte bei aufeinanderfolgenden Treffern zunimmt." }, "steelWing": { - name: "Steel Wing", - effect: "The target is hit with wings of steel. This may also raise the user's Defense stat." + name: "Stahlflügel", + effect: "Trifft das Ziel mit Stahlflügeln. Verteidigungs-Wert des Anwenders steigt eventuell." }, "meanLook": { - name: "Mean Look", - effect: "The user pins the target with a dark, arresting look. The target becomes unable to flee." + name: "Horrorblick", + effect: "Böser Blick, der die Flucht des Zieles vereitelt." }, "attract": { - name: "Attract", - effect: "If it is the opposite gender of the user, the target becomes infatuated and less likely to attack." + name: "Anziehung", + effect: "Angriff auf Anwender vom anderen Geschlecht wird unwahrscheinlich." }, "sleepTalk": { - name: "Sleep Talk", - effect: "While it is asleep, the user randomly uses one of the moves it knows." + name: "Schlafrede", + effect: "Anwender setzt per Zufall eine ihm bekannte Attacke im Schlaf ein." }, "healBell": { - name: "Heal Bell", - effect: "The user makes a soothing bell chime to heal the status conditions of all the party Pokémon." + name: "Vitalglocke", + effect: "Läutet beruhigend und heilt alle Statusprobleme im Team." }, "return": { - name: "Return", - effect: "This full-power attack grows more powerful the more the user likes its Trainer." + name: "Rückkehr", + effect: "Angriff, dessen Kraft bei Freundschaft zum Trainer größer wird." }, "present": { - name: "Present", - effect: "The user attacks by giving the target a gift with a hidden trap. It restores HP sometimes, however." + name: "Geschenk", + effect: "Eine Bombe als Geschenk. Kann auch KP des Zieles wiederherstellen." }, "frustration": { name: "Frustration", - effect: "This full-power attack grows more powerful the less the user likes its Trainer." + effect: "Die Attacke wird stärker, je weniger der Anwender seinen Trainer mag." }, "safeguard": { - name: "Safeguard", - effect: "The user creates a protective field that prevents status conditions for five turns." + name: "Bodyguard", + effect: "Team des Anwenders ist fünf Runden vor Statusproblemen geschützt." }, "painSplit": { - name: "Pain Split", - effect: "The user adds its HP to the target's HP, then equally shares the combined HP with the target." + name: "Leidteiler", + effect: "Addiert KP von Anwender und Ziel. Teilt sie gerecht auf." }, "sacredFire": { - name: "Sacred Fire", - effect: "The target is razed with a mystical fire of great intensity. This may also leave the target with a burn." + name: "Läuterfeuer", + effect: "Mystische Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet." }, "magnitude": { - name: "Magnitude", - effect: "The user attacks everything around it with a ground-shaking quake. Its power varies." + name: "Intensität", + effect: "Erdbebenartiger Angriff von zufälliger Stärke gegen andere Pokémon in der Umgebung des Anwenders." }, "dynamicPunch": { - name: "Dynamic Punch", - effect: "The user punches the target with full, concentrated power. This confuses the target if it hits." + name: "Wuchtschlag", + effect: "Kräftiger Schlag, der das Ziel bei Erfolg verwirrt." }, "megahorn": { - name: "Megahorn", - effect: "Using its tough and impressive horn, the user rams into the target with no letup." + name: "Vielender", + effect: "Brutaler Ramm-Angriff mit spitzem, beeindruckendem Horn." }, "dragonBreath": { - name: "Dragon Breath", - effect: "The user exhales a mighty gust that inflicts damage. This may also leave the target with paralysis." + name: "Feuerodem", + effect: "Fegt das Ziel mit zerstörerisch heißem Atem weg. Paralysiert das Ziel eventuell." }, "batonPass": { - name: "Baton Pass", - effect: "The user switches places with a party Pokémon in waiting and passes along any stat changes." + name: "Stafette", + effect: "Tauscht das eigene Pokémon aus. Alle Statusveränderungen bleiben bestehen." }, "encore": { - name: "Encore", - effect: "The user compels the target to keep using the move it encored for three turns." + name: "Zugabe", + effect: "Das Ziel wiederholt die letzte Attacke drei Runden lang." }, "pursuit": { - name: "Pursuit", - effect: "The power of this attack move is doubled if it's used on a target that's switching out of battle." + name: "Verfolgung", + effect: "Die Attacke richtet beim Ziel doppelten Schaden an, falls es ausgetauscht wird." }, "rapidSpin": { - name: "Rapid Spin", - effect: "A spin attack that can also eliminate such moves as Bind, Wrap, and Leech Seed. This also raises the user's Speed stat." + name: "Turbodreher", + effect: "Trifft das Ziel mit einer Dreh-Attacke. Befreit sich unter anderem von Wickel, Klammergriff, Egelsamen und Stachler." }, "sweetScent": { - name: "Sweet Scent", - effect: "A sweet scent that harshly lowers opposing Pokémon's evasiveness." + name: "Lockduft", + effect: "Lockt Ziele an und senkt deren Fluchtwert. Lockt im Gras auch wilde Pokémon an." }, "ironTail": { - name: "Iron Tail", - effect: "The target is slammed with a steel-hard tail. This may also lower the target's Defense stat." + name: "Eisenschweif", + effect: "Attacke mit hartem Eisenschweif. Senkt eventuell den Verteidigungs-Wert des Zieles." }, "metalClaw": { - name: "Metal Claw", - effect: "The target is raked with steel claws. This may also raise the user's Attack stat." + name: "Metallklaue", + effect: "Klauen-Attacke, die eventuell den Angriffs-Wert des Anwenders erhöht." }, "vitalThrow": { - name: "Vital Throw", - effect: "The user attacks last. In return, this throw move never misses." + name: "Überwurf", + effect: "Anwender greift als Letzter an, hat dafür aber eine Treffergarantie beim eigenen Angriff." }, "morningSun": { - name: "Morning Sun", - effect: "The user restores its own HP. The amount of HP regained varies with the weather." + name: "Morgengrauen", + effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab." }, "synthesis": { - name: "Synthesis", - effect: "The user restores its own HP. The amount of HP regained varies with the weather." + name: "Synthese", + effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab." }, "moonlight": { - name: "Moonlight", - effect: "The user restores its own HP. The amount of HP regained varies with the weather." + name: "Mondschein", + effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab." }, "hiddenPower": { - name: "Hidden Power", - effect: "A unique attack that varies in type depending on the Pokémon using it." + name: "Kraftreserve", + effect: "Wirkung und Typ der Attacke hängen vom Anwender ab." }, "crossChop": { - name: "Cross Chop", - effect: "The user delivers a double chop with its forearms crossed. Critical hits land more easily." + name: "Kreuzhieb", + effect: "Doppelter Hieb mit den Unterarmen. Hohe Volltrefferquote." }, "twister": { - name: "Twister", - effect: "The user whips up a vicious tornado to tear at opposing Pokémon. This may also make them flinch." + name: "Windhose", + effect: "Trifft Ziele in der Umgebung mit einem heftigen Wirbelsturm, was diese eventuell zurückschrecken lässt." }, "rainDance": { - name: "Rain Dance", - effect: "The user summons a heavy rain that falls for five turns, powering up Water-type moves. It lowers the power of Fire-type moves." + name: "Regentanz", + effect: "Anwender erzeugt starken Regen. Die Stärke von Wasser-Attacken erhöht sich fünf Runden lang." }, "sunnyDay": { - name: "Sunny Day", - effect: "The user intensifies the sun for five turns, powering up Fire-type moves. It lowers the power of Water-type moves." + name: "Sonnentag", + effect: "Die Sonne brennt unbarmherzig fünf Runden lang. Dadurch werden Attacken vom Typ Feuer verstärkt." }, "crunch": { - name: "Crunch", - effect: "The user crunches up the target with sharp fangs. This may also lower the target's Defense stat." + name: "Knirscher", + effect: "Beißt mit scharfen Reißzähnen zu und senkt eventuell die Verteidigung." }, "mirrorCoat": { - name: "Mirror Coat", - effect: "A retaliation move that counters any special attack, inflicting double the damage taken." + name: "Spiegelcape", + effect: "Kontert den Spezial-Angriff des Gegners mit doppeltem Schaden." }, "psychUp": { - name: "Psych Up", - effect: "The user hypnotizes itself into copying any stat change made by the target." + name: "Psycho-Plus", + effect: "Der Anwender hypnotisiert sich selbst, um die Statusveränderungen des Zieles zu kopieren." }, "extremeSpeed": { - name: "Extreme Speed", - effect: "The user charges the target at blinding speed. This move always goes first." + name: "Turbotempo", + effect: "Extrem schnelle und kraftvolle Attacke, die stets zuerst trifft." }, "ancientPower": { - name: "Ancient Power", - effect: "The user attacks with a prehistoric power. This may also raise all the user's stats at once." + name: "Antik-Kraft", + effect: "Angriff mit antiker Kraft, der alle Statuswerte erhöhen kann." }, "shadowBall": { - name: "Shadow Ball", - effect: "The user hurls a shadowy blob at the target. This may also lower the target's Sp. Def stat." + name: "Spukball", + effect: "Bewirft das Ziel mit gruseligem Ball und senkt eventuell die Spezial-Verteidigung." }, "futureSight": { - name: "Future Sight", - effect: "Two turns after this move is used, a hunk of psychic energy attacks the target." + name: "Seher", + effect: "Zwei Runden, nachdem Seher eingesetzt wurde, erfolgt der Angriff." }, "rockSmash": { - name: "Rock Smash", - effect: "The user attacks with a punch. This may also lower the target's Defense stat." + name: "Zertrümmerer", + effect: "Diese steinbrechende Attacke kann den Verteidigungs-Wert des Zieles senken und außerhalb von Kämpfen rissige Felsen zertrümmern." }, "whirlpool": { name: "Whirlpool", - effect: "The user traps the target in a violent swirling whirlpool for four to five turns." + effect: "Das Ziel wird für vier bis fünf Runden in einer Wasserhose gefangen." }, "beatUp": { - name: "Beat Up", - effect: "The user gets all party Pokémon to attack the target. The more party Pokémon, the greater the number of attacks." + name: "Prügler", + effect: "Das gesamte Team nimmt aktiv am Kampf teil. Je mehr Pokémon, desto höher die Anzahl der Angriffe." }, "fakeOut": { - name: "Fake Out", - effect: "This attack hits first and makes the target flinch. It only works the first turn each time the user enters battle." + name: "Mogelhieb", + effect: "Diese Attacke trifft zuerst. Das Ziel schreckt zurück. Gelingt nur in der ersten Runde eines Kampfes." }, "uproar": { - name: "Uproar", - effect: "The user attacks in an uproar for three turns. During that time, no Pokémon can fall asleep." + name: "Aufruhr", + effect: "Anwender greift an, indem er über drei Runden hinweg einen Aufruhr erzeugt. Verhindert Schlaf." }, "stockpile": { - name: "Stockpile", - effect: "The user charges up power and raises both its Defense and Sp. Def stats. The move can be used three times." + name: "Horter", + effect: "Lädt Kraft für später auf. Erhöht Verteidigung und Spezial-Verteidigung. Kann bis zu dreimal eingesetzt werden." }, "spitUp": { - name: "Spit Up", - effect: "The power stored using the move Stockpile is released at once in an attack. The more power is stored, the greater the move's power." + name: "Entfessler", + effect: "Entlädt die Kraft, die während des Einsatzes von Horter gesammelt wurde." }, "swallow": { - name: "Swallow", - effect: "The power stored using the move Stockpile is absorbed by the user to heal its HP. Storing more power heals more HP." + name: "Verzehrer", + effect: "Absorbiert die gehortete Kraft, um KP aufzufüllen." }, "heatWave": { - name: "Heat Wave", - effect: "The user attacks by exhaling hot breath on opposing Pokémon. This may also leave those Pokémon with a burn." + name: "Hitzewelle", + effect: "Ziele werden von Sturm aus heißer Luft getroffen und verbrennen sich eventuell." }, "hail": { - name: "Hail", - effect: "The user summons a hailstorm lasting five turns. It damages all Pokémon except Ice types." + name: "Hagelsturm", + effect: "Hagelsturm für fünf Runden. Schadet allen, außer Eis-Pokémon." }, "torment": { - name: "Torment", - effect: "The user torments and enrages the target, making it incapable of using the same move twice in a row." + name: "Folterknecht", + effect: "Erzürnt das Ziel, um wiederholten Einsatz derselben Attacke zu verhindern." }, "flatter": { - name: "Flatter", - effect: "Flattery is used to confuse the target. However, this also raises the target's Sp. Atk stat." + name: "Schmeichler", + effect: "Schmeichelt dem Ziel, um es zu verwirren. Erhöht dessen Spezial-Angriff." }, "willOWisp": { - name: "Will-O-Wisp", - effect: "The user shoots a sinister flame at the target to inflict a burn." + name: "Irrlicht", + effect: "Angriff mit unheimlicher Flamme, die das Ziel verbrennt." }, "memento": { - name: "Memento", - effect: "The user faints when using this move. In return, this harshly lowers the target's Attack and Sp. Atk stats." + name: "Memento-Mori", + effect: "Der Anwender wird besiegt und senkt den Angriffs-Wert und den Spezial-Angriff des Zieles stark." }, "facade": { - name: "Facade", - effect: "This attack move doubles its power if the user is poisoned, burned, or paralyzed." + name: "Fassade", + effect: "Doppelte Stärke nach Verbrennung, Paralyse oder Vergiftung." }, "focusPunch": { - name: "Focus Punch", - effect: "The user focuses its mind before launching a punch. This move fails if the user is hit before it is used." + name: "Power-Punch", + effect: "Anwender konzentriert sich, bevor er angreift. Wird er vorher getroffen, ist die Attacke erfolglos." }, "smellingSalts": { - name: "Smelling Salts", - effect: "This attack's power is doubled when used on a target with paralysis. This also cures the target's paralysis, however." + name: "Riechsalz", + effect: "Doppelt wirksam gegen paralysierte Ziele, heilt sie aber auch von der Paralyse." }, "followMe": { - name: "Follow Me", - effect: "The user draws attention to itself, making all targets take aim only at the user." + name: "Spotlight", + effect: "Zieht Aufmerksamkeit auf sich. Gegner greift nur Anwender an." }, "naturePower": { - name: "Nature Power", - effect: "This attack makes use of nature's power. Its effects vary depending on the user's environment." + name: "Natur-Kraft", + effect: "Angriff mit der Kraft der Natur, dessen Typ vom Ort abhängt, wo er durchgeführt wird." }, "charge": { - name: "Charge", - effect: "The user boosts the power of the Electric move it uses on the next turn. This also raises the user's Sp. Def stat." + name: "Ladevorgang", + effect: "Lädt Energie für die kommende Elektro-Attacke auf. Erhöht die Spezial-Verteidigung." }, "taunt": { - name: "Taunt", - effect: "The target is taunted into a rage that allows it to use only attack moves for three turns." + name: "Verhöhner", + effect: "Bringt das Ziel in Rage. Dieses kann über drei Runden hinweg nur noch angreifen." }, "helpingHand": { - name: "Helping Hand", - effect: "The user assists an ally by boosting the power of that ally's attack." + name: "Rechte Hand", + effect: "Anwender steigert die Kraft eines Angriffes eines Freundes." }, "trick": { - name: "Trick", - effect: "The user catches the target off guard and swaps its held item with its own." + name: "Trickbetrug", + effect: "Der Anwender überrumpelt das Ziel und tauscht mit ihm die getragenen Items." }, "rolePlay": { - name: "Role Play", - effect: "The user mimics the target completely, copying the target's Ability." + name: "Rollenspiel", + effect: "Parodiert das Ziel und kopiert seine Fähigkeit." }, "wish": { - name: "Wish", - effect: "One turn after this move is used, the user's or its replacement's HP is restored by half the user's max HP." + name: "Wunschtraum", + effect: "Ein Wunsch füllt in der nächsten Runde 50 % der KP des Anwenders bei diesem oder einem eingewechselten Pokémon auf." }, "assist": { - name: "Assist", - effect: "The user hurriedly and randomly uses a move among those known by ally Pokémon." + name: "Zuschuss", + effect: "Greift zufällig mit einer Attacke eines Mitstreiters an." }, "ingrain": { - name: "Ingrain", - effect: "The user lays roots that restore its HP on every turn. Because it's rooted, it can't switch out." + name: "Verwurzler", + effect: "Verwurzelung füllt jede Runde KP auf. Austausch ist unmöglich." }, "superpower": { - name: "Superpower", - effect: "The user attacks the target with great power. However, this also lowers the user's Attack and Defense stats." + name: "Kraftkoloss", + effect: "Starke Attacke, die jedoch auch den Angriff und die Verteidigung des Anwenders senkt." }, "magicCoat": { - name: "Magic Coat", - effect: "Moves like Leech Seed and moves that inflict status conditions are blocked by a barrier and reflected back to the user of those moves." + name: "Magiemantel", + effect: "Egelsamen und alle Attacken mit Status verändernden Effekten prallen ab." }, "recycle": { - name: "Recycle", - effect: "The user recycles a held item that has been used in battle so it can be used again." + name: "Aufbereitung", + effect: "Recycling eines getragenen Items, das zuvor im Kampf verwendet wurde." }, "revenge": { - name: "Revenge", - effect: "This attack move's power is doubled if the user has been hurt by the opponent in the same turn." + name: "Vergeltung", + effect: "Schaden verdoppelt sich, wenn der Anwender in der Runde bereits Schaden vom Ziel des Angriffes genommen hat." }, "brickBreak": { - name: "Brick Break", - effect: "The user attacks with a swift chop. It can also break barriers, such as Light Screen and Reflect." + name: "Durchbruch", + effect: "Ein beherzter Handkantenschlag. Durchbricht Barrieren wie Lichtschild und Reflektor." }, "yawn": { - name: "Yawn", - effect: "The user lets loose a huge yawn that lulls the target into falling asleep on the next turn." + name: "Gähner", + effect: "Angreifer gähnt und das Ziel schläft in der nächsten Runde ein." }, "knockOff": { - name: "Knock Off", - effect: "The user slaps down the target's held item, and that item can't be used in that battle. The move does more damage if the target has a held item." + name: "Abschlag", + effect: "Schlägt das Item des Zieles weg und vereitelt so dessen Gebrauch während des Kampfes. Mehr Schaden gegen Ziele, die ein Item bei sich tragen." }, "endeavor": { - name: "Endeavor", - effect: "This attack move cuts down the target's HP to equal the user's HP." + name: "Notsituation", + effect: "Trifft nur, wenn KP des Anwenders geringer als KP des Zieles sind. Senkt dessen KP auf die Höhe der KP des Anwenders." }, "eruption": { name: "Eruption", - effect: "The user attacks opposing Pokémon with explosive fury. The lower the user's HP, the lower the move's power." + effect: "Explosiver Angriff. Je höher die KP des Anwenders sind, desto mehr Schaden wird angerichtet." }, "skillSwap": { - name: "Skill Swap", - effect: "The user employs its psychic power to exchange Abilities with the target." + name: "Fähigkeitstausch", + effect: "Anwender tauscht Fähigkeit mit dem Ziel." }, "imprison": { - name: "Imprison", - effect: "If opposing Pokémon know any move also known by the user, they are prevented from using it." + name: "Begrenzer", + effect: "Hindert Gegner am Einsatz von Attacken, die der Anwender selbst auch kennt." }, "refresh": { - name: "Refresh", - effect: "The user rests to cure itself of poisoning, a burn, or paralysis." + name: "Heilung", + effect: "Selbstheilung bei Vergiftung, Paralyse und Verbrennung." }, "grudge": { - name: "Grudge", - effect: "If the user faints, the user's grudge fully depletes the PP of the opponent's move that knocked it out." + name: "Nachspiel", + effect: "Bei K.O. des Anwenders werden die AP der Attacke, durch die er besiegt wurde, auf 0 herabgesetzt." }, "snatch": { - name: "Snatch", - effect: "The user steals the effects of any attempts to use a healing or stat-changing move." + name: "Übernahme", + effect: "Raubt den Effekt eingesetzter heilender oder Werte verändernder Attacken." }, "secretPower": { - name: "Secret Power", - effect: "The additional effects of this attack depend upon where it was used." + name: "Geheimpower", + effect: "Angriff, der abhängig vom Anwendungsort einen unterschiedlichen Zusatz-Effekt hat." }, "dive": { - name: "Dive", - effect: "Diving on the first turn, the user floats up and attacks on the next turn." + name: "Taucher", + effect: "Taucht in Runde 1 ab und greift in Runde 2 aus der Tiefe an." }, "armThrust": { - name: "Arm Thrust", - effect: "The user lets loose a flurry of open-palmed arm thrusts that hit two to five times in a row." + name: "Armstoß", + effect: "Schläge mit geradem Arm, die das Ziel zwei- bis fünfmal treffen." }, "camouflage": { - name: "Camouflage", - effect: "The user's type is changed depending on its environment, such as at water's edge, in grass, or in a cave." + name: "Tarnung", + effect: "Der Typ des Anwenders passt sich der Umgebung an, sei es im Wasser, im Gras oder in einer Höhle." }, "tailGlow": { - name: "Tail Glow", - effect: "The user stares at flashing lights to focus its mind, drastically raising its Sp. Atk stat." + name: "Schweifglanz", + effect: "Ein blinkendes Licht, das den Spezial-Angriff drastisch erhöht." }, "lusterPurge": { - name: "Luster Purge", - effect: "The user lets loose a damaging burst of light. This may also lower the target's Sp. Def stat." + name: "Scheinwerfer", + effect: "Angriff mit grellem Licht, der die Spezial-Verteidigung des Zieles eventuell senkt." }, "mistBall": { - name: "Mist Ball", - effect: "A mist-like flurry of down envelops and damages the target. This may also lower the target's Sp. Atk stat." + name: "Nebelball", + effect: "Angriff mit einer Kugel aus Wasser, die Nebel enthält. Senkt eventuell den Spezial-Angriff des Zieles." }, "featherDance": { - name: "Feather Dance", - effect: "The user covers the target's body with a mass of down that harshly lowers its Attack stat." + name: "Daunenreigen", + effect: "Hüllt das Ziel in Daunen und senkt dessen Angriffs-Wert stark." }, "teeterDance": { - name: "Teeter Dance", - effect: "The user performs a wobbly dance that confuses the Pokémon around it." + name: "Taumeltanz", + effect: "Ein Wackeltanz, der andere Pokémon in der Umgebung des Anwenders verwirrt." }, "blazeKick": { - name: "Blaze Kick", - effect: "The user launches a kick that lands a critical hit more easily. This may also leave the target with a burn." + name: "Feuerfeger", + effect: "Starker Tritt mit hoher Volltrefferquote. Verursacht eventuell Verbrennung." }, "mudSport": { - name: "Mud Sport", - effect: "The user kicks up mud on the battlefield. This weakens Electric-type moves for five turns." + name: "Lehmsuhler", + effect: "Schwächt Elektro-Attacken, solang der Anwender am Kampf teilnimmt." }, "iceBall": { - name: "Ice Ball", - effect: "The user attacks the target for five turns. The move's power increases each time it hits." + name: "Frostbeule", + effect: "Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu." }, "needleArm": { - name: "Needle Arm", - effect: "The user attacks by wildly swinging its thorny arms. This may also make the target flinch." + name: "Nietenranke", + effect: "Angriff mit dornigen Armen. Das Ziel schreckt eventuell zurück." }, "slackOff": { - name: "Slack Off", - effect: "The user slacks off, restoring its own HP by up to half of its max HP." + name: "Tagedieb", + effect: "Durch Müßiggang werden KP des Anwenders um 50 % der maximalen KP aufgefüllt." }, "hyperVoice": { - name: "Hyper Voice", - effect: "The user lets loose a horribly echoing shout with the power to inflict damage." + name: "Schallwelle", + effect: "Laute Attacke mit Schallwellen." }, "poisonFang": { - name: "Poison Fang", - effect: "The user bites the target with toxic fangs. This may also leave the target badly poisoned." + name: "Giftzahn", + effect: "Angriff mit giftigen Reißzähnen. Das Ziel wird eventuell schwer vergiftet." }, "crushClaw": { - name: "Crush Claw", - effect: "The user slashes the target with hard and sharp claws. This may also lower the target's Defense stat." + name: "Zermalmklaue", + effect: "Angriff mit scharfen Klauen. Senkt eventuell den Verteidigungs-Wert." }, "blastBurn": { - name: "Blast Burn", - effect: "The target is razed by a fiery explosion. The user can't move on the next turn." + name: "Lohekanonade", + effect: "Das Ziel wird von starker Explosion getroffen. Angreifer setzt eine Runde aus." }, "hydroCannon": { - name: "Hydro Cannon", - effect: "The target is hit with a watery blast. The user can't move on the next turn." + name: "Aquahaubitze", + effect: "Das Ziel wird von Wasserkanone getroffen. Angreifer setzt eine Runde aus." }, "meteorMash": { - name: "Meteor Mash", - effect: "The target is hit with a hard punch fired like a meteor. This may also raise the user's Attack stat." + name: "Sternenhieb", + effect: "Angriff mit einem harten, schnellen Schlag. Erhöht eventuell Angriffs-Wert des Anwenders." }, "astonish": { - name: "Astonish", - effect: "The user attacks the target while shouting in a startling fashion. This may also make the target flinch." + name: "Erstauner", + effect: "Anwender greift mit einem Schrei an. Ein Angriff, der das Ziel eventuell zurückschrecken lässt." }, "weatherBall": { - name: "Weather Ball", - effect: "This attack move varies in power and type depending on the weather." + name: "Meteorologe", + effect: "Typ und Stärke der Attacke sind vom Wetter zum Zeitpunkt der Anwendung abhängig." }, "aromatherapy": { - name: "Aromatherapy", - effect: "The user releases a soothing scent that heals all status conditions affecting the user's party." + name: "Aromakur", + effect: "Heilt alle Statusprobleme des Teams mit beruhigendem Duft." }, "fakeTears": { - name: "Fake Tears", - effect: "The user feigns crying to fluster the target, harshly lowering its Sp. Def stat." + name: "Trugträne", + effect: "Täuscht Weinen vor, um die Spezial-Verteidigung des Zieles stark zu senken." }, "airCutter": { - name: "Air Cutter", - effect: "The user launches razor-like wind to slash opposing Pokémon. Critical hits land more easily." + name: "Windschnitt", + effect: "Greift mit rasierklingenartigem Wind an. Hohe Volltrefferquote." }, "overheat": { - name: "Overheat", - effect: "The user attacks the target at full power. The attack's recoil harshly lowers the user's Sp. Atk stat." + name: "Hitzekoller", + effect: "Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt." }, "odorSleuth": { - name: "Odor Sleuth", - effect: "Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit." + name: "Schnüffler", + effect: "Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles." }, "rockTomb": { - name: "Rock Tomb", - effect: "Boulders are hurled at the target. This also lowers the target's Speed stat by preventing its movement." + name: "Felsgrab", + effect: "Angriff mit Felsen. Bei Erfolg wird der Initiative-Wert des Zieles gesenkt." }, "silverWind": { - name: "Silver Wind", - effect: "The target is attacked with powdery scales blown by the wind. This may also raise all the user's stats." + name: "Silberhauch", + effect: "Angriff mit Silberstaub. Eventuell werden alle Statuswerte des Anwenders erhöht." }, "metalSound": { - name: "Metal Sound", - effect: "A horrible sound like scraping metal harshly lowers the target's Sp. Def stat." + name: "Metallsound", + effect: "Stößt einen spitzen Schrei aus, der die Spezial-Verteidigung des Zieles stark senkt." }, "grassWhistle": { - name: "Grass Whistle", - effect: "The user plays a pleasant melody that lulls the target into a deep sleep." + name: "Grasflöte", + effect: "Versetzt das Ziel durch eine schöne Melodie in Tiefschlaf." }, "tickle": { - name: "Tickle", - effect: "The user tickles the target into laughing, reducing its Attack and Defense stats." + name: "Spaßkanone", + effect: "Bringt das Ziel zum Lachen und senkt dadurch dessen Angriff und Verteidigung." }, "cosmicPower": { - name: "Cosmic Power", - effect: "The user absorbs a mystical power from space to raise its Defense and Sp. Def stats." + name: "Kosmik-Kraft", + effect: "Erhöht Verteidigung und Spezial-Verteidigung durch eine mystische Kraft." }, "waterSpout": { - name: "Water Spout", - effect: "The user spouts water to damage opposing Pokémon. The lower the user's HP, the lower the move's power." + name: "Fontränen", + effect: "Wasser-Attacke, die wirkungsvoller ist, wenn KP des Anwenders hoch sind." }, "signalBeam": { - name: "Signal Beam", - effect: "The user attacks with a sinister beam of light. This may also confuse the target." + name: "Ampelleuchte", + effect: "Strahlenattacke, die das Ziel eventuell verwirrt." }, "shadowPunch": { - name: "Shadow Punch", - effect: "The user throws a punch from the shadows. This attack never misses." + name: "Finsterfaust", + effect: "Angriff mit der Faust aus dem Schattenreich. Ausweichen unmöglich." }, "extrasensory": { - name: "Extrasensory", - effect: "The user attacks with an odd, unseeable power. This may also make the target flinch." + name: "Sondersensor", + effect: "Besonderer Angriff mit einer unsichtbaren Kraft, die das Ziel eventuell zurückschrecken lässt." }, "skyUppercut": { - name: "Sky Uppercut", - effect: "The user attacks the target with an uppercut thrown skyward with force." + name: "Himmelhieb", + effect: "Kinnhaken, der das Ziel gen Himmel schickt." }, "sandTomb": { - name: "Sand Tomb", - effect: "The user traps the target inside a harshly raging sandstorm for four to five turns." + name: "Sandgrab", + effect: "Das Ziel leidet für vier bis fünf Runden in einer Sandhose." }, "sheerCold": { - name: "Sheer Cold", - effect: "The target faints instantly. It's less likely to hit the target if it's used by Pokémon other than Ice types." + name: "Eiseskälte", + effect: "Angriff mit Kälte, die das Ziel bei Erfolg besiegt." }, "muddyWater": { - name: "Muddy Water", - effect: "The user attacks by shooting muddy water at opposing Pokémon. This may also lower their accuracy." + name: "Lehmbrühe", + effect: "Greift mit Matsch an und senkt eventuell die Genauigkeit des Zieles." }, "bulletSeed": { - name: "Bullet Seed", - effect: "The user forcefully shoots seeds at the target two to five times in a row." + name: "Kugelsaat", + effect: "Der Anwender wirft zwei- bis fünfmal in rascher Folge Samen auf das Ziel." }, "aerialAce": { - name: "Aerial Ace", - effect: "The user confounds the target with speed, then slashes. This attack never misses." + name: "Aero-Ass", + effect: "Eine extrem schnelle Attacke, der das Ziel nicht ausweichen kann." }, "icicleSpear": { - name: "Icicle Spear", - effect: "The user launches sharp icicles at the target two to five times in a row." + name: "Eisspeer", + effect: "Feuert zwei bis fünf Eiszapfen auf das Ziel." }, "ironDefense": { - name: "Iron Defense", - effect: "The user hardens its body's surface like iron, sharply raising its Defense stat." + name: "Eisenabwehr", + effect: "Anwender stärkt den Körper, um den Verteidigungs-Wert stark zu erhöhen." }, "block": { - name: "Block", - effect: "The user blocks the target's way with arms spread wide to prevent escape." + name: "Rückentzug", + effect: "Anwender versperrt den Fluchtweg des Zieles." }, "howl": { - name: "Howl", - effect: "The user howls loudly to raise the spirit of itself and allies. This raises their Attack stats." + name: "Jauler", + effect: "Anwender jault, um seinen Kampfgeist und seinen Angriffs-Wert zu erhöhen." }, "dragonClaw": { - name: "Dragon Claw", - effect: "The user slashes the target with huge sharp claws." + name: "Drachenklaue", + effect: "Das Ziel wird mit riesigen, scharfen Klauen stark verletzt." }, "frenzyPlant": { - name: "Frenzy Plant", - effect: "The user slams the target with the roots of an enormous tree. The user can't move on the next turn." + name: "Flora-Statue", + effect: "Angriff mit dickem Ast. Der Angreifer muss eine Runde aussetzen." }, "bulkUp": { - name: "Bulk Up", - effect: "The user tenses its muscles to bulk up its body, raising both its Attack and Defense stats." + name: "Protzer", + effect: "Pumpt den Körper auf, um den Angriff und die Verteidigung zu erhöhen." }, "bounce": { - name: "Bounce", - effect: "The user bounces up high, then drops on the target on the second turn. This may also leave the target with paralysis." + name: "Sprungfeder", + effect: "Angreifer springt und landet in der nächsten Runde auf dem Ziel. Das Ziel wird eventuell paralysiert." }, "mudShot": { - name: "Mud Shot", - effect: "The user attacks by hurling a blob of mud at the target. This also lowers the target's Speed stat." + name: "Lehmschuss", + effect: "Angriff mit Lehm, der den Initiative-Wert des Zieles senkt." }, "poisonTail": { - name: "Poison Tail", - effect: "The user hits the target with its tail. This may also poison the target. Critical hits land more easily." + name: "Giftschweif", + effect: "Angriff mit hoher Volltrefferquote. Diese Schweifattacke vergiftet das Ziel eventuell." }, "covet": { - name: "Covet", - effect: "The user endearingly approaches the target, then has a 30% chance to steal the target's held item." + name: "Bezirzer", + effect: "Bittet charmant um das getragene Item des Zieles und stiehlt es dann." }, "voltTackle": { - name: "Volt Tackle", - effect: "The user electrifies itself and charges the target. This also damages the user quite a lot. This attack may leave the target with paralysis." + name: "Volttackle", + effect: "Angriff mit Elektro-Tackle. Der Anwender verletzt sich dabei. Das Ziel wird eventuell paralysiert." }, "magicalLeaf": { - name: "Magical Leaf", - effect: "The user scatters curious leaves that chase the target. This attack never misses." + name: "Zauberblatt", + effect: "Magischer Blattangriff, dem nicht auszuweichen ist." }, "waterSport": { - name: "Water Sport", - effect: "The user soaks the battlefield with water. This weakens Fire-type moves for five turns." + name: "Nassmacher", + effect: "Der Anwender lässt Wasser herabregnen und schwächt damit fünf Runden lang Feuer-Attacken." }, "calmMind": { - name: "Calm Mind", - effect: "The user quietly focuses its mind and calms its spirit to raise its Sp. Atk and Sp. Def stats." + name: "Gedankengut", + effect: "Erhöht Spezial-Angriff und Spezial-Verteidigung durch Konzentration." }, "leafBlade": { - name: "Leaf Blade", - effect: "The user handles a sharp leaf like a sword and attacks by cutting its target. Critical hits land more easily." + name: "Laubklinge", + effect: "Hieb mit scharfkantigem Blatt. Hohe Volltrefferquote." }, "dragonDance": { - name: "Dragon Dance", - effect: "The user vigorously performs a mystic, powerful dance that raises its Attack and Speed stats." + name: "Drachentanz", + effect: "Ein mystischer Tanz, der den Angriffs- und Initiative-Wert erhöht." }, "rockBlast": { - name: "Rock Blast", - effect: "The user hurls hard rocks at the target. Two to five rocks are launched in a row." + name: "Felswurf", + effect: "Wirft zwei- bis fünfmal in Folge Felsblöcke auf das Ziel." }, "shockWave": { - name: "Shock Wave", - effect: "The user strikes the target with a quick jolt of electricity. This attack never misses." + name: "Schockwelle", + effect: "Angriff mit schnellem Elektro-Schlag. Ausweichen nicht möglich." }, "waterPulse": { - name: "Water Pulse", - effect: "The user attacks the target with a pulsing blast of water. This may also confuse the target." + name: "Aquawelle", + effect: "Angriff mit Wasserwelle, die das Ziel eventuell verwirren kann." }, "doomDesire": { - name: "Doom Desire", - effect: "Two turns after this move is used, a concentrated bundle of light blasts the target." + name: "Kismetwunsch", + effect: "Angriff mit gebündeltem Licht erfolgt zwei Runden nach Attackeneinsatz." }, "psychoBoost": { - name: "Psycho Boost", - effect: "The user attacks the target at full power. The attack's recoil harshly lowers the user's Sp. Atk stat." + name: "Psyschub", + effect: "Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt." }, "roost": { - name: "Roost", - effect: "The user lands and rests its body. This move restores the user's HP by up to half of its max HP." + name: "Ruheort", + effect: "Anwender landet und ruht sich aus. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." }, "gravity": { - name: "Gravity", - effect: "This move enables Flying-type Pokémon or Pokémon with the Levitate Ability to be hit by Ground-type moves. Moves that involve flying can't be used." + name: "Erdanziehung", + effect: "Die Gravitation wird für fünf Runden erhöht. Macht Fliegen unmöglich und verhindert Schwebe." }, "miracleEye": { - name: "Miracle Eye", - effect: "Enables a Dark-type target to be hit by Psychic-type attacks. This also enables an evasive target to be hit." + name: "Wunderauge", + effect: "Erlaubt es, Unlicht-Pokémon mit Psycho-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles." }, "wakeUpSlap": { - name: "Wake-Up Slap", - effect: "This attack inflicts big damage on a sleeping target. This also wakes the target up, however." + name: "Weckruf", + effect: "Richtet großen Schaden bei einem schlafenden Ziel an, weckt es aber auch auf." }, "hammerArm": { - name: "Hammer Arm", - effect: "The user swings and hits with its strong, heavy fist. It lowers the user's Speed, however." + name: "Hammerarm", + effect: "Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders." }, "gyroBall": { - name: "Gyro Ball", - effect: "The user tackles the target with a high-speed spin. The slower the user compared to the target, the greater the move's power." + name: "Gyroball", + effect: "Angriff mit hoher Geschwindigkeit. Je niedriger die Initiative des Anwenders, desto höher der Schaden." }, "healingWish": { - name: "Healing Wish", - effect: "The user faints. In return, the Pokémon taking its place will have its HP restored and status conditions cured." + name: "Heilopfer", + effect: "Anwender geht K.O. Das an seine Stelle tretende Pokémon hat volle KP. Statusprobleme werden geheilt." }, "brine": { - name: "Brine", - effect: "If the target's HP is half or less, this attack will hit with double the power." + name: "Lake", + effect: "Hat das Ziel die Hälfte oder weniger seiner maximalen KP, trifft diese Attacke mit doppelter Kraft." }, "naturalGift": { - name: "Natural Gift", - effect: "The user draws power to attack by using its held Berry. The Berry determines the move's type and power." + name: "Beerenkräfte", + effect: "Anwender zieht aus seiner derzeitigen Beere Kraft. Sie bestimmt Typ und Stärke der Attacke." }, "feint": { - name: "Feint", - effect: "This attack hits a target using a move such as Protect or Detect. This also lifts the effects of those moves." + name: "Offenlegung", + effect: "Ziele, die Schutzschild oder Scanner verwenden, werden getroffen. Entfernt Effekte dieser Attacken." }, "pluck": { - name: "Pluck", - effect: "The user pecks the target. If the target is holding a Berry, the user eats it and gains its effect." + name: "Pflücker", + effect: "Anwender pickt das Ziel, nimmt die Beere, falls das Ziel eine trägt, und erhält ihren Effekt." }, "tailwind": { - name: "Tailwind", - effect: "The user whips up a turbulent whirlwind that ups the Speed stats of the user and its allies for four turns." + name: "Rückenwind", + effect: "Anwender erzeugt einen Wirbelwind, der die Initiative aller Pokémon im Team für vier Runden steigert." }, "acupressure": { - name: "Acupressure", - effect: "The user applies pressure to stress points, sharply boosting one of its or its allies' stats." + name: "Akupressur", + effect: "Anwender erhöht Druck auf Stresspunkte und steigert einen Statuswert stark." }, "metalBurst": { - name: "Metal Burst", - effect: "The user retaliates with much greater force against the opponent that last inflicted damage on it." + name: "Metallstoß", + effect: "Attacke mit großer Kraft gegen das Ziel, das dem Anwender in derselben Runde zuletzt Schaden zufügte." }, "uTurn": { - name: "U-turn", - effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting." + name: "Kehrtwende", + effect: "Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon." }, "closeCombat": { - name: "Close Combat", - effect: "The user fights the target up close without guarding itself. This also lowers the user's Defense and Sp. Def stats." + name: "Nahkampf", + effect: "Nahkampf-Attacke ohne Rücksicht auf Verluste. Senkt Verteidigung und Spezial-Verteidigung des Anwenders." }, "payback": { - name: "Payback", - effect: "The user stores power, then attacks. If the user moves after the target, this attack's power will be doubled." + name: "Gegenstoß", + effect: "Der Anwender lädt die Attacke auf. Handelt das Ziel vor dem Anwender, verdoppelt sich die Kraft der Attacke." }, "assurance": { - name: "Assurance", - effect: "If the target has already taken some damage in the same turn, this attack's power is doubled." + name: "Gewissheit", + effect: "Hat das Ziel während der Runde schon Schaden genommen, wird die Kraft der Attacke verdoppelt." }, "embargo": { - name: "Embargo", - effect: "This move prevents the target from using its held item for five turns. Its Trainer is also prevented from using items on it." + name: "Itemsperre", + effect: "Verhindert, dass auf das Ziel Items verwendet werden." }, "fling": { - name: "Fling", - effect: "The user flings its held item at the target to attack. This move's power and effects depend on the item." + name: "Schleuder", + effect: "Anwender schleudert sein Item auf das Ziel. Kraft und Effekt der Attacke hängen vom Item ab." }, "psychoShift": { - name: "Psycho Shift", - effect: "Using its psychic power of suggestion, the user transfers its status conditions to the target." + name: "Psybann", + effect: "Anwender nutzt seine Suggestivkräfte, um eigene Statusprobleme auf das Ziel zu transferieren." }, "trumpCard": { - name: "Trump Card", - effect: "The fewer PP this move has, the greater its power." + name: "Trumpfkarte", + effect: "Je weniger AP diese Attacke hat, desto mehr Angriffskraft besitzt sie." }, "healBlock": { - name: "Heal Block", - effect: "For five turns, the user prevents the opposing team from using any moves, Abilities, or held items that recover HP." + name: "Heilblockade", + effect: "Anwender verhindert für fünf Runden, dass Ziele durch Attacken, Fähigkeiten oder Items KP regenerieren." }, "wringOut": { - name: "Wring Out", - effect: "The user powerfully wrings the target. The more HP the target has, the greater the move's power." + name: "Auswringen", + effect: "Anwender presst sein Ziel aus. Je höher die KP des Zieles, desto kraftvoller die Attacke." }, "powerTrick": { - name: "Power Trick", - effect: "The user employs its psychic power to switch its Attack stat with its Defense stat." + name: "Krafttrick", + effect: "Anwender setzt Psycho-Kräfte ein, um eigenen Angriffs- mit Verteidigungs-Wert auszutauschen." }, "gastroAcid": { - name: "Gastro Acid", - effect: "The user hurls up its stomach acids on the target. The fluid eliminates the effect of the target's Ability." + name: "Magensäfte", + effect: "Anwender greift das Ziel mit eigenen Magensäften an. Entfernt Effekte von dessen Fähigkeit." }, "luckyChant": { - name: "Lucky Chant", - effect: "The user chants an incantation toward the sky, preventing opposing Pokémon from landing critical hits for five turns." + name: "Beschwörung", + effect: "Anwender singt eine Beschwörungsformel, die Volltreffer gegen ihn verhindert." }, "meFirst": { - name: "Me First", - effect: "The user cuts ahead of the target to copy and use the target's intended move with greater power. This move fails if it isn't used first." + name: "Egotrip", + effect: "Anwender stiehlt und führt die Attacke eines langsameren Zieles zuerst und mit größerer Kraft aus." }, "copycat": { - name: "Copycat", - effect: "The user mimics the move used immediately before it. The move fails if no other move has been used yet." + name: "Imitator", + effect: "Anwender imitiert gerade verwendete Attacke. Dies schlägt fehl, falls zuvor keine Attacke verwendet wurde." }, "powerSwap": { - name: "Power Swap", - effect: "The user employs its psychic power to switch changes to its Attack and Sp. Atk stats with the target." + name: "Krafttausch", + effect: "Psychische Kräfte tauschen Änderungen an Angriff und Spezial-Angriff mit denen des Zieles." }, "guardSwap": { - name: "Guard Swap", - effect: "The user employs its psychic power to switch changes to its Defense and Sp. Def stats with the target." + name: "Schutztausch", + effect: "Psychische Kräfte tauschen Änderungen an Verteidigung und Spezial-Verteidigung mit denen des Zieles." }, "punishment": { - name: "Punishment", - effect: "The more the target has powered up with stat changes, the greater the move's power." + name: "Strafattacke", + effect: "Je stärker das Ziel durch Statusveränderungen ist, desto stärker wirkt diese Attacke." }, "lastResort": { - name: "Last Resort", - effect: "This move can be used only after the user has used all the other moves it knows in the battle." + name: "Zuflucht", + effect: "Diese Attacke kann nur eingesetzt werden, nachdem alle verfügbaren Attacken ausgeführt worden sind." }, "worrySeed": { - name: "Worry Seed", - effect: "A seed that causes worry is planted on the target. It prevents sleep by making the target's Ability Insomnia." + name: "Sorgensamen", + effect: "Ziel wird bepflanzt. Wandelt Fähigkeit in Insomnia um. Verhindert so Schlaf." }, "suckerPunch": { - name: "Sucker Punch", - effect: "This move enables the user to attack first. This move fails if the target is not readying an attack." + name: "Tiefschlag", + effect: "Ermöglicht den Erstschlag. Gelingt aber nur, wenn das Ziel gerade eine Attacke vorbereitet." }, "toxicSpikes": { - name: "Toxic Spikes", - effect: "The user lays a trap of poison spikes at the feet of the opposing team. The spikes will poison opposing Pokémon that switch into battle." + name: "Giftspitzen", + effect: "Anwender legt eine Falle mit Giftdornen aus. In den Kampf eingewechselte gegnerische Pokémon werden vergiftet." }, "heartSwap": { - name: "Heart Swap", - effect: "The user employs its psychic power to switch stat changes with the target." + name: "Statustausch", + effect: "Anwender setzt Psycho-Kräfte ein, um Statusveränderungen des Zieles mit den eigenen zu tauschen." }, "aquaRing": { - name: "Aqua Ring", - effect: "The user envelops itself in a veil made of water. It regains some HP every turn." + name: "Wasserring", + effect: "Anwender umgibt sich mit einem Schleier aus Wasser. Dabei regeneriert er einige KP pro Runde." }, "magnetRise": { - name: "Magnet Rise", - effect: "The user levitates using electrically generated magnetism for five turns." + name: "Magnetflug", + effect: "Anwender schwebt für fünf Runden durch elektrisch erzeugten Magnetismus." }, "flareBlitz": { - name: "Flare Blitz", - effect: "The user cloaks itself in fire and charges the target. This also damages the user quite a lot. This attack may leave the target with a burn." + name: "Flammenblitz", + effect: "Anwender hüllt sich in Flammen und stürmt auf das Ziel zu, das sich eventuell verbrennt. Anwender nimmt selbst großen Schaden." }, "forcePalm": { - name: "Force Palm", - effect: "The target is attacked with a shock wave. This may also leave the target with paralysis." + name: "Kraftwelle", + effect: "Das Ziel wird mit einer Schockwelle angegriffen, die es eventuell paralysiert." }, "auraSphere": { - name: "Aura Sphere", - effect: "The user lets loose a blast of aura power from deep within its body at the target. This attack never misses." + name: "Aurasphäre", + effect: "Tief aus dem Inneren des Anwenders löst sich ein kraftvoller Stoß Auraenergie. Trifft in jedem Fall." }, "rockPolish": { - name: "Rock Polish", - effect: "The user polishes its body to reduce drag. This sharply raises the Speed stat." + name: "Steinpolitur", + effect: "Anwender reduziert so gut wie möglich den Luftwiderstand. Kann Initiative-Wert stark steigern." }, "poisonJab": { - name: "Poison Jab", - effect: "The target is stabbed with a tentacle, arm, or the like steeped in poison. This may also poison the target." + name: "Gifthieb", + effect: "Ziel wird mit vergiftetem Arm oder Tentakel verletzt. Es wird dabei eventuell vergiftet." }, "darkPulse": { - name: "Dark Pulse", - effect: "The user releases a horrible aura imbued with dark thoughts. This may also make the target flinch." + name: "Finsteraura", + effect: "Anwender greift mit fürchterlicher Aura schlechter Gedanken an. Ziel schreckt eventuell zurück." }, "nightSlash": { - name: "Night Slash", - effect: "The user slashes the target the instant an opportunity arises. Critical hits land more easily." + name: "Nachthieb", + effect: "Anwender greift bei der ersten Gelegenheit mit scharfen Klauen an. Hohe Volltrefferquote." }, "aquaTail": { - name: "Aqua Tail", - effect: "The user attacks by swinging its tail as if it were a vicious wave in a raging storm." + name: "Nassschweif", + effect: "Anwender attackiert mit dem Schweif, als ob dieser eine brutale Welle in einem tosenden Sturm sei." }, "seedBomb": { - name: "Seed Bomb", - effect: "The user slams a barrage of hard-shelled seeds down on the target from above." + name: "Samenbomben", + effect: "Anwender lässt eine Menge Samen mit harter Schale von oben auf das Ziel fallen." }, "airSlash": { - name: "Air Slash", - effect: "The user attacks with a blade of air that slices even the sky. This may also make the target flinch." + name: "Luftschnitt", + effect: "Das Ziel wird mit einer Luftklinge angegriffen. Ziel schreckt eventuell zurück." }, "xScissor": { - name: "X-Scissor", - effect: "The user slashes at the target by crossing its scythes or claws as if they were a pair of scissors." + name: "Kreuzschere", + effect: "Der Anwender führt eine Attacke aus, die einer Scherenbewegung ähnelt." }, "bugBuzz": { - name: "Bug Buzz", - effect: "The user generates a damaging sound wave by vibration. This may also lower the target's Sp. Def stat." + name: "Käfergebrumm", + effect: "Anwender schlägt mit den Flügeln und erzeugt eine Schockwelle. Senkt eventuell Spezial-Verteidigung des Zieles." }, "dragonPulse": { - name: "Dragon Pulse", - effect: "The target is attacked with a shock wave generated by the user's gaping mouth." + name: "Drachenpuls", + effect: "Das Ziel wird mit einer Schockwelle angegriffen, die aus dem offenen Maul des Anwenders kommt." }, "dragonRush": { - name: "Dragon Rush", - effect: "The user tackles the target while exhibiting overwhelming menace. This may also make the target flinch." + name: "Drachenstoß", + effect: "Anwender führt einen gefährlichen Angriff aus. Das Ziel schreckt eventuell zurück." }, "powerGem": { - name: "Power Gem", - effect: "The user attacks with a ray of light that sparkles as if it were made of gemstones." + name: "Juwelenkraft", + effect: "Anwender attackiert mit einem Lichtstrahl, der funkelt, als sei er aus Juwelen." }, "drainPunch": { - name: "Drain Punch", - effect: "An energy-draining punch. The user's HP is restored by half the damage taken by the target." + name: "Ableithieb", + effect: "Entzieht dem Ziel Energie. Die Hälfte des Schadens wird den KP des Anwenders zugerechnet." }, "vacuumWave": { - name: "Vacuum Wave", - effect: "The user whirls its fists to send a wave of pure vacuum at the target. This move always goes first." + name: "Vakuumwelle", + effect: "Ein Faustwirbel sendet eine Vakuumwelle auf das Ziel. Erstschlaggarantie." }, "focusBlast": { - name: "Focus Blast", - effect: "The user heightens its mental focus and unleashes its power. This may also lower the target's Sp. Def stat." + name: "Fokusstoß", + effect: "Anwender erhöht seinen mentalen Fokus und greift dann an. Senkt eventuell Spezial-Verteidigung des Zieles." }, "energyBall": { - name: "Energy Ball", - effect: "The user draws power from nature and fires it at the target. This may also lower the target's Sp. Def stat." + name: "Energieball", + effect: "Anwender zieht Kraft aus der Natur und feuert sie auf das Ziel. Senkt eventuell Spezial-Verteidigung des Zieles." }, "braveBird": { - name: "Brave Bird", - effect: "The user tucks in its wings and charges from a low altitude. This also damages the user quite a lot." + name: "Sturzflug", + effect: "Anwender greift aus niedriger Höhe an. Er erleidet bei dieser Attacke selbst großen Schaden." }, "earthPower": { - name: "Earth Power", - effect: "The user makes the ground under the target erupt with power. This may also lower the target's Sp. Def stat." + name: "Erdkräfte", + effect: "Der Boden unter dem Ziel erzittert durch die Kraft der Erde. Senkt eventuell Spezial-Verteidigung." }, "switcheroo": { - name: "Switcheroo", - effect: "The user trades held items with the target faster than the eye can follow." + name: "Wechseldich", + effect: "Item wird in Windeseile mit dem Ziel getauscht." }, "gigaImpact": { - name: "Giga Impact", - effect: "The user charges at the target using every bit of its power. The user can't move on the next turn." + name: "Gigastoß", + effect: "Anwender rennt mit seiner ganzen Kraft gegen das Ziel an und muss dann eine Runde ruhen." }, "nastyPlot": { - name: "Nasty Plot", - effect: "The user stimulates its brain by thinking bad thoughts. This sharply raises the user's Sp. Atk stat." + name: "Ränkeschmied", + effect: "Anwender stimuliert sein Gehirn und hat finstere Gedanken. Steigert Spezial-Angriff stark." }, "bulletPunch": { - name: "Bullet Punch", - effect: "The user strikes the target with tough punches as fast as bullets. This move always goes first." + name: "Patronenhieb", + effect: "Das Ziel wird von ultraschnellen Hieben getroffen. Erstschlaggarantie." }, "avalanche": { - name: "Avalanche", - effect: "The power of this attack move is doubled if the user has been hurt by the target in the same turn." + name: "Lawine", + effect: "Wurde der Anwender in dieser Runde vom Ziel getroffen, macht diese Attacke doppelten Schaden." }, "iceShard": { - name: "Ice Shard", - effect: "The user flash-freezes chunks of ice and hurls them at the target. This move always goes first." + name: "Eissplitter", + effect: "Das Ziel wird mit Eisklumpen beworfen. Diese Attacke hat Erstschlaggarantie." }, "shadowClaw": { - name: "Shadow Claw", - effect: "The user slashes with a sharp claw made from shadows. Critical hits land more easily." + name: "Dunkelklaue", + effect: "Das Ziel wird mit scharfen Klauen aus der Schattenwelt attackiert. Hohe Volltrefferquote." }, "thunderFang": { - name: "Thunder Fang", - effect: "The user bites with electrified fangs. This may also make the target flinch or leave it with paralysis." + name: "Donnerzahn", + effect: "Anwender beißt mit elektrifizierten Reißzähnen zu. Das Ziel schreckt eventuell zurück oder wird paralysiert." }, "iceFang": { - name: "Ice Fang", - effect: "The user bites with cold-infused fangs. This may also make the target flinch or leave it frozen." + name: "Eiszahn", + effect: "Anwender beißt mit eiskalten Reißzähnen zu. Ziel schreckt eventuell zurück oder friert ein." }, "fireFang": { - name: "Fire Fang", - effect: "The user bites with flame-cloaked fangs. This may also make the target flinch or leave it with a burn." + name: "Feuerzahn", + effect: "Anwender beißt mit flammenden Reißzähnen zu. Ziel schreckt eventuell zurück oder verbrennt sich." }, "shadowSneak": { - name: "Shadow Sneak", - effect: "The user extends its shadow and attacks the target from behind. This move always goes first." + name: "Schattenstoß", + effect: "Anwender erweitert Schatten und greift das Ziel von hinten an. Erstschlaggarantie." }, "mudBomb": { - name: "Mud Bomb", - effect: "The user launches a hard-packed mud ball to attack. This may also lower the target's accuracy." + name: "Schlammbombe", + effect: "Anwender greift mit einem festen Schlammklumpen an. Senkt eventuell Genauigkeit des Zieles." }, "psychoCut": { - name: "Psycho Cut", - effect: "The user tears at the target with blades formed by psychic power. Critical hits land more easily." + name: "Psychoklinge", + effect: "Das Ziel wird mit Klingen attackiert, die aus Psycho-Energie bestehen. Hohe Volltrefferquote." }, "zenHeadbutt": { - name: "Zen Headbutt", - effect: "The user focuses its willpower to its head and attacks the target. This may also make the target flinch." + name: "Zen-Kopfstoß", + effect: "Anwender konzentriert seinen Willen und rammt das Ziel. Dieses schreckt eventuell zurück." }, "mirrorShot": { - name: "Mirror Shot", - effect: "The user lets loose a flash of energy at the target from its polished body. This may also lower the target's accuracy." + name: "Spiegelsalve", + effect: "Anwender feuert Energiestrahl aus seinem Körper ab. Senkt eventuell Genauigkeit des Zieles." }, "flashCannon": { - name: "Flash Cannon", - effect: "The user gathers all its light energy and releases it all at once. This may also lower the target's Sp. Def stat." + name: "Lichtkanone", + effect: "Anwender sammelt Lichtenergie und feuert sie auf einmal ab. Senkt eventuell Spezial-Verteidigung des Zieles." }, "rockClimb": { - name: "Rock Climb", - effect: "The user attacks the target by smashing into it with incredible force. This may also confuse the target." + name: "Kraxler", + effect: "Eine stürmische Attacke, die das Ziel eventuell verwirrt." }, "defog": { - name: "Defog", - effect: "A strong wind blows away the target's barriers such as Reflect or Light Screen. This also lowers the target's evasiveness." + name: "Auflockern", + effect: "Starker Wind hebt Attacken wie Reflektor und Lichtschild des Zieles auf. Senkt außerdem den Fluchtwert." }, "trickRoom": { - name: "Trick Room", - effect: "The user creates a bizarre area in which slower Pokémon get to move first for five turns." + name: "Bizarroraum", + effect: "Anwender erzeugt einen bizarren Raum, in dem langsame Pokémon fünf Runden lang zuerst agieren." }, "dracoMeteor": { name: "Draco Meteor", - effect: "Comets are summoned down from the sky onto the target. The attack's recoil harshly lowers the user's Sp. Atk stat." + effect: "Kometen werden heraufbeschworen. Der Rückstoß reduziert den Spezial-Angriff des Anwenders stark." }, "discharge": { - name: "Discharge", - effect: "The user strikes everything around it by letting loose a flare of electricity. This may also cause paralysis." + name: "Ladungsstoß", + effect: "Anwender greift alle Pokémon im Umkreis mit Elektrizität an. Diese werden eventuell auch paralysiert." }, "lavaPlume": { - name: "Lava Plume", - effect: "The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn." + name: "Flammensturm", + effect: "Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden." }, "leafStorm": { - name: "Leaf Storm", - effect: "The user whips up a storm of leaves around the target. The attack's recoil harshly lowers the user's Sp. Atk stat." + name: "Blättersturm", + effect: "Anwender erzeugt einen Sturm aus scharfen Blättern. Rückstoß senkt Spezial-Angriff des Anwenders stark." }, "powerWhip": { - name: "Power Whip", - effect: "The user violently whirls its vines, tentacles, or the like to harshly lash the target." + name: "Blattgeißel", + effect: "Anwender wirbelt seine Ranken oder Tentakel peitschenartig gegen das Ziel." }, "rockWrecker": { - name: "Rock Wrecker", - effect: "The user launches a huge boulder at the target to attack. The user can't move on the next turn." + name: "Felswerfer", + effect: "Anwender wirft einen riesigen Felsen auf das Ziel. In der nächsten Runde muss der Anwender ruhen." }, "crossPoison": { - name: "Cross Poison", - effect: "A slashing attack with a poisonous blade that may also poison the target. Critical hits land more easily." + name: "Giftstreich", + effect: "Ein schneidender Hieb, der das Ziel eventuell vergiftet. Hat eine hohe Volltrefferquote." }, "gunkShot": { - name: "Gunk Shot", - effect: "The user shoots filthy garbage at the target to attack. This may also poison the target." + name: "Mülltreffer", + effect: "Anwender schießt mit Müll auf das Ziel. Vergiftet dieses eventuell." }, "ironHead": { - name: "Iron Head", - effect: "The user slams the target with its steel-hard head. This may also make the target flinch." + name: "Eisenschädel", + effect: "Ziel wird durch stahlharten Kopf des Anwenders getroffen und schreckt eventuell zurück." }, "magnetBomb": { - name: "Magnet Bomb", - effect: "The user launches steel bombs that stick to the target. This attack never misses." + name: "Magnetbombe", + effect: "Ziel wird durch Haftbomben getroffen. Diese Attacke trifft immer." }, "stoneEdge": { - name: "Stone Edge", - effect: "The user stabs the target from below with sharpened stones. Critical hits land more easily." + name: "Steinkante", + effect: "Anwender sticht das Ziel mit spitzen Steinen. Hohe Volltrefferquote." }, "captivate": { - name: "Captivate", - effect: "If any opposing Pokémon is the opposite gender of the user, it is charmed, which harshly lowers its Sp. Atk stat." + name: "Liebreiz", + effect: "Charme-Attacke, die den Spezial-Angriff des Zieles stark senkt, falls es dem anderen Geschlecht angehört." }, "stealthRock": { - name: "Stealth Rock", - effect: "The user lays a trap of levitating stones around the opposing team. The trap hurts opposing Pokémon that switch into battle." + name: "Tarnsteine", + effect: "Falle mit schwebenden Steinen. In den Kampf eingewechselte Ziele nehmen Schaden." }, "grassKnot": { - name: "Grass Knot", - effect: "The user snares the target with grass and trips it. The heavier the target, the greater the move's power." + name: "Strauchler", + effect: "Ziel wird durch Gras ins Straucheln gebracht. Je schwerer das Ziel, desto mehr Schaden." }, "chatter": { - name: "Chatter", - effect: "The user attacks the target with sound waves of deafening chatter. This confuses the target." + name: "Geschwätz", + effect: "Attacke mit Schallwellen. Verwirrt das Ziel." }, "judgment": { - name: "Judgment", - effect: "The user releases countless shots of light at the target. This move's type varies depending on the kind of Plate the user is holding." + name: "Urteilskraft", + effect: "Anwender feuert unzählige Lichtstrahlen ab. Deren Typ hängt von der gehaltenen Tafel ab." }, "bugBite": { - name: "Bug Bite", - effect: "The user bites the target. If the target is holding a Berry, the user eats it and gains its effect." + name: "Käferbiss", + effect: "Anwender beißt das Ziel. Trägt dieses eine Beere, isst der Anwender sie und erhält ihren Effekt." }, "chargeBeam": { - name: "Charge Beam", - effect: "The user attacks the target with an electric charge. The user may use any remaining electricity to raise its Sp. Atk stat." + name: "Ladestrahl", + effect: "Ziel wird von einem Elektrostrahl getroffen. Steigert eventuell Spezial-Angriff des Anwenders." }, "woodHammer": { - name: "Wood Hammer", - effect: "The user slams its rugged body into the target to attack. This also damages the user quite a lot." + name: "Holzhammer", + effect: "Anwender attackiert mit seinem robusten Körper. Er erleidet dabei auch selbst großen Schaden." }, "aquaJet": { - name: "Aqua Jet", - effect: "The user lunges at the target at a speed that makes it almost invisible. This move always goes first." + name: "Wasserdüse", + effect: "Bei dieser Erstschlag-Attacke stürzt sich der Anwender so schnell auf das Ziel, dass er quasi unsichtbar wird." }, "attackOrder": { - name: "Attack Order", - effect: "The user calls out its underlings to pummel the target. Critical hits land more easily." + name: "Schlagbefehl", + effect: "Anwender ruft seine Untergebenen zum Angriff. Hat eine hohe Volltrefferquote." }, "defendOrder": { - name: "Defend Order", - effect: "The user calls out its underlings to shield its body, raising its Defense and Sp. Def stats." + name: "Blockbefehl", + effect: "Untergebene bilden einen lebenden Schild um den Anwender. Steigert Verteidigung und Spezial-Verteidigung." }, "healOrder": { - name: "Heal Order", - effect: "The user calls out its underlings to heal it. The user regains up to half of its max HP." + name: "Heilbefehl", + effect: "Untergebene heilen den Anwender. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." }, "headSmash": { - name: "Head Smash", - effect: "The user attacks the target with a hazardous, full-power headbutt. This also damages the user terribly." + name: "Kopfstoß", + effect: "Anwender greift unter Einsatz seines Lebens mit einem Kopfstoß an und nimmt dabei selbst jede Menge Schaden." }, "doubleHit": { - name: "Double Hit", - effect: "The user slams the target with a long tail, vines, or a tentacle. The target is hit twice in a row." + name: "Doppelschlag", + effect: "Anwender trifft das Ziel mit dem Schweif oder Ähnlichem. Ziel wird doppelt getroffen." }, "roarOfTime": { - name: "Roar of Time", - effect: "The user blasts the target with power that distorts even time. The user can't move on the next turn." + name: "Zeitenlärm", + effect: "Anwender attackiert mit einer Kraft, die selbst die Zeit verzerrt. In der nächsten Runde muss er ruhen." }, "spacialRend": { - name: "Spacial Rend", - effect: "The user tears the target along with the space around it. Critical hits land more easily." + name: "Raumschlag", + effect: "Schwere, raumgreifende Attacke. Hohe Volltrefferquote." }, "lunarDance": { - name: "Lunar Dance", - effect: "The user faints. In return, the Pokémon taking its place will have its status and HP fully restored." + name: "Lunartanz", + effect: "Anwender geht K.O. Das an seine Stelle tretende Pokémon hat dafür volle KP und AP. Statusprobleme werden geheilt." }, "crushGrip": { - name: "Crush Grip", - effect: "The target is crushed with great force. The more HP the target has left, the greater this move's power." + name: "Quetschgriff", + effect: "Ziel wird mit großer Kraft getroffen. Je höher die KP des Zieles, desto stärker die Attacke." }, "magmaStorm": { - name: "Magma Storm", - effect: "The target becomes trapped within a maelstrom of fire that rages for four to five turns." + name: "Lavasturm", + effect: "Das Ziel wird in einen Feuersog gezogen, der vier bis fünf Runden aktiv ist." }, "darkVoid": { - name: "Dark Void", - effect: "Opposing Pokémon are dragged into a world of total darkness that makes them sleep." + name: "Schlummerort", + effect: "Das Ziel wird in eine Welt der Dunkelheit gezogen und in Schlaf versetzt." }, "seedFlare": { - name: "Seed Flare", - effect: "The user emits a shock wave from its body to attack its target. This may also harshly lower the target's Sp. Def stat." + name: "Schocksamen", + effect: "Anwender erzeugt eine Schockwelle. Spezial-Verteidigung des Zieles wird stark gesenkt." }, "ominousWind": { - name: "Ominous Wind", - effect: "The user blasts the target with a gust of repulsive wind. This may also raise all the user's stats at once." + name: "Unheilböen", + effect: "Das Ziel treffen abscheuliche Winde. Steigert eventuell alle Statuswerte des Anwenders." }, "shadowForce": { - name: "Shadow Force", - effect: "The user disappears, then strikes the target on the next turn. This move hits even if the target protects itself." + name: "Schemenkraft", + effect: "Anwender verschwindet in Runde 1 und attackiert in Runde 2. Trifft auch, wenn sich das Ziel selbst schützt." }, "honeClaws": { - name: "Hone Claws", - effect: "The user sharpens its claws to boost its Attack stat and accuracy." + name: "Klauenwetzer", + effect: "Wetzt seine Klauen, um sie zu schärfen. Erhöht Angriff und Genauigkeit des Anwenders." }, "wideGuard": { - name: "Wide Guard", - effect: "The user and its allies are protected from wide-ranging attacks for one turn." + name: "Rundumschutz", + effect: "Schützt eine Runde lang vor Angriffen, die alle Pokémon auf deiner Seite treffen." }, "guardSplit": { - name: "Guard Split", - effect: "The user employs its psychic power to average its Defense and Sp. Def stats with those of the target." + name: "Schutzteiler", + effect: "Durch Psycho-Kräfte werden Verteidigung und Spezial-Verteidigung des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt." }, "powerSplit": { - name: "Power Split", - effect: "The user employs its psychic power to average its Attack and Sp. Atk stats with those of the target." + name: "Kraftteiler", + effect: "Durch Psycho-Kräfte werden Angriff und Spezial-Angriff des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt." }, "wonderRoom": { - name: "Wonder Room", - effect: "The user creates a bizarre area in which Pokémon's Defense and Sp. Def stats are swapped for five turns." + name: "Wunderraum", + effect: "Anwender erzeugt bizarren Raum, in dem über fünf Runden die Verteidigung aller Pokémon mit ihrer Spezial-Verteidigung getauscht wird." }, "psyshock": { - name: "Psyshock", - effect: "The user materializes an odd psychic wave to attack the target. This attack does physical damage." + name: "Psychoschock", + effect: "Anwender erzeugt eine seltsame Energiewelle, die dem Ziel physischen Schaden zufügt." }, "venoshock": { - name: "Venoshock", - effect: "The user drenches the target in a special poisonous liquid. This move's power is doubled if the target is poisoned." + name: "Giftschock", + effect: "Überschüttet das Ziel mit einer speziellen toxischen Flüssigkeit. Doppelt so stark gegen vergiftete Ziele." }, "autotomize": { - name: "Autotomize", - effect: "The user sheds part of its body to make itself lighter and sharply raise its Speed stat." + name: "Autotomie", + effect: "Anwender trennt sich von überflüssigen Körperteilen und steigert seine Initiative stark. Sein Gewicht nimmt deutlich ab." }, "ragePowder": { - name: "Rage Powder", - effect: "The user scatters a cloud of irritating powder to draw attention to itself. Opposing Pokémon aim only at the user." + name: "Wutpulver", + effect: "Anwender zieht gegnerische Aufmerksamkeit und Angriffe auf sich, indem er ein Wut erzeugendes Pulver über sich streut." }, "telekinesis": { - name: "Telekinesis", - effect: "The user makes the target float with its psychic power. The target is easier to hit for three turns." + name: "Telekinese", + effect: "Bringt das Ziel durch Psycho-Kräfte zum Schweben. Dieses lässt sich so über drei Runden hinweg besonders leicht treffen." }, "magicRoom": { - name: "Magic Room", - effect: "The user creates a bizarre area in which Pokémon's held items lose their effects for five turns." + name: "Magieraum", + effect: "Anwender erzeugt einen bizarren Raum, in dem über fünf Runden die Wirkung aller von Pokémon getragenen Items aufgehoben ist." }, "smackDown": { - name: "Smack Down", - effect: "The user throws a stone or similar projectile to attack the target. A flying Pokémon will fall to the ground when it's hit." + name: "Katapult", + effect: "Greift das Ziel mit Steinen und Wurfgeschossen an. Fliegende Ziele fallen dabei vom Himmel und landen auf dem Boden." }, "stormThrow": { - name: "Storm Throw", - effect: "The user strikes the target with a fierce blow. This attack always results in a critical hit." + name: "Bergsturm", + effect: "Ein Angriff mit voller Wucht und Volltreffergarantie." }, "flameBurst": { - name: "Flame Burst", - effect: "The user attacks the target with a bursting flame. The bursting flame damages Pokémon next to the target as well." + name: "Funkenflug", + effect: "Bei Erfolg greift der Anwender mit berstenden Feuerblasen an. Die Funken der geplatzten Blasen treffen auch benachbarte Ziele." }, "sludgeWave": { - name: "Sludge Wave", - effect: "The user strikes everything around it by swamping the area with a giant sludge wave. This may also poison those hit." + name: "Schlammwoge", + effect: "Greift Pokémon in der Nähe des Anwenders mit einer Schlammwelle an. Diese werden eventuell vergiftet." }, "quiverDance": { - name: "Quiver Dance", - effect: "The user lightly performs a beautiful, mystic dance. This boosts the user's Sp. Atk, Sp. Def, and Speed stats." + name: "Falterreigen", + effect: "Anwender legt behände einen mystischen, formvollendeten Tanz aufs Parkett. Spezial-Angriff, Spezial-Verteidigung und Initiative steigen." }, "heavySlam": { - name: "Heavy Slam", - effect: "The user slams into the target with its heavy body. The more the user outweighs the target, the greater the move's power." + name: "Rammboss", + effect: "Anwender rammt das Ziel mit massivem Körper. Je schwerer er im Vergleich zum Ziel ist, desto stärker die Attacke." }, "synchronoise": { - name: "Synchronoise", - effect: "Using an odd shock wave, the user inflicts damage on any Pokémon of the same type in the area around it." + name: "Synchrolärm", + effect: "Fügt Pokémon vom selben Typ, die sich in der Nähe des Anwenders aufhalten, mit seltsamen Druckwellen Schaden zu." }, "electroBall": { - name: "Electro Ball", - effect: "The user hurls an electric orb at the target. The faster the user is than the target, the greater the move's power." + name: "Elektroball", + effect: "Je höher die Initiative des Anwenders im Vergleich zum Ziel ist, desto stärker trifft dieses eine geballte Ladung Strom." }, "soak": { - name: "Soak", - effect: "The user shoots a torrent of water at the target and changes the target's type to Water." + name: "Überflutung", + effect: "Überschüttet das Ziel mit Unmengen an Wasser und ändert den Typ damit in Wasser um." }, "flameCharge": { - name: "Flame Charge", - effect: "Cloaking itself in flame, the user attacks the target. Then, building up more power, the user raises its Speed stat." + name: "Nitroladung", + effect: "Anwender hüllt sich in Flammen und greift das Ziel an. Sammelt seine Energie und erhöht dadurch die eigene Initiative." }, "coil": { - name: "Coil", - effect: "The user coils up and concentrates. This raises its Attack and Defense stats as well as its accuracy." + name: "Einrollen", + effect: "Anwender rollt sich zusammen und sammelt sich. Dabei werden Angriff, Verteidigung und Genauigkeit erhöht." }, "lowSweep": { - name: "Low Sweep", - effect: "The user makes a swift attack on the target's legs, which lowers the target's Speed stat." + name: "Fußtritt", + effect: "Anwender greift mit blitzschnellen Bewegungen die Beine des Zieles an und senkt dessen Initiative." }, "acidSpray": { - name: "Acid Spray", - effect: "The user spits fluid that works to melt the target. This harshly lowers the target's Sp. Def stat." + name: "Säurespeier", + effect: "Anwender greift an, indem er eine ätzende Flüssigkeit auf das Ziel speit. Senkt dessen Spezial-Verteidigung stark." }, "foulPlay": { - name: "Foul Play", - effect: "The user turns the target's power against it. The higher the target's Attack stat, the greater the damage it deals." + name: "Schmarotzer", + effect: "Anwender macht sich die Kraft des Zieles zunutze. Je höher dessen Angriff, desto mehr Schaden richtet die Attacke an." }, "simpleBeam": { - name: "Simple Beam", - effect: "The user's mysterious psychic wave changes the target's Ability to Simple." + name: "Wankelstrahl", + effect: "Bestrahlt das Ziel mit mysteriösen Energiewellen. Bei einem Treffer wird dessen Fähigkeit zu Wankelmut." }, "entrainment": { - name: "Entrainment", - effect: "The user dances with an odd rhythm that compels the target to mimic it, making the target's Ability the same as the user's." + name: "Zwango", + effect: "Anwender tanzt zu einem seltsamem Rhythmus und zwingt das Ziel mitzumachen. Dieses nimmt dabei die Fähigkeit des Anwenders an." }, "afterYou": { - name: "After You", - effect: "The user helps the target and makes it use its move right after the user." + name: "Galanterie", + effect: "Anwender ermöglicht dem Ziel direkt nach ihm zu handeln, solange der Anwender als Erstes zum Zug kommt." }, "round": { - name: "Round", - effect: "The user attacks the target with a song. Others can join in the Round to increase the power of the attack." + name: "Kanon", + effect: "Angriff mit Gesang. Singt der Anwender mit allen im Kanon, steigt die Stärke." }, "echoedVoice": { - name: "Echoed Voice", - effect: "The user attacks the target with an echoing voice. If this move is used every turn, its power is increased." + name: "Widerhall", + effect: "Angriff mit widerhallender Stimme. Wenn in jeder Runde ein Teilnehmer wiederholt die Attacke einsetzt, steigt die Stärke." }, "chipAway": { - name: "Chip Away", - effect: "Looking for an opening, the user strikes consistently. The target's stat changes don't affect this attack's damage." + name: "Zermürben", + effect: "Eine durchdachte Attacke zu rechter Zeit. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an." }, "clearSmog": { - name: "Clear Smog", - effect: "The user attacks the target by throwing a clump of special mud. All stat changes are returned to normal." + name: "Klärsmog", + effect: "Anwender greift das Ziel mit spezialgefertigten Schlammklumpen an. Setzt Statusveränderungen zurück." }, "storedPower": { - name: "Stored Power", - effect: "The user attacks the target with stored power. The more the user's stats are raised, the greater the move's power." + name: "Kraftvorrat", + effect: "Angriff mit angesparter Energie. Je höher die Statuswerte des Anwenders, desto stärker fällt die Attacke aus." }, "quickGuard": { - name: "Quick Guard", - effect: "The user protects itself and its allies from priority moves." + name: "Rapidschutz", + effect: "Schützt Anwender und Mitstreiter vor gegnerischen Erstschlag-Attacken." }, "allySwitch": { - name: "Ally Switch", - effect: "The user teleports using a strange power and switches places with one of its allies." + name: "Seitentausch", + effect: "Wundersame Kräfte teleportieren den Anwender an den Platz eines Mitstreiters." }, "scald": { - name: "Scald", - effect: "The user shoots boiling hot water at its target. This may also leave the target with a burn." + name: "Siedewasser", + effect: "Heizt dem Ziel mit einem Schwall siedend heißen Kochwassers ein. Das Ziel erleidet dabei eventuell Verbrennungen." }, "shellSmash": { - name: "Shell Smash", - effect: "The user breaks its shell, which lowers Defense and Sp. Def stats but sharply raises its Attack, Sp. Atk, and Speed stats." + name: "Hausbruch", + effect: "Anwender zerbricht seine Schale und senkt seine Verteidigung und Spezial-Verteidigung, aber dafür steigen Angriff, Spezial-Angriff und Initiative stark." }, "healPulse": { - name: "Heal Pulse", - effect: "The user emits a healing pulse that restores the target's HP by up to half of its max HP." + name: "Heilwoge", + effect: "Anwender löst eine Schmerzen lindernde Welle aus und heilt dabei das Ziel mit der Hälfte seiner maximalen KP." }, "hex": { - name: "Hex", - effect: "This relentless attack does massive damage to a target affected by status conditions." + name: "Bürde", + effect: "Eine Attacke, bei der der Anwender das Ziel bedrängt. Fügt Zielen mit Statusproblemen hohen Schaden zu." }, "skyDrop": { - name: "Sky Drop", - effect: "The user takes the target into the sky, then drops it during the next turn. The target cannot attack while in the sky." + name: "Freier Fall", + effect: "Steigt in Runde 1 mit dem Ziel in die Luft auf und lässt es in Runde 2 fallen. Das Ziel kann dabei nicht angreifen." }, "shiftGear": { - name: "Shift Gear", - effect: "The user rotates its gears, raising its Attack stat and sharply raising its Speed stat." + name: "Gangwechsel", + effect: "Durch Drehen der Zahnräder erhöht sich nicht nur der Angriffs-Wert, sondern auch die Initiative des Anwenders stark." }, "circleThrow": { - name: "Circle Throw", - effect: "The target is thrown, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + name: "Überkopfwurf", + effect: "Schleudert das Ziel davon und bewirkt damit, dass ein anderes Pokémon eingewechselt wird. Beendet Kämpfe gegen wilde Pokémon." }, "incinerate": { - name: "Incinerate", - effect: "The user attacks opposing Pokémon with fire. If a Pokémon is holding a certain item, such as a Berry, the item becomes burned up and unusable." + name: "Einäschern", + effect: "Eine Feuer-Attacke. Trägt das Ziel eine Beere oder ein ähnliches Item bei sich, wird dieses von den Flammen verzehrt und geht verloren." }, "quash": { - name: "Quash", - effect: "The user suppresses the target and makes its move go last." + name: "Verzögerung", + effect: "Anwender stemmt sich gegen das Ziel und bewirkt, dass dieses erst als Letztes angreift." }, "acrobatics": { - name: "Acrobatics", - effect: "The user nimbly strikes the target. If the user is not holding an item, this attack inflicts massive damage." + name: "Akrobatik", + effect: "Ein graziler Angriff auf das Ziel. Trägt der Anwender kein Item bei sich, richtet die Attacke großen Schaden an." }, "reflectType": { - name: "Reflect Type", - effect: "The user reflects the target's type, making the user the same type as the target." + name: "Typenspiegel", + effect: "Anwender bildet das Ziel nach und nimmt dabei dessen Typ an." }, "retaliate": { - name: "Retaliate", - effect: "The user gets revenge for a fainted ally. If an ally fainted in the previous turn, this move's power is increased." + name: "Heimzahlung", + effect: "Anwender nimmt Rache für einen besiegten Mitstreiter. Wurde in der vorigen Runde ein Mitstreiter besiegt, steigt die Kraft." }, "finalGambit": { - name: "Final Gambit", - effect: "The user risks everything to attack its target. The user faints but does damage equal to its HP." + name: "Wagemut", + effect: "Ein Angriff, der dem Ziel Schaden in Höhe der aktuellen KP des Anwenders zufügt. Letzterer wird dadurch selbst besiegt." }, "bestow": { - name: "Bestow", - effect: "The user passes its held item to the target when the target isn't holding an item." + name: "Offerte", + effect: "Trägt das Ziel gerade kein Item bei sich, erhält es das Item, das sich aktuell im Besitz des Anwenders befindet." }, "inferno": { name: "Inferno", - effect: "The user attacks by engulfing the target in an intense fire. This leaves the target with a burn." + effect: "Anwender greift das Ziel an, indem er es mit dichten Flammen umhüllt. Ziel erleidet Verbrennungen." }, "waterPledge": { - name: "Water Pledge", - effect: "A column of water hits the target. When used with its fire equivalent, its power increases and a rainbow appears." + name: "Wassersäulen", + effect: "Ein Angriff mit Wassersäulen. Mit Feuersäulen kombiniert steigt die Wirkung und ein Regenbogen erscheint." }, "firePledge": { - name: "Fire Pledge", - effect: "A column of fire hits the target. When used with its grass equivalent, its power increases and a vast sea of fire appears." + name: "Feuersäulen", + effect: "Ein Angriff mit Feuersäulen. Mit Pflanzsäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Meer aus Feuer." }, "grassPledge": { - name: "Grass Pledge", - effect: "A column of grass hits the target. When used with its water equivalent, its power increases and a vast swamp appears." + name: "Pflanzensäulen", + effect: "Ein Angriff mit Pflanzsäulen. Mit Wassersäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Sumpf." }, "voltSwitch": { - name: "Volt Switch", - effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting." + name: "Voltwechsel", + effect: "Anwender kehrt nach dem Angriff mit atemberaubender Geschwindigkeit zurück und tauscht Platz mit einem anderen Pokémon." }, "struggleBug": { - name: "Struggle Bug", - effect: "While resisting, the user attacks opposing Pokémon. This lowers the Sp. Atk stats of those hit." + name: "Käfertrutz", + effect: "Anwender leistet Widerstand und greift an. Der Spezial-Angriff der Ziele sinkt." }, "bulldoze": { - name: "Bulldoze", - effect: "The user strikes everything around it by stomping down on the ground. This lowers the Speed stats of those hit." + name: "Dampfwalze", + effect: "Anwender greift an, indem er den Boden um sich herum plattwalzt. Die Initiative aller betroffenen Pokémon sinkt." }, "frostBreath": { - name: "Frost Breath", - effect: "The user blows its cold breath on the target. This attack always results in a critical hit." + name: "Eisesodem", + effect: "Anwender greift an, indem er dem Ziel eisigen Atem entgegenhaucht. Volltreffergarantie." }, "dragonTail": { - name: "Dragon Tail", - effect: "The target is knocked away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + name: "Drachenrute", + effect: "Putzt das Ziel vom Feld und wechselt es mit einem anderen Pokémon aus. Beendet Kämpfe gegen wilde Pokémon." }, "workUp": { - name: "Work Up", - effect: "The user is roused, and its Attack and Sp. Atk stats increase." + name: "Kraftschub", + effect: "Anwender erhält einen Kraftschub, der seinen Angriff und Spezial-Angriff erhöht." }, "electroweb": { - name: "Electroweb", - effect: "The user attacks and captures opposing Pokémon using an electric net. This lowers their Speed stats." + name: "Elektronetz", + effect: "Fängt Ziele mit einem elektrischen Netz und senkt deren Initiative." }, "wildCharge": { - name: "Wild Charge", - effect: "The user shrouds itself in electricity and smashes into its target. This also damages the user a little." + name: "Stromstoß", + effect: "Anwender erzeugt Spannung und greift an, indem er auf Kollisionskurs geht. Er selbst erleidet dabei ebenfalls leichten Schaden." }, "drillRun": { - name: "Drill Run", - effect: "The user crashes into its target while rotating its body like a drill. Critical hits land more easily." + name: "Schlagbohrer", + effect: "Anwender rammt das Ziel, während er seinen Körper wie einen Bohrer dreht. Hohe Volltrefferquote." }, "dualChop": { - name: "Dual Chop", - effect: "The user attacks its target by hitting it with brutal strikes. The target is hit twice in a row." + name: "Doppelhieb", + effect: "Versetzt dem Ziel mit massiven Extremitäten Hiebe. Angriff erfolgt zweimal hintereinander." }, "heartStamp": { - name: "Heart Stamp", - effect: "The user unleashes a vicious blow after its cute act makes the target less wary. This may also make the target flinch." + name: "Herzstempel", + effect: "Verleitet Ziel durch Kokettieren zu Unachtsamkeit und verpasst ihm dann einen harten Schlag. Ziel schreckt eventuell zurück." }, "hornLeech": { - name: "Horn Leech", - effect: "The user drains the target's energy with its horns. The user's HP is restored by half the damage taken by the target." + name: "Holzgeweih", + effect: "Greift Ziel mit Astgeweih an und zapft diesem Nährstoffe ab. Anwender wird um die Hälfte des zugefügten Schadens geheilt." }, "sacredSword": { - name: "Sacred Sword", - effect: "The user attacks by slicing with a long horn. The target's stat changes don't affect this attack's damage." + name: "Sanctoklinge", + effect: "Schneideangriff mit langem Horn. Richtet Schaden unabhängig von Statusveränderungen des Zieles an." }, "razorShell": { - name: "Razor Shell", - effect: "The user cuts its target with sharp shells. This may also lower the target's Defense stat." + name: "Kalkklinge", + effect: "Schneideangriff mit einer scharfen Muschelschale. Senkt eventuell die Verteidigung des Zieles." }, "heatCrash": { - name: "Heat Crash", - effect: "The user slams its target with its flame-covered body. The more the user outweighs the target, the greater the move's power." + name: "Brandstempel", + effect: "Rempelattacke mit brennendem Körper. Je schwerer der Anwender im Vergleich zum Ziel ist, desto stärker die Attacke." }, "leafTornado": { - name: "Leaf Tornado", - effect: "The user attacks its target by encircling it in sharp leaves. This attack may also lower the target's accuracy." + name: "Grasmixer", + effect: "Anwender greift an, indem er das Ziel in scharfes Blattwerk einwickelt. Kann die Genauigkeit senken." }, "steamroller": { - name: "Steamroller", - effect: "The user crushes its target by rolling over the target with its rolled-up body. This may also make the target flinch." + name: "Quetschwalze", + effect: "Anwender rollt mit rundlichem Körper über das Ziel und drückt es platt. Ziel schreckt eventuell zurück." }, "cottonGuard": { - name: "Cotton Guard", - effect: "The user protects itself by wrapping its body in soft cotton, which drastically raises the user's Defense stat." + name: "Watteschild", + effect: "Anwender schützt sich, indem er sich in einen luftigen Flaum hüllt. Erhöht die Verteidigung drastisch." }, "nightDaze": { - name: "Night Daze", - effect: "The user lets loose a pitch-black shock wave at its target. This may also lower the target's accuracy." + name: "Nachtflut", + effect: "Anwender greift Ziel mit finsteren Schockwellen an. Senkt eventuell die Genauigkeit." }, "psystrike": { - name: "Psystrike", - effect: "The user materializes an odd psychic wave to attack the target. This attack does physical damage." + name: "Psychostoß", + effect: "Anwender erzeugt seltsame Energiewellen, die dem Ziel physischen Schaden zufügen." }, "tailSlap": { - name: "Tail Slap", - effect: "The user attacks by striking the target with its hard tail. It hits the target two to five times in a row." + name: "Kehrschelle", + effect: "Anwender greift das Ziel mit seiner schlagfesten Rute zwei- bis fünfmal hintereinander an." }, "hurricane": { - name: "Hurricane", - effect: "The user attacks by wrapping its opponent in a fierce wind that flies up into the sky. This may also confuse the target." + name: "Orkan", + effect: "Anwender greift das Ziel an, indem er es mit heftigen Windböen umgibt. Ziel wird eventuell verwirrt." }, "headCharge": { - name: "Head Charge", - effect: "The user charges its head into its target, using its powerful guard hair. This also damages the user a little." + name: "Steinschädel", + effect: "Rempelattacke mit ausgeflippter Retrofrisur. Anwender nimmt selbst leichten Schaden." }, "gearGrind": { - name: "Gear Grind", - effect: "The user attacks by throwing steel gears at its target twice." + name: "Klikkdiskus", + effect: "Anwender greift an, indem er stählerne Zahnräder auf das Ziel schleudert. Angriff erfolgt zweimal hintereinander." }, "searingShot": { - name: "Searing Shot", - effect: "The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn." + name: "Flammenball", + effect: "Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden." }, "technoBlast": { - name: "Techno Blast", - effect: "The user fires a beam of light at its target. The move's type changes depending on the Drive the user holds." + name: "Techblaster", + effect: "Anwender feuert ein Lichtgeschoss auf das Ziel ab. Der Typ der Attacke hängt von dem des Moduls ab." }, "relicSong": { - name: "Relic Song", - effect: "The user sings an ancient song and attacks by appealing to the hearts of the listening opposing Pokémon. This may also induce sleep." + name: "Urgesang", + effect: "Anwender greift mit Urgesang an, der Ziele in der Nähe im tiefsten Inneren anspricht. Diese schlafen eventuell ein." }, "secretSword": { - name: "Secret Sword", - effect: "The user cuts with its long horn. The odd power contained in the horn does physical damage to the target." + name: "Mystoschwert", + effect: "Schneideangriff mit dem langen Schwert des Anwenders. Die mysteriöse Kraft aus dem Horn erzeugt physischen Schaden." }, "glaciate": { - name: "Glaciate", - effect: "The user attacks by blowing freezing cold air at opposing Pokémon. This lowers their Speed stats." + name: "Eiszeit", + effect: "Anwender greift an, indem er dem Ziel klirrend kalte Luft entgegenbläst. Senkt die Initiative des Zieles." }, "boltStrike": { - name: "Bolt Strike", - effect: "The user surrounds itself with a great amount of electricity and charges its target. This may also leave the target with paralysis." + name: "Blitzschlag", + effect: "Lädt seinen Körper mit einer gewaltigen Menge an Elektrizität auf und rammt damit das Ziel. Ziel wird eventuell paralysiert." }, "blueFlare": { - name: "Blue Flare", - effect: "The user attacks by engulfing the target in an intense, yet beautiful, blue flame. This may also leave the target with a burn." + name: "Blauflammen", + effect: "Anwender greift an, indem er das Ziel in wunderschöne, intensivblaue Flammen hüllt, die es eventuell verbrennen." }, "fieryDance": { - name: "Fiery Dance", - effect: "Cloaked in flames, the user attacks the target by dancing and flapping its wings. This may also raise the user's Sp. Atk stat." + name: "Feuerreigen", + effect: "Hüllt das Ziel mit einer Feuerhose in Flammen. Kann den Spezial-Angriff des Anwenders erhöhen." }, "freezeShock": { - name: "Freeze Shock", - effect: "On the second turn, the user hits the target with electrically charged ice. This may also leave the target with paralysis." + name: "Frostvolt", + effect: "Feuert in der zweiten Runde elektrisch geladene Eisklumpen auf das Ziel ab. Paralysiert das Ziel eventuell." }, "iceBurn": { - name: "Ice Burn", - effect: "On the second turn, an ultracold, freezing wind surrounds the target. This may leave the target with a burn." + name: "Frosthauch", + effect: "Umgibt das Ziel in der nächsten Runde mit heftigen, alles gefrierenden Eisböen. Fügt dem Ziel eventuell Verbrennungen zu." }, "snarl": { - name: "Snarl", - effect: "The user yells as if it's ranting about something, which lowers the Sp. Atk stats of opposing Pokémon." + name: "Standpauke", + effect: "Wäscht Zielen in der Nähe mit einer ausführlichen Standpauke den Kopf und senkt dabei deren Spezial-Angriff." }, "icicleCrash": { - name: "Icicle Crash", - effect: "The user attacks by harshly dropping large icicles onto the target. This may also make the target flinch." + name: "Eiszapfhagel", + effect: "Lässt große, schwere Eiszapfen auf das Ziel herabregnen. Ziel schreckt eventuell zurück." }, "vCreate": { - name: "V-create", - effect: "With a hot flame on its forehead, the user hurls itself at its target. This lowers the user's Defense, Sp. Def, and Speed stats." + name: "V-Generator", + effect: "Eine Verzweiflungsattacke. Anwender entfacht glühend heißes Feuer. Senkt dessen Verteidigung, Spezial-Verteidigung und Initiative." }, "fusionFlare": { - name: "Fusion Flare", - effect: "The user brings down a giant flame. This move's power is increased when influenced by an enormous lightning bolt." + name: "Kreuzflamme", + effect: "Feuert eine monströse Flamme ab. Wird die Attacke durch einen gigantischen Blitz modifiziert, steigt die Stärke." }, "fusionBolt": { - name: "Fusion Bolt", - effect: "The user throws down a giant lightning bolt. This move's power is increased when influenced by an enormous flame." + name: "Kreuzdonner", + effect: "Feuert einen monströsen Blitz ab. Wird die Attacke durch eine gigantische Flamme modifiziert, steigt die Stärke." }, "flyingPress": { name: "Flying Press", - effect: "The user dives down onto the target from the sky. This move is Fighting and Flying type simultaneously." + effect: "Der Anwender stürzt sich aus der Luft auf das Ziel. Die Attacke gehört sowohl dem Typ Kampf als auch dem Typ Flug an." }, "matBlock": { - name: "Mat Block", - effect: "Using a pulled-up mat as a shield, the user protects itself and its allies from damaging moves. This does not stop status moves." + name: "Tatami-Schild", + effect: "Der Anwender richtet eine Tatami-Matte auf, um sich und sein Team vor Schaden zu schützen. Kein Schutz vor Status-Attacken." }, "belch": { - name: "Belch", - effect: "The user lets out a damaging belch at the target. The user must eat a held Berry to use this move." + name: "Rülpser", + effect: "Der Anwender fügt dem Ziel Schaden zu, indem er es anrülpst. Diese Attacke gelingt nur nach dem Konsum einer getragenen Beere." }, "rototiller": { - name: "Rototiller", - effect: "Tilling the soil, the user makes it easier for plants to grow. This raises the Attack and Sp. Atk stats of Grass-type Pokémon." + name: "Pflüger", + effect: "Der Anwender pflügt den Boden und macht die Erde fruchtbarer. Erhöht den Angriff und den Spezial-Angriff von Pflanzen-Pokémon." }, "stickyWeb": { - name: "Sticky Web", - effect: "The user weaves a sticky net around the opposing team, which lowers their Speed stats upon switching into battle." + name: "Klebenetz", + effect: "Der Anwender spinnt in der Umgebung des gegnerischen Teams ein klebriges Netz und senkt so die Initiative neu eingewechselter Pokémon." }, "fellStinger": { - name: "Fell Stinger", - effect: "When the user knocks out a target with this move, the user's Attack stat rises drastically." + name: "Stachelfinale", + effect: "Gelingt es dem Anwender, das Ziel mit dieser Attacke zu besiegen, steigt sein Angriffs-Wert stark." }, "phantomForce": { - name: "Phantom Force", - effect: "The user vanishes somewhere, then strikes the target on the next turn. This move hits even if the target protects itself." + name: "Phantomkraft", + effect: "Der Anwender verschwindet, um eine Runde lang seine Kraft zu sammeln und in der nächsten Runde anzugreifen. Durchbricht die Defensive des Zieles." }, "trickOrTreat": { - name: "Trick-or-Treat", - effect: "The user takes the target trick-or-treating. This adds Ghost type to the target's type." + name: "Halloween", + effect: "Der Anwender lehrt das Ziel das Fürchten. Dieses nimmt dadurch zusätzlich den Typ Geist an." }, "nobleRoar": { - name: "Noble Roar", - effect: "Letting out a noble roar, the user intimidates the target and lowers its Attack and Sp. Atk stats." + name: "Kampfgebrüll", + effect: "Der Anwender stößt ein Kampfgebrüll aus, das das Ziel einschüchtert und zugleich seinen Angriffs- und Spezial-Angriffs-Wert senkt." }, "ionDeluge": { - name: "Ion Deluge", - effect: "The user disperses electrically charged particles, which changes Normal-type moves to Electric-type moves." + name: "Plasmaschauer", + effect: "Versprüht elektrisch geladene Partikel und bewirkt, dass Normal-Attacken den Typ Elektro annehmen." }, "parabolicCharge": { - name: "Parabolic Charge", - effect: "The user attacks everything around it. The user's HP is restored by half the damage taken by those hit." + name: "Parabolladung", + effect: "Fügt allen Pokémon in der Umgebung Schaden zu. Der Anwender wird um die Hälfte des insgesamt angerichteten Schadens geheilt." }, "forestsCurse": { - name: "Forest's Curse", - effect: "The user puts a forest curse on the target. The target is now Grass type as well." + name: "Waldesfluch", + effect: "Der Anwender belegt das Ziel mit einem Waldesfluch, durch den dieses zusätzlich den Typ Pflanze annimmt." }, "petalBlizzard": { - name: "Petal Blizzard", - effect: "The user stirs up a violent petal blizzard and attacks everything around it." + name: "Blütenwirbel", + effect: "Der Anwender erzeugt einen turbulenten Blütenwirbel, der alle Pokémon in der Nähe erfasst und ihnen Schaden zufügt." }, "freezeDry": { - name: "Freeze-Dry", - effect: "The user rapidly cools the target. This may also leave the target frozen. This move is super effective on Water types." + name: "Gefriertrockner", + effect: "Das Ziel wird stark abgekühlt und manchmal sogar eingefroren. Die Attacke ist sehr effektiv gegen Wasser-Pokémon." }, "disarmingVoice": { - name: "Disarming Voice", - effect: "Letting out a charming cry, the user does emotional damage to opposing Pokémon. This attack never misses." + name: "Säuselstimme", + effect: "Der Anwender stößt einen bezirzenden Ruf aus, mit dem er das Ziel in seinen Bann schlägt und ihm immer mentalen Schaden zufügt." }, "partingShot": { - name: "Parting Shot", - effect: "With a parting threat, the user lowers the target's Attack and Sp. Atk stats. Then it switches with a party Pokémon." + name: "Abgangstirade", + effect: "Schüchtert das Ziel mit einer Abgangstirade ein, sodass dessen Angriffs- und Spezial-Angriffs-Wert sinken. Danach wird der Anwender ausgewechselt." }, "topsyTurvy": { - name: "Topsy-Turvy", - effect: "All stat changes affecting the target turn topsy-turvy and become the opposite of what they were." + name: "Invertigo", + effect: "Invertiert alle Statusveränderungen des Zieles." }, "drainingKiss": { - name: "Draining Kiss", - effect: "The user steals the target's HP with a kiss. The user's HP is restored by over half of the damage taken by the target." + name: "Diebeskuss", + effect: "Der Anwender stiehlt dem Ziel mit einem Kuss KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens." }, "craftyShield": { - name: "Crafty Shield", - effect: "The user protects itself and its allies from status moves with a mysterious power. This does not stop moves that do damage." + name: "Trickschutz", + effect: "Schützt sich und Mitstreiter mit einer mysteriösen Macht vor Status-Attacken. Es werden jedoch weiterhin KP-Schäden erlitten." }, "flowerShield": { - name: "Flower Shield", - effect: "The user raises the Defense stats of all Grass-type Pokémon in battle with a mysterious power." + name: "Floraschutz", + effect: "Erhöht mit einer mysteriösen Macht die Verteidigung aller am Kampf beteiligten Pflanzen-Pokémon." }, "grassyTerrain": { - name: "Grassy Terrain", - effect: "The user turns the ground to grass for five turns. This restores the HP of Pokémon on the ground a little every turn and powers up Grass-type moves." + name: "Grasfeld", + effect: "Verwandelt den Untergrund fünf Runden lang in ein Grasfeld und heilt in jeder neuen Runde alle Pokémon, die den Boden berühren." }, "mistyTerrain": { - name: "Misty Terrain", - effect: "This protects Pokémon on the ground from status conditions and halves damage from Dragon-type moves for five turns." + name: "Nebelfeld", + effect: "Verwandelt den Untergrund fünf Runden lang in ein Nebelfeld und schützt alle Pokémon, die den Boden berühren, vor Statusproblemen." }, "electrify": { - name: "Electrify", - effect: "If the target is electrified before it uses a move during that turn, the target's move becomes Electric type." + name: "Elektrifizierung", + effect: "Kommt die Attacke zum Einsatz, bevor das Ziel seine Attacke ausführt, nimmt diese für die Dauer dieser Runde den Typ Elektro an." }, "playRough": { - name: "Play Rough", - effect: "The user plays rough with the target and attacks it. This may also lower the target's Attack stat." + name: "Knuddler", + effect: "Der Anwender knuddelt das Ziel und greift es an. Gelegentlich sinkt dabei auch dessen Angriffs-Wert." }, "fairyWind": { - name: "Fairy Wind", - effect: "The user stirs up a fairy wind and strikes the target with it." + name: "Feenbrise", + effect: "Lässt eine Feenbrise aufkommen, die das Ziel erfasst und ihm Schaden zufügt." }, "moonblast": { - name: "Moonblast", - effect: "Borrowing the power of the moon, the user attacks the target. This may also lower the target's Sp. Atk stat." + name: "Mondgewalt", + effect: "Der Anwender macht sich die Kraft des Mondes zunutze, um anzugreifen. Gelegentlich wird dabei der Spezial-Angriff des Zieles gesenkt." }, "boomburst": { - name: "Boomburst", - effect: "The user attacks everything around it with the destructive power of a terrible, explosive sound." + name: "Überschallknall", + effect: "Der Anwender greift alle Pokémon in der Umgebung mit einem gewaltigen Knall an." }, "fairyLock": { - name: "Fairy Lock", - effect: "By locking down the battlefield, the user keeps all Pokémon from fleeing during the next turn." + name: "Feenschloss", + effect: "Der Anwender sperrt alle Pokémon ein und hindert sie damit in der nächsten Runde an der Flucht." }, "kingsShield": { - name: "King's Shield", - effect: "The user takes a defensive stance while it protects itself from damage. It also lowers the Attack stat of any attacker that makes direct contact." + name: "Königsschild", + effect: "Der Anwender weicht dem gegnerischen Angriff aus und geht in die Defensive. Berührt ihn nun ein Pokémon, sinkt der Angriffs-Wert dieses Gegners." }, "playNice": { - name: "Play Nice", - effect: "The user and the target become friends, and the target loses its will to fight. This lowers the target's Attack stat." + name: "Kameradschaft", + effect: "Der Anwender schließt mit dem Ziel Freundschaft und nimmt ihm seine Angriffslust. Der Angriffs-Wert des Zieles sinkt." }, "confide": { - name: "Confide", - effect: "The user tells the target a secret, and the target loses its ability to concentrate. This lowers the target's Sp. Atk stat." + name: "Vertrauenssache", + effect: "Der Anwender vertraut dem Ziel ein Geheimnis an und stört auf diese Weise seine Konzentration. Der Spezial-Angriff des Zieles sinkt." }, "diamondStorm": { - name: "Diamond Storm", - effect: "The user whips up a storm of diamonds to damage opposing Pokémon. This may also sharply raise the user's Defense stat." + name: "Diamantsturm", + effect: "Der Anwender beschwört einen zerstörerischen Diamantsturm herauf. Kann die Verteidigung des Anwenders erhöhen." }, "steamEruption": { - name: "Steam Eruption", - effect: "The user immerses the target in superheated steam. This may also leave the target with a burn." + name: "Dampfschwall", + effect: "Der Anwender feuert einen siedend heißen Dampfschwall auf das Ziel ab. Dieses kann dabei Verbrennungen erleiden." }, "hyperspaceHole": { - name: "Hyperspace Hole", - effect: "Using a hyperspace hole, the user appears right next to the target and strikes. This also hits a target using a move such as Protect or Detect." + name: "Dimensionsloch", + effect: "Der Anwender positioniert sich mithilfe eines Dimensionslochs direkt neben dem Ziel und durchbricht selbst Schutzschild und Scanner." }, "waterShuriken": { - name: "Water Shuriken", - effect: "The user hits the target with throwing stars two to five times in a row. This move always goes first." + name: "Wasser-Shuriken", + effect: "Der Anwender schleudert dem Ziel Wurfsterne aus einem verdickten Sekret entgegen. Eine Serien-Attacke, die zwei- bis fünfmal trifft." }, "mysticalFire": { - name: "Mystical Fire", - effect: "The user attacks by breathing a special, hot fire. This also lowers the target's Sp. Atk stat." + name: "Magieflamme", + effect: "Der Anwender greift das Ziel an, indem er ihm eine besondere, heiße Flamme entgegenbläst. Der Spezial-Angriff des Zieles sinkt." }, "spikyShield": { - name: "Spiky Shield", - effect: "In addition to protecting the user from attacks, this move also damages any attacker that makes direct contact." + name: "Schutzstacheln", + effect: "Der Anwender weicht gegnerischen Angriffen aus. Gleichzeitig nehmen alle Pokémon, die mit ihm in Berührung kommen, Schaden." }, "aromaticMist": { - name: "Aromatic Mist", - effect: "The user raises the Sp. Def stat of an ally Pokémon by using a mysterious aroma." + name: "Duftwolke", + effect: "Der Anwender erhöht mithilfe eines mysteriösen Duftes die Spezial-Verteidigung eines Mitstreiters." }, "eerieImpulse": { - name: "Eerie Impulse", - effect: "The user's body generates an eerie impulse. Exposing the target to it harshly lowers the target's Sp. Atk stat." + name: "Mystowellen", + effect: "Der Körper des Anwenders erzeugt mysteriöse Wellen und senkt den Spezial-Angriff des Zieles dadurch stark." }, "venomDrench": { - name: "Venom Drench", - effect: "Opposing Pokémon are drenched in an odd poisonous liquid. This lowers the Attack, Sp. Atk, and Speed stats of a poisoned target." + name: "Giftfalle", + effect: "Anwender bespritzt das Ziel mit einer speziellen Giftflüssigkeit. Senkt den Angriff, den Spezial- Angriff und die Initiative von vergifteten Zielen." }, "powder": { - name: "Powder", - effect: "The user covers the target in a combustible powder. If the target uses a Fire-type move, the powder explodes and damages the target." + name: "Pulverschleuder", + effect: "Setzt das Ziel nach Einsatz von Pulverschleuder in derselben Runde eine Feuer-Attacke ein, kommt es zu einer Explosion, die ihm schadet." }, "geomancy": { - name: "Geomancy", - effect: "The user absorbs energy and sharply raises its Sp. Atk, Sp. Def, and Speed stats on the next turn." + name: "Geokontrolle", + effect: "Der Anwender saugt in Runde 1 Energie auf. In Runde 2 steigen folgende Statuswerte stark: Spezial-Angriff, Spezial-Verteidigung und Initiative." }, "magneticFlux": { - name: "Magnetic Flux", - effect: "The user manipulates magnetic fields, which raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability." + name: "Magnetregler", + effect: "Das Magnetfeld wird so manipuliert, dass Spezial- Verteidigung und Verteidigung von Team-Pokémon mit der Fähigkeit Plus oder Minus steigen." }, "happyHour": { - name: "Happy Hour", - effect: "Using Happy Hour doubles the amount of prize money received after battle." + name: "Goldene Zeiten", + effect: "Nach Einsatz der Attacke Goldene Zeiten verdoppelt sich das Preisgeld, das du im Falle eines Sieges erhältst." }, "electricTerrain": { - name: "Electric Terrain", - effect: "The user electrifies the ground for five turns, powering up Electric-type moves. Pokémon on the ground no longer fall asleep." + name: "Elektrofeld", + effect: "Verwandelt den Untergrund fünf Runden lang in ein Elektrofeld und hindert alle Pokémon, die den Boden berühren, am Einschlafen." }, "dazzlingGleam": { - name: "Dazzling Gleam", - effect: "The user damages opposing Pokémon by emitting a powerful flash." + name: "Zauberschein", + effect: "Der Anwender feuert einen mächtigen Lichtblitz ab, der dem Ziel Schaden zufügt." }, "celebrate": { - name: "Celebrate", - effect: "The Pokémon congratulates you on your special day!" + name: "Ehrentag", + effect: "Das Pokémon gratuliert dir zu deinem Geburtstag!" }, "holdHands": { - name: "Hold Hands", - effect: "The user and an ally hold hands. This makes them very happy." + name: "Händchenhalten", + effect: "Der Anwender und ein Mitstreiter reichen einander die Hände und verfallen in einen Zustand tiefster Zufriedenheit." }, "babyDollEyes": { - name: "Baby-Doll Eyes", - effect: "The user stares at the target with its baby-doll eyes, which lowers the target's Attack stat. This move always goes first." + name: "Kulleraugen", + effect: "Der Anwender erobert das Herz des Zieles, indem er es mit Kulleraugen ansieht. Senkt den Angriffs-Wert. Erstschlaggarantie." }, "nuzzle": { - name: "Nuzzle", - effect: "The user attacks by nuzzling its electrified cheeks against the target. This also leaves the target with paralysis." + name: "Wangenrubbler", + effect: "Der Anwender lädt seine Wangen elektrisch auf und greift an, indem er sich damit am Ziel reibt. Das Ziel wird paralysiert." }, "holdBack": { - name: "Hold Back", - effect: "The user holds back when it attacks, and the target is left with at least 1 HP." + name: "Zurückhaltung", + effect: "Der Anwender hält sich beim Angriff zurück und sorgt auf diese Weise dafür, dass dem Ziel danach mindestens 1 KP verbleibt." }, "infestation": { - name: "Infestation", - effect: "The target is infested and attacked for four to five turns. The target can't flee during this time." + name: "Plage", + effect: "Der Anwender fällt vier bis fünf Runden lang wie eine Plage über das Ziel her und greift es an. In diesem Zeitraum kann es nicht fliehen." }, "powerUpPunch": { - name: "Power-Up Punch", - effect: "Striking opponents over and over makes the user's fists harder. Hitting a target raises the Attack stat." + name: "Steigerungshieb", + effect: "Die Fäuste des Anwenders härten durch wiederholtes Zuschlagen ab. Mit jedem Treffer steigt sein Angriffs-Wert." }, "oblivionWing": { - name: "Oblivion Wing", - effect: "The user absorbs its target's HP. The user's HP is restored by over half of the damage taken by the target." + name: "Unheilsschwingen", + effect: "Der Anwender raubt dem Ziel KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens." }, "thousandArrows": { - name: "Thousand Arrows", - effect: "This move also hits opposing Pokémon that are in the air. Those Pokémon are knocked down to the ground." + name: "Tausend Pfeile", + effect: "Die Attacke erfasst auch schwebende Pokémon. Erfasst sie ein Pokémon im Schwebe-Zustand, fällt es zu Boden." }, "thousandWaves": { - name: "Thousand Waves", - effect: "The user attacks with a wave that crawls along the ground. Those it hits can't flee from battle." + name: "Tausend Wellen", + effect: "Der Anwender greift mit einer Welle an, die dicht über dem Boden verläuft und alle Pokémon, die sie erfasst, an der Flucht hindert." }, "landsWrath": { - name: "Land's Wrath", - effect: "The user gathers the energy of the land and focuses that power on opposing Pokémon to damage them." + name: "Bodengewalt", + effect: "Der Anwender sammelt die Kraft des weiten Landes und greift an, indem er sie gebündelt auf das Ziel lenkt." }, "lightOfRuin": { - name: "Light of Ruin", - effect: "Drawing power from the Eternal Flower, the user fires a powerful beam of light. This also damages the user quite a lot." + name: "Lux Calamitatis", + effect: "Die Attacke basiert auf der Kraft des Ewigblütlers, die als mächtiger Lichtstrahl abgefeuert wird. Der Anwender nimmt dabei selbst großen Schaden." }, "originPulse": { - name: "Origin Pulse", - effect: "The user attacks opposing Pokémon with countless beams of light that glow a deep and brilliant blue." + name: "Ursprungswoge", + effect: "Der Anwender greift das Ziel mit unzähligen blau leuchtenden Strahlen an." }, "precipiceBlades": { - name: "Precipice Blades", - effect: "The user attacks opposing Pokémon by manifesting the power of the land in fearsome blades of stone." + name: "Abgrundsklinge", + effect: "Der Anwender wandelt die Kraft des Erdreichs in Klingen um, mit denen er das Ziel angreift." }, "dragonAscent": { - name: "Dragon Ascent", - effect: "After soaring upward, the user attacks its target by dropping out of the sky at high speeds. But it lowers its own Defense and Sp. Def stats in the process." + name: "Zenitstürmer", + effect: "Der Anwender greift das Ziel aus atemberaubender Höhe im Sturzflug an. Senkt Verteidigung und Spezial-Verteidigung des Anwenders." }, "hyperspaceFury": { - name: "Hyperspace Fury", - effect: "Using its many arms, the user unleashes a barrage of attacks that ignore the effects of moves like Protect and Detect. But the user's Defense stat falls." + name: "Dimensionswahn", + effect: "Eine Angriffsserie mit vielen Armen, die die Wirkung von Schutzschild und Scanner durchbricht. Dabei sinkt die Verteidigung des Anwenders." }, "breakneckBlitzPhysical": { - name: "Breakneck Blitz", - effect: "The user builds up its momentum using its Z-Power and crashes into the target at full speed. The power varies, depending on the original move." + name: "Hyper-Sprintangriff", + effect: "Der durch Z-Kraft energiegeladene Anwender rennt mit ganzer Kraft gegen das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." }, "breakneckBlitzSpecial": { name: "Breakneck Blitz", effect: "Dummy Data" }, "allOutPummelingPhysical": { - name: "All-Out Pummeling", - effect: "The user rams an energy orb created by its Z-Power into the target with full force. The power varies, depending on the original move." + name: "Fulminante Faustschläge", + effect: "Aus Z-Kraft hergestellte Energiebälle prallen mit voller Wucht auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." }, "allOutPummelingSpecial": { name: "All-Out Pummeling", effect: "Dummy Data" }, "supersonicSkystrikePhysical": { - name: "Supersonic Skystrike", - effect: "The user soars up with its Z-Power and plummets toward the target at full speed. The power varies, depending on the original move." + name: "Finaler Steilflug", + effect: "Der Anwender schwingt sich durch Z-Kraft in die Lüfte und stürzt sich dann auf das Ziel hinab. Die Stärke variiert je nach zugrunde liegender Attacke." }, "supersonicSkystrikeSpecial": { name: "Supersonic Skystrike", effect: "Dummy Data" }, "acidDownpourPhysical": { - name: "Acid Downpour", - effect: "The user creates a poisonous swamp using its Z-Power and sinks the target into it at full force. The power varies, depending on the original move." + name: "Vernichtender Säureregen", + effect: "Der Anwender kreiert mit Z-Kraft ein giftiges Moor, in dem das Ziel versinkt. Die Stärke variiert je nach zugrunde liegender Attacke." }, "acidDownpourSpecial": { name: "Acid Downpour", effect: "Dummy Data" }, "tectonicRagePhysical": { - name: "Tectonic Rage", - effect: "The user burrows deep into the ground and slams into the target with the full force of its Z-Power. The power varies, depending on the original move." + name: "Seismische Eruption", + effect: "Der Anwender zerrt das Ziel mit Z-Kraft tief in den Boden und kollidiert dort mit ihm. Die Stärke variiert je nach zugrunde liegender Attacke." }, "tectonicRageSpecial": { name: "Tectonic Rage", effect: "Dummy Data" }, "continentalCrushPhysical": { - name: "Continental Crush", - effect: "The user summons a huge rock mountain using its Z-Power and drops it onto the target with full force. The power varies, depending on the original move." + name: "Apokalyptische Steinpresse", + effect: "Der Anwender beschwört mit Z-Kraft einen großen Felsen herbei und lässt ihn auf das Ziel fallen. Die Stärke variiert je nach zugrunde liegender Attacke." }, "continentalCrushSpecial": { name: "Continental Crush", effect: "Dummy Data" }, "savageSpinOutPhysical": { - name: "Savage Spin-Out", - effect: "The user binds the target with full force with threads of silk that the user spits using its Z-Power. The power varies, depending on the original move." + name: "Wirbelnder Insektenhieb", + effect: "Mithilfe von Z-Kraft umwickelt der Anwender das Ziel mit Fäden. Die Stärke variiert je nach zugrunde liegender Attacke." }, "savageSpinOutSpecial": { name: "Savage Spin-Out", effect: "Dummy Data" }, "neverEndingNightmarePhysical": { - name: "Never-Ending Nightmare", - effect: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move." + name: "Ewige Nacht", + effect: "Der Anwender beschwört mit Z-Kraft tiefen Groll herbei und lässt diesen auf das Ziel los. Die Stärke variiert je nach zugrunde liegender Attacke." }, "neverEndingNightmareSpecial": { name: "Never-Ending Nightmare", effect: "Dummy Data" }, "corkscrewCrashPhysical": { - name: "Corkscrew Crash", - effect: "The user spins very fast and rams into the target with the full force of its Z-Power. The power varies, depending on the original move." + name: "Turbo-Spiralkombo", + effect: "Der Anwender wirbelt durch Z-Kraft sehr schnell umher und prallt mit dem Ziel zusammen. Die Stärke variiert je nach zugrunde liegender Attacke." }, "corkscrewCrashSpecial": { name: "Corkscrew Crash", effect: "Dummy Data" }, "infernoOverdrivePhysical": { - name: "Inferno Overdrive", - effect: "The user breathes a stream of intense fire toward the target with the full force of its Z-Power. The power varies depending on the original move." + name: "Dynamische Maxiflamme", + effect: "Der Anwender speit dank Z-Kraft eine gewaltige Kugel aus Flammen auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." }, "infernoOverdriveSpecial": { name: "Inferno Overdrive", effect: "Dummy Data" }, "hydroVortexPhysical": { - name: "Hydro Vortex", - effect: "The user creates a huge whirling current using its Z-Power to swallow the target with full force. The power varies, depending on the original move." + name: "Super-Wassertornado", + effect: "Der Anwender kreiert mit Z-Kraft einen riesigen Wasserstrudel, der das Ziel verschluckt. Die Stärke variiert je nach zugrunde liegender Attacke." }, "hydroVortexSpecial": { name: "Hydro Vortex", effect: "Dummy Data" }, "bloomDoomPhysical": { - name: "Bloom Doom", - effect: "The user collects energy from plants using its Z-Power and attacks the target with full force. The power varies, depending on the original move." + name: "Brillante Blütenpracht", + effect: "Der Anwender leiht sich durch Z-Kraft die Energie von Wiesenblumen und greift das Ziel damit an. Die Stärke variiert je nach zugrunde liegender Attacke." }, "bloomDoomSpecial": { name: "Bloom Doom", effect: "Dummy Data" }, "gigavoltHavocPhysical": { - name: "Gigavolt Havoc", - effect: "The user hits the target with a powerful electric current collected by its Z-Power. The power varies, depending on the original move." + name: "Gigavolt-Funkensalve", + effect: "Der Anwender greift das Ziel mit durch Z-Kraft gesammelter starker Elektrizität an. Die Stärke variiert je nach zugrunde liegender Attacke." }, "gigavoltHavocSpecial": { name: "Gigavolt Havoc", effect: "Dummy Data" }, "shatteredPsychePhysical": { - name: "Shattered Psyche", - effect: "The user controls the target with its Z-Power and hurts the target with full force. The power varies, depending on the original move." + name: "Psycho-Schmetterschlag", + effect: "Der Anwender kontrolliert das Ziel mit Z-Kraft und macht ihm so das Leben schwer. Die Stärke variiert je nach zugrunde liegender Attacke." }, "shatteredPsycheSpecial": { name: "Shattered Psyche", effect: "Dummy Data" }, "subzeroSlammerPhysical": { - name: "Subzero Slammer", - effect: "The user dramatically drops the temperature using its Z-Power and freezes the target with full force. The power varies, depending on the original move." + name: "Tobender Geofrost", + effect: "Der Anwender senkt mit Z-Kraft die Temperatur drastisch und lässt das Ziel einfrieren. Die Stärke variiert je nach zugrunde liegender Attacke." }, "subzeroSlammerSpecial": { name: "Subzero Slammer", effect: "Dummy Data" }, "devastatingDrakePhysical": { - name: "Devastating Drake", - effect: "The user materializes its aura using its Z-Power and attacks the target with full force. The power varies, depending on the original move." + name: "Drastisches Drachendröhnen", + effect: "Der Anwender materialisiert durch Z-Kraft seine Aura und greift damit das Ziel an. Die Stärke variiert je nach zugrunde liegender Attacke." }, "devastatingDrakeSpecial": { name: "Devastating Drake", effect: "Dummy Data" }, "blackHoleEclipsePhysical": { - name: "Black Hole Eclipse", - effect: "The user gathers dark energy using its Z-Power and sucks the target into it. The power varies, depending on the original move." + name: "Schwarzes Loch des Grauens", + effect: "Der Anwender sammelt mit Z-Kraft dunkle Energie an, die das Ziel verschlingt. Die Stärke variiert je nach zugrunde liegender Attacke." }, "blackHoleEclipseSpecial": { name: "Black Hole Eclipse", effect: "Dummy Data" }, "twinkleTacklePhysical": { - name: "Twinkle Tackle", - effect: "The user creates a very charming space using its Z-Power and totally toys with the target. The power varies, depending on the original move." + name: "Entzückender Sternenstoß", + effect: "Der Anwender kreiert mit Z-Kraft eine zauberhafte Dimension und treibt dort sein Spiel mit dem Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." }, "twinkleTackleSpecial": { name: "Twinkle Tackle", effect: "Dummy Data" }, "catastropika": { - name: "Catastropika", - effect: "The user, Pikachu, surrounds itself with the maximum amount of electricity using its Z-Power and pounces on its target with full force." + name: "Perfektes Pika-Projektil", + effect: "Pikachu umhüllt sich durch Z-Kraft mit gewaltiger elektrischer Energie und stürzt sich mit voller Kraft auf das Ziel." }, "shoreUp": { - name: "Shore Up", - effect: "The user regains up to half of its max HP. It restores more HP in a sandstorm." + name: "Sandsammler", + effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt. Tobt ein Sandsturm, werden noch mehr KP aufgefüllt." }, "firstImpression": { - name: "First Impression", - effect: "Although this move has great power, it only works the first turn each time the user enters battle." + name: "Überrumpler", + effect: "Eine sehr starke Attacke, die jedoch nur erfolgreich ist, wenn sie sofort eingesetzt wird, nachdem der Anwender das Kampffeld betreten hat." }, "banefulBunker": { - name: "Baneful Bunker", - effect: "In addition to protecting the user from attacks, this move also poisons any attacker that makes direct contact." + name: "Bunker", + effect: "Der Anwender wird vor Angriffen geschützt. Gleichzeitig werden alle Pokémon, die mit ihm in Berührung kommen, vergiftet." }, "spiritShackle": { - name: "Spirit Shackle", - effect: "The user attacks while simultaneously stitching the target's shadow to the ground to prevent the target from escaping." + name: "Schattenfessel", + effect: "Der Anwender greift das Ziel an und näht zugleich dessen Schatten am Boden fest, sodass es nicht entkommen kann." }, "darkestLariat": { - name: "Darkest Lariat", - effect: "The user swings both arms and hits the target. The target's stat changes don't affect this attack's damage." + name: "Dark Lariat", + effect: "Der Anwender wirbelt mit beiden Armen und prallt so auf das Ziel. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an." }, "sparklingAria": { - name: "Sparkling Aria", - effect: "The user bursts into song, emitting many bubbles. Any Pokémon suffering from a burn will be healed by the touch of these bubbles." + name: "Schaumserenade", + effect: "Durch Gesang erzeugte Blasen werden auf das Ziel geschleudert. Alle Pokémon, die dadurch Schaden erleiden, werden auch von Verbrennungen geheilt." }, "iceHammer": { - name: "Ice Hammer", - effect: "The user swings and hits with its strong, heavy fist. It lowers the user's Speed, however." + name: "Eishammer", + effect: "Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders." }, "floralHealing": { - name: "Floral Healing", - effect: "The user restores the target's HP by up to half of its max HP. It restores more HP when the terrain is grass." + name: "Florakur", + effect: "KP des Zieles werden um 50 % der maximalen KP aufgefüllt. Die Wirkung steigt, wenn der Untergrund in ein Grasfeld verwandelt wurde." }, "highHorsepower": { - name: "High Horsepower", - effect: "The user fiercely attacks the target using its entire body." + name: "Pferdestärke", + effect: "Der Anwender greift das Ziel mit einer heftigen Ganzkörper-Attacke an." }, "strengthSap": { - name: "Strength Sap", - effect: "The user restores its HP by the same amount as the target's Attack stat. It also lowers the target's Attack stat." + name: "Kraftabsorber", + effect: "Ein Angriff, der die KP des Anwenders um die Höhe des Angriffs-Werts des Zieles heilt. Anschließend wird der Angriff des Zieles gesenkt." }, "solarBlade": { - name: "Solar Blade", - effect: "In this two-turn attack, the user gathers light and fills a blade with the light's energy, attacking the target on the next turn." + name: "Solarklinge", + effect: "Der Anwender absorbiert in der 1. Runde Licht, das er in der 2. Runde zu einem Schwert formt, mit dem er angreift." }, "leafage": { - name: "Leafage", - effect: "The user attacks by pelting the target with leaves." + name: "Blattwerk", + effect: "Der Anwender greift das Ziel mit Blättern an." }, "spotlight": { - name: "Spotlight", - effect: "The user shines a spotlight on the target so that only the target will be attacked during the turn." + name: "Rampenlicht", + effect: "Der Anwender lenkt die Aufmerksamkeit auf das Ziel, sodass in dieser Runde nur noch dieses Pokémon angegriffen wird." }, "toxicThread": { - name: "Toxic Thread", - effect: "The user shoots poisonous threads to poison the target and lower the target's Speed stat." + name: "Giftfaden", + effect: "Der Anwender schießt giftige Fäden auf das Ziel, das dadurch vergiftet wird. Außerdem sinkt seine Initiative." }, "laserFocus": { - name: "Laser Focus", - effect: "The user concentrates intensely. The attack on the next turn always results in a critical hit." + name: "Konzentration", + effect: "Der Anwender konzentriert sich, wodurch sein nächster Angriff garantiert ein Volltreffer wird." }, "gearUp": { - name: "Gear Up", - effect: "The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability." + name: "Hilfsmechanik", + effect: "Der Anwender erhöht mithilfe von Zahnrädern Angriff und Spezial-Angriff von Team-Pokémon mit der Fähigkeit Plus oder Minus." }, "throatChop": { - name: "Throat Chop", - effect: "The user attacks the target's throat, and the resultant suffering prevents the target from using moves that emit sound for two turns." + name: "Neck Strike", + effect: "Das Pokémon, das von dieser Attacke getroffen wird, erleidet starke Schmerzen und kann deswegen zwei Runden lang keine Lärm-Attacken mehr einsetzen." }, "pollenPuff": { - name: "Pollen Puff", - effect: "The user attacks the enemy with a pollen puff that explodes. If the target is an ally, it gives the ally a pollen puff that restores its HP instead." + name: "Pollenknödel", + effect: "Der Anwender greift mit einem Ball aus Pollen an, der beim Ziel explodiert. Mitstreiter werden von einem Ball getroffen, der ihre KP auffüllt." }, "anchorShot": { - name: "Anchor Shot", - effect: "The user entangles the target with its anchor chain while attacking. The target becomes unable to flee." + name: "Ankerschuss", + effect: "Der Anwender greift das Ziel an, indem er es mit einer Ankerkette umwickelt. Dadurch wird das Ziel an der Flucht gehindert." }, "psychicTerrain": { - name: "Psychic Terrain", - effect: "This protects Pokémon on the ground from priority moves and powers up Psychic-type moves for five turns." + name: "Psychofeld", + effect: "Verhindert für fünf Runden, dass Pokémon am Boden von Attacken mit hoher Erstschlagquote getroffen werden. Erhöht die Stärke von Psycho-Attacken." }, "lunge": { - name: "Lunge", - effect: "The user makes a lunge at the target, attacking with full force. This also lowers the target's Attack stat." + name: "Anfallen", + effect: "Der Anwender greift das Ziel mit ganzer Kraft an, wodurch auch der Angriffs-Wert des Zieles sinkt." }, "fireLash": { - name: "Fire Lash", - effect: "The user strikes the target with a burning lash. This also lowers the target's Defense stat." + name: "Feuerpeitsche", + effect: "Der Anwender greift das Ziel mit einer brennenden Peitsche an und senkt dabei zusätzlich dessen Verteidigungs-Wert." }, "powerTrip": { - name: "Power Trip", - effect: "The user boasts its strength and attacks the target. The more the user's stats are raised, the greater the move's power." + name: "Überheblichkeit", + effect: "Der Anwender prahlt mit seiner Stärke und greift das Ziel an. Dieser Angriff ist umso stärker, je weiter die Statuswerte des Anwenders erhöht sind." }, "burnUp": { - name: "Burn Up", - effect: "To inflict massive damage, the user burns itself out. After using this move, the user will no longer be Fire type." + name: "Ausbrennen", + effect: "Der Anwender nutzt das gesamte Feuer in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Feuer an." }, "speedSwap": { - name: "Speed Swap", - effect: "The user exchanges Speed stats with the target." + name: "Initiativetausch", + effect: "Der Anwender tauscht seinen Initiative-Wert mit dem des Zieles." }, "smartStrike": { - name: "Smart Strike", - effect: "The user stabs the target with a sharp horn. This attack never misses." + name: "Schmalhorn", + effect: "Der Anwender durchbohrt das Ziel mit seinem spitzen Horn. Diese Attacke trifft immer." }, "purify": { - name: "Purify", - effect: "The user heals the target's status condition. If the move succeeds, it also restores the user's own HP." + name: "Läuterung", + effect: "Der Anwender heilt das Statusproblem des Zieles und füllt dadurch seine eigenen KP auf." }, "revelationDance": { - name: "Revelation Dance", - effect: "The user attacks the target by dancing very hard. The user's type determines the type of this move." + name: "Wecktanz", + effect: "Der Anwender tanzt und greift dabei das Ziel mit voller Kraft an. Die Attacke hat denselben Typ wie das Pokémon, das sie einsetzt." }, "coreEnforcer": { - name: "Core Enforcer", - effect: "If the Pokémon the user has inflicted damage on have already used their moves, this move eliminates the effect of the target's Ability." + name: "Sanktionskern", + effect: "Hat das Pokémon, das durch diese Attacke Schaden genommen hat, in dieser Runde bereits gehandelt, verliert es seine Fähigkeit." }, "tropKick": { - name: "Trop Kick", - effect: "The user lands an intense kick of tropical origins on the target. This also lowers the target's Attack stat." + name: "Tropenkick", + effect: "Der Anwender greift den Gegner mit einem heftigen Tritt tropischer Herkunft an. Dabei sinkt auch der Angriffs-Wert des Gegners." }, "instruct": { - name: "Instruct", - effect: "The user instructs the target to use the target's last move again." + name: "Kommando", + effect: "Der Anwender befiehlt dem Ziel, dessen zuletzt ausgeführte Attacke sofort wieder einzusetzen." }, "beakBlast": { - name: "Beak Blast", - effect: "The user first heats up its beak, and then it attacks the target. Making direct contact with the Pokémon while it's heating up its beak results in a burn." + name: "Schnabelkanone", + effect: "Der Anwender erhitzt zuerst seinen Schnabel und greift dann an. Pokémon, die ihn während des Erhitzens berühren, erleiden Verbrennungen." }, "clangingScales": { - name: "Clanging Scales", - effect: "The user rubs the scales on its entire body and makes a huge noise to attack opposing Pokémon. The user's Defense stat goes down after the attack." + name: "Schuppenrasseln", + effect: "Der Anwender erzeugt durch das Rasseln mit seinen Schuppen ein lautes Geräusch und greift an. Anschließend sinkt seine Verteidigung." }, "dragonHammer": { - name: "Dragon Hammer", - effect: "The user uses its body like a hammer to attack the target and inflict damage." + name: "Drachenhammer", + effect: "Der Anwender nutzt seinen Körper wie einen Hammer und stürzt sich auf das Ziel, wodurch dieses Schaden erleidet." }, "brutalSwing": { - name: "Brutal Swing", - effect: "The user swings its body around violently to inflict damage on everything in its vicinity." + name: "Wirbler", + effect: "Der Anwender dreht schwungvoll seinen Körper und fügt den Pokémon in seiner Nähe dabei Schaden zu." }, "auroraVeil": { - name: "Aurora Veil", - effect: "This move reduces damage from physical and special moves for five turns. This can be used only when it is snowing." + name: "Auroraschleier", + effect: "Diese Attacke schwächt fünf Runden lang den durch physische sowie durch Spezial-Attacken erhaltenen Schaden. Kann nur bei Hagel eingesetzt werden." }, "sinisterArrowRaid": { - name: "Sinister Arrow Raid", - effect: "The user, Decidueye, creates countless arrows using its Z-Power and shoots the target with full force." + name: "Schatten-Pfeilregen", + effect: "Silvarro stellt mit Z-Kraft unzählige Pfeile her und lässt diese auf das Ziel niederprasseln." }, "maliciousMoonsault": { - name: "Malicious Moonsault", - effect: "The user, Incineroar, strengthens its body using its Z-Power and crashes into the target with full force." + name: "Hyper Dark Crusher", + effect: "Mit seinem durch Z-Kraft gestählten Körper stürzt sich Fuegro mit ganzer Kraft auf das Ziel." }, "oceanicOperetta": { - name: "Oceanic Operetta", - effect: "The user, Primarina, summons a massive amount of water using its Z-Power and attacks the target with full force." + name: "Grandiose Meeressymphonie", + effect: "Primarene ruft mit Z-Kraft große Mengen an Wasser herbei und greift damit das Ziel an." }, "guardianOfAlola": { - name: "Guardian of Alola", - effect: "The user, the Land Spirit Pokémon, obtains Alola's energy using its Z-Power and attacks the target with full force. This reduces the target's HP greatly." + name: "Alolas Wächter", + effect: "Ein gewaltiger Angriff des Schutzpatrons, der durch Z-Kraft die Kraft Alolas erlangt hat. Reduziert die verbleibenden KP des Zieles stark." }, "soulStealing7StarStrike": { - name: "Soul-Stealing 7-Star Strike", - effect: "After obtaining Z-Power, the user, Marshadow, punches and kicks the target consecutively with full force." + name: "Sternbild des Seelenraubes", + effect: "Marshadow schlägt mit durch Z-Kraft gestärkten Schlägen und Tritten in einer Serien-Attacke auf das Ziel ein." }, "stokedSparksurfer": { - name: "Stoked Sparksurfer", - effect: "After obtaining Z-Power, the user, Alolan Raichu, attacks the target with full force. This move leaves the target with paralysis." + name: "Blitz-Wellenritt", + effect: "Das Alola-Raichu greift das Ziel mithilfe von Z-Kraft mit voller Wucht an und paralysiert es." }, "pulverizingPancake": { - name: "Pulverizing Pancake", - effect: "Z-Power brings out the true capabilities of the user, Snorlax. The Pokémon moves its enormous body energetically and attacks the target with full force." + name: "Schluss mit lustig", + effect: "Relaxo wird von Z-Kraft erfüllt und macht Ernst. Es bringt seinen riesigen Körper in Schwung und stürzt sich mit ganzer Kraft auf das Ziel." }, "extremeEvoboost": { - name: "Extreme Evoboost", - effect: "After obtaining Z-Power, the user, Eevee, gets energy from its evolved friends and boosts its stats sharply." + name: "Macht der Neun", + effect: "Evoli macht sich durch Z-Kraft die Stärke seiner Weiterentwicklungen zunutze und erhöht seine Statuswerte stark." }, "genesisSupernova": { - name: "Genesis Supernova", - effect: "After obtaining Z-Power, the user, Mew, attacks the target with full force. The terrain will be charged with psychic energy." + name: "Supernova des Ursprungs", + effect: "Mew greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Der Untergrund wird dabei in ein Psychofeld verwandelt." }, "shellTrap": { - name: "Shell Trap", - effect: "The user sets a shell trap. If the user is hit by a physical move, the trap will explode and inflict damage on opposing Pokémon." + name: "Panzerfalle", + effect: "Der Anwender legt eine Panzerfalle. Wird er von einer physischen Attacke getroffen, explodiert die Falle und fügt dem Angreifer Schaden zu." }, "fleurCannon": { - name: "Fleur Cannon", - effect: "The user unleashes a strong beam. The attack's recoil harshly lowers the user's Sp. Atk stat." + name: "Kanonenbouquet", + effect: "Der Anwender greift das Ziel mit einem gewaltigen Strahl an. Sein eigener Spezial-Angriff sinkt dadurch stark." }, "psychicFangs": { - name: "Psychic Fangs", - effect: "The user bites the target with its psychic capabilities. This can also destroy Light Screen and Reflect." + name: "Psychobeißer", + effect: "Der Anwender beißt das Ziel mithilfe von Psycho-Kräften. Die Attacke durchbricht auch Barrieren wie Lichtschild und Reflektor." }, "stompingTantrum": { - name: "Stomping Tantrum", - effect: "Driven by frustration, the user attacks the target. If the user's previous move has failed, the power of this move doubles." + name: "Fruststampfer", + effect: "Von Frust getrieben greift der Anwender an. Wenn seine vorige Attacke fehlgeschlagen ist, verdoppelt sich die Stärke der Attacke." }, "shadowBone": { - name: "Shadow Bone", - effect: "The user attacks by beating the target with a bone that contains a spirit. This may also lower the target's Defense stat." + name: "Schattenknochen", + effect: "Der Anwender greift das Ziel mit einem Knochen an, in dem eine Seele haust. Senkt eventuell die Verteidigung des Zieles." }, "accelerock": { - name: "Accelerock", - effect: "The user smashes into the target at high speed. This move always goes first." + name: "Turbofelsen", + effect: "Der Anwender prallt mit großer Geschwindigkeit auf das Ziel. Hohe Erstschlagquote." }, "liquidation": { - name: "Liquidation", - effect: "The user slams into the target using a full-force blast of water. This may also lower the target's Defense stat." + name: "Aquadurchstoß", + effect: "Der Anwender greift das Ziel mit der Kraft des Wassers an. Senkt eventuell die Verteidigung des Zieles." }, "prismaticLaser": { - name: "Prismatic Laser", - effect: "The user shoots powerful lasers using the power of a prism. The user can't move on the next turn." + name: "Prisma-Laser", + effect: "Der Anwender feuert mithilfe von Prisma-Kraft mächtige Lichtstrahlen ab. In der nächsten Runde kann er nicht handeln." }, "spectralThief": { - name: "Spectral Thief", - effect: "The user hides in the target's shadow, steals the target's stat boosts, and then attacks." + name: "Diebesschatten", + effect: "Der Anwender schleicht sich in den Schatten des Zieles, stiehlt dessen erhöhte Statuswerte und fügt ihm Schaden zu." }, "sunsteelStrike": { - name: "Sunsteel Strike", - effect: "The user slams into the target with the force of a meteor. This move can be used on the target regardless of its Abilities." + name: "Stahlgestirn", + effect: "Der Anwender stürzt mit der Gewalt eines Meteors auf das Ziel. Die Fähigkeit des Zieles wird dabei ignoriert." }, "moongeistBeam": { - name: "Moongeist Beam", - effect: "The user emits a sinister ray to attack the target. This move can be used on the target regardless of its Abilities." + name: "Schattenstrahl", + effect: "Der Anwender greift mit einem unheimlichen Lichtstrahl an. Diese Attacke ignoriert die Fähigkeit des Zieles." }, "tearfulLook": { - name: "Tearful Look", - effect: "The user gets teary eyed to make the target lose its combative spirit. This lowers the target's Attack and Sp. Atk stats." + name: "Tränendrüse", + effect: "Dem Anwender stehen Tränen in den Augen, wodurch das Ziel seinen Kampfeswillen verliert. Angriff und Spezial-Angriff des Zieles sinken." }, "zingZap": { - name: "Zing Zap", - effect: "A strong electric blast crashes down on the target, giving it an electric shock. This may also make the target flinch." + name: "Elektropikser", + effect: "Der Anwender rammt das Ziel und schockt es mit starkem Strom. Das Ziel schreckt eventuell zurück." }, "naturesMadness": { - name: "Nature's Madness", - effect: "The user hits the target with the force of nature. It halves the target's HP." + name: "Naturzorn", + effect: "Das Ziel wird vom Zorn der Natur getroffen und verliert dadurch die Hälfte seiner KP." }, "multiAttack": { - name: "Multi-Attack", - effect: "Cloaking itself in high energy, the user slams into the target. The memory held determines the move's type." + name: "Multi-Angriff", + effect: "Der Anwender sammelt eine große Menge Energie und greift das Ziel damit an. Der Typ der Attacke hängt von dem der Disc ab." }, "tenMillionVoltThunderbolt": { name: "10,000,000 Volt Thunderbolt", effect: "The user, Pikachu wearing a cap, powers up a jolt of electricity using its Z-Power and unleashes it. Critical hits land more easily." }, "mindBlown": { - name: "Mind Blown", - effect: "The user attacks everything around it by causing its own head to explode. This also damages the user." + name: "Knallkopf", + effect: "Der Anwender greift alle Pokémon in der Umgebung an, indem er seinen Kopf explodieren lässt. Dabei verletzt er sich auch selbst." }, "plasmaFists": { - name: "Plasma Fists", - effect: "The user attacks with electrically charged fists. This move changes Normal-type moves to Electric-type moves." + name: "Plasmafäuste", + effect: "Ein Angriff mit elektrisch geladenen Fäusten, der bewirkt, dass Normal-Attacken den Typ Elektro annehmen." }, "photonGeyser": { - name: "Photon Geyser", - effect: "The user attacks a target with a pillar of light. This move inflicts Attack or Sp. Atk damage—whichever stat is higher for the user." + name: "Photonen-Geysir", + effect: "Ein Angriff mit einer Lichtsäule. Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt." }, "lightThatBurnsTheSky": { - name: "Light That Burns the Sky", - effect: "This attack inflicts Attack or Sp. Atk damage—whichever stat is higher for the user, Necrozma. This move ignores the target's Ability." + name: "Licht des Erlöschens", + effect: "Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt. Ignoriert die Fähigkeit des Zieles." }, "searingSunrazeSmash": { - name: "Searing Sunraze Smash", - effect: "After obtaining Z-Power, the user, Solgaleo, attacks the target with full force. This move can ignore the effect of the target's Ability." + name: "Schmetternde Sonnenwalze", + effect: "Solgaleo greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles." }, "menacingMoonrazeMaelstrom": { - name: "Menacing Moonraze Maelstrom", - effect: "After obtaining Z-Power, the user, Lunala, attacks the target with full force. This move can ignore the effect of the target's Ability." + name: "Geballter Mondlaser", + effect: "Lunala greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles." }, "letsSnuggleForever": { - name: "Let's Snuggle Forever", - effect: "After obtaining Z-Power, the user, Mimikyu, punches the target with full force." + name: "Herzliche Knuddelkloppe", + effect: "Mimigma greift das Ziel mithilfe von Z-Kraft mit voller Wucht und viel Liebe an." }, "splinteredStormshards": { - name: "Splintered Stormshards", - effect: "After obtaining Z-Power, the user, Lycanroc, attacks the target with full force. This move negates the effect on the battlefield." + name: "Fataler Steinregen", + effect: "Wolwerock greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Herrschen besondere Feldeffekte, werden diese zusätzlich neutralisiert." }, "clangorousSoulblaze": { - name: "Clangorous Soulblaze", - effect: "After obtaining Z-Power, the user, Kommo-o, attacks the opposing Pokémon with full force. This move boosts the user's stats." + name: "Rasselnder Seelentanz", + effect: "Grandiras greift Gegner mithilfe von Z-Kraft mit voller Wucht an. Zusätzlich werden seine Statuswerte erhöht." }, "zippyZap": { - name: "Zippy Zap", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and results in a critical hit." + name: "Britzelturbo", + effect: "Ein stürmischer Blitz-Angriff mit hoher Erstschlag- und Volltrefferquote." }, "splishySplash": { - name: "Splishy Splash", - effect: "The user charges a huge wave with electricity and hits the opposing Pokémon with the wave. This may also leave the opposing Pokémon with paralysis." + name: "Plätschersurfer", + effect: "Pikachu greift das Ziel mit einer großen, elektrisch aufgeladenen Welle an. Das Ziel wird eventuell paralysiert." }, "floatyFall": { - name: "Floaty Fall", - effect: "The user floats in the air, and then dives at a steep angle to attack the target. This may also make the target flinch." + name: "Schwebesturz", + effect: "Pikachu schwebt nach oben und stürzt dann unvermittelt auf das Ziel herab. Das Ziel schreckt eventuell zurück." }, "pikaPapow": { - name: "Pika Papow", - effect: "The more Pikachu loves its Trainer, the greater the move's power. It never misses." + name: "Pika-Flash", + effect: "Je größer Pikachus Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer." }, "bouncyBubble": { - name: "Bouncy Bubble", - effect: "The user attacks by shooting water bubbles at the target. It then absorbs water and restores its HP by half the damage taken by the target." + name: "Blubbsauger", + effect: "Evoli greift mit Wasserblasen an. Evolis KP werden um die Hälfte des vom Wasser angerichteten Schadens geheilt." }, "buzzyBuzz": { - name: "Buzzy Buzz", - effect: "The user shoots a jolt of electricity to attack the target. This also leaves the target with paralysis." + name: "Knisterladung", + effect: "Evoli greift das Ziel mit Elektrizität an, wodurch dieses paralysiert wird." }, "sizzlySlide": { - name: "Sizzly Slide", - effect: "The user cloaks itself in fire and charges at the target. This also leaves the target with a burn." + name: "Flackerbrand", + effect: "Evoli hüllt sich in Flammen und stürzt sich beherzt auf das Ziel, welches dadurch Verbrennungen erleidet." }, "glitzyGlow": { - name: "Glitzy Glow", - effect: "The user bombards the target with telekinetic force. A wondrous wall of light is put up to weaken the power of the opposing Pokémon's special moves." + name: "Pulsieraura", + effect: "Evoli greift das Ziel gnadenlos mit telekinetischer Energie an. Dabei wird eine geheimnisvolle Wand erzeugt, die Spezial-Attacken des Ziels abschwächt." }, "baddyBad": { - name: "Baddy Bad", - effect: "The user acts bad and attacks the target. A wondrous wall of light is put up to weaken the power of the opposing Pokémon's physical moves." + name: "Quälzone", + effect: "Evoli zeigt sich von seiner dunklen Seite und greift an. Dabei wird eine geheimnisvolle Wand erzeugt, die physische Attacken des Ziels abschwächt." }, "sappySeed": { - name: "Sappy Seed", - effect: "The user grows a gigantic stalk that scatters seeds to attack the target. The seeds drain the target's HP every turn." + name: "Sprießbomben", + effect: "Evoli lässt eine riesige Ranke wachsen, von der Samen herabfallen, die dem Ziel schaden und ihm in jeder Runde KP absaugen." }, "freezyFrost": { - name: "Freezy Frost", - effect: "The user attacks with a crystal made of cold frozen haze. It eliminates every stat change among all the Pokémon engaged in battle." + name: "Klirrfrost", + effect: "Evoli greift mit einem schwarzen Kristall aus gefrorenem Nebel an. Die Statusveränderungen aller am Kampf beteiligten Pokémon werden zurückgesetzt." }, "sparklySwirl": { - name: "Sparkly Swirl", - effect: "The user attacks the target by wrapping it with a whirlwind of an overpowering scent. This also heals all status conditions of the user's party." + name: "Glitzersturm", + effect: "Evoli greift an, indem es das Ziel in einen nahezu erstickend wohlriechenden Wirbelwind hüllt. Das Team des Anwenders wird von Statusproblemen geheilt." }, "veeveeVolley": { - name: "Veevee Volley", - effect: "The more Eevee loves its Trainer, the greater the move's power. It never misses." + name: "Evo-Crash", + effect: "Je größer Evolis Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer." }, "doubleIronBash": { - name: "Double Iron Bash", - effect: "The user rotates, centering the hex nut in its chest, and then strikes with its arms twice in a row. This may also make the target flinch." + name: "Panzerfäuste", + effect: "Der Anwender rotiert um die Schraubenmutter in seinem Brustkorb und schlägt zweimal hintereinander mit den Armen zu. Das Ziel schreckt eventuell zurück." }, "maxGuard": { - name: "Max Guard", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession." + name: "Dyna-Wall", + effect: "Anwender wehrt jede Attacke ab. Scheitert eventuell bei Wiederholung." }, "dynamaxCannon": { - name: "Dynamax Cannon", - effect: "The user unleashes a strong beam from its core. This move deals twice the damage if the target is over level 200." + name: "Dynamax-Kanone", + effect: "Der Anwender schießt einen Strahl aus seinem Kern ab. Dynamaximierte Ziele erleiden doppelten Schaden." }, "snipeShot": { - name: "Snipe Shot", - effect: "The user ignores the effects of opposing Pokémon's moves and Abilities that draw in moves, allowing this move to hit the chosen target." + name: "Präzisionsschuss", + effect: "Die Attacke richtet sich gegen das ausgewählte Ziel, unabhängig von Fähigkeiten oder Attacken, die Angriffe auf sich ziehen." }, "jawLock": { - name: "Jaw Lock", - effect: "This move prevents the user and the target from switching out until either of them faints. The effect goes away if either of the Pokémon leaves the field." + name: "Fesselbiss", + effect: "Anwender und Ziel können nicht ausgetauscht werden, bis einer von ihnen kampfunfähig wird. Der Effekt endet, wenn eines der Pokémon das Kampffeld verlässt." }, "stuffCheeks": { - name: "Stuff Cheeks", - effect: "The user eats its held Berry, then sharply raises its Defense stat." + name: "Backenstopfer", + effect: "Der Anwender frisst die Beere, die er trägt, wodurch seine Verteidigung stark erhöht wird." }, "noRetreat": { - name: "No Retreat", - effect: "This move raises all the user's stats but prevents the user from switching out or fleeing." + name: "Finalformation", + effect: "Alle Statuswerte des Anwenders werden erhöht, aber dafür kann er weder ausgewechselt werden noch fliehen." }, "tarShot": { - name: "Tar Shot", - effect: "The user pours sticky tar over the target, lowering the target's Speed stat. The target becomes weaker to Fire-type moves." + name: "Teerschuss", + effect: "Der Anwender übergießt das Ziel mit klebrigem Teer und senkt so dessen Initiative. Dadurch wird es schwach gegenüber Feuer-Attacken." }, "magicPowder": { - name: "Magic Powder", - effect: "The user scatters a cloud of magic powder that changes the target to Psychic type." + name: "Magiepuder", + effect: "Das Ziel wird mit magischem Puder bestreut und nimmt den Typ Psycho an." }, "dragonDarts": { - name: "Dragon Darts", - effect: "The user attacks twice using Dreepy. If there are two targets, this move hits each target once." + name: "Drachenpfeile", + effect: "Der Anwender greift zweimal mit Grolldra an. Bei zwei Zielen werden beide jeweils einmal angegriffen." }, "teatime": { name: "Teatime", - effect: "The user has teatime with all the Pokémon in the battle. Each Pokémon eats its held Berry." + effect: "Der Anwender lädt alle am Kampf beteiligten Pokémon zu einem Teekränzchen ein, woraufhin diese die Beeren essen, die sie bei sich tragen." }, "octolock": { - name: "Octolock", - effect: "The user locks the target in and prevents it from fleeing. This move also lowers the target's Defense and Sp. Def every turn." + name: "Octoklammer", + effect: "Das Ziel wird an der Flucht gehindert und seine Verteidigung und Spezial-Verteidigung sinken jede Runde." }, "boltBeak": { - name: "Bolt Beak", - effect: "The user stabs the target with its electrified beak. If the user attacks before the target, the power of this move is doubled." + name: "Schockschnabel", + effect: "Der Anwender sticht mit einem elektrisch aufgeladenen Schnabel zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke." }, "fishiousRend": { - name: "Fishious Rend", - effect: "The user rends the target with its hard gills. If the user attacks before the target, the power of this move is doubled." + name: "Kiemenbiss", + effect: "Der Anwender beißt mit seinen harten Kiemen zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke." }, "courtChange": { - name: "Court Change", - effect: "With its mysterious power, the user swaps the effects on either side of the field." + name: "Seitenwechsel", + effect: "Durch eine mysteriöse Macht werden wirksame Effekte auf Mitstreiterseite und gegnerischer Seite getauscht." }, "maxFlare": { - name: "Max Flare", - effect: "This is a Fire-type attack Dynamax Pokémon use. The user intensifies the sun for five turns." + name: "Dyna-Brand", + effect: "Eine Feuer-Attacke, die nur Dynamax-Pokémon einsetzen können. Die Sonne brennt unbarmherzig fünf Runden lang." }, "maxFlutterby": { - name: "Max Flutterby", - effect: "This is a Bug-type attack Dynamax Pokémon use. This lowers the target's Sp. Atk stat." + name: "Dyna-Schwarm", + effect: "Eine Käfer-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Spezial-Angriff des Zieles." }, "maxLightning": { - name: "Max Lightning", - effect: "This is an Electric-type attack Dynamax Pokémon use. The user turns the ground into Electric Terrain for five turns." + name: "Dyna-Gewitter", + effect: "Eine Elektro-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Elektrofeld." }, "maxStrike": { - name: "Max Strike", - effect: "This is a Normal-type attack Dynamax Pokémon use. This lowers the target's Speed stat." + name: "Dyna-Angriff", + effect: "Eine Normal-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Initiative des Zieles." }, "maxKnuckle": { - name: "Max Knuckle", - effect: "This is a Fighting-type attack Dynamax Pokémon use. This raises ally Pokémon's Attack stats." + name: "Dyna-Faust", + effect: "Eine Kampf-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Angriff der Mitstreiterseite." }, "maxPhantasm": { - name: "Max Phantasm", - effect: "This is a Ghost-type attack Dynamax Pokémon use. This lowers the target's Defense stat." + name: "Dyna-Spuk", + effect: "Eine Geister-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Verteidigung des Zieles." }, "maxHailstorm": { - name: "Max Hailstorm", - effect: "This is an Ice-type attack Dynamax Pokémon use. The user summons a hailstorm lasting five turns." + name: "Dyna-Frost", + effect: "Eine Eis-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Hagelsturm toben." }, "maxOoze": { - name: "Max Ooze", - effect: "This is a Poison-type attack Dynamax Pokémon use. This raises ally Pokémon's Sp. Atk stats." + name: "Dyna-Giftschwall", + effect: "Eine Gift-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Spezial-Angriff der Mitstreiterseite." }, "maxGeyser": { - name: "Max Geyser", - effect: "This is a Water-type attack Dynamax Pokémon use. The user summons a heavy rain that falls for five turns." + name: "Dyna-Flut", + effect: "Eine Wasser-Attacke, die nur Dynamax-Pokémon einsetzen können. Löst fünf Runden lang strömenden Regen aus." }, "maxAirstream": { - name: "Max Airstream", - effect: "This is a Flying-type attack Dynamax Pokémon use. This raises ally Pokémon's Speed stats." + name: "Dyna-Düse", + effect: "Eine Flug-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Initiative der Mitstreiterseite." }, "maxStarfall": { - name: "Max Starfall", - effect: "This is a Fairy-type attack Dynamax Pokémon use. The user turns the ground into Misty Terrain for five turns." + name: "Dyna-Zauber", + effect: "Eine Feen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Nebelfeld." }, "maxWyrmwind": { - name: "Max Wyrmwind", - effect: "This is a Dragon-type attack Dynamax Pokémon use. This lowers the target's Attack stat." + name: "Dyna-Wyrm", + effect: "Eine Drachen-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Angriff des Zieles." }, "maxMindstorm": { - name: "Max Mindstorm", - effect: "This is a Psychic-type attack Dynamax Pokémon use. The user turns the ground into Psychic Terrain for five turns." + name: "Dyna-Kinese", + effect: "Eine Psycho-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Psychofeld." }, "maxRockfall": { - name: "Max Rockfall", - effect: "This is a Rock-type attack Dynamax Pokémon use. The user summons a sandstorm lasting five turns." + name: "Dyna-Brocken", + effect: "Eine Gesteins-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Sandsturm toben." }, "maxQuake": { - name: "Max Quake", - effect: "This is a Ground-type attack Dynamax Pokémon use. This raises ally Pokémon's Sp. Def stats." + name: "Dyna-Erdstoß", + effect: "Eine Boden-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Spezial-Verteidigung der Mitstreiterseite." }, "maxDarkness": { - name: "Max Darkness", - effect: "This is a Dark-type attack Dynamax Pokémon use. This lowers the target's Sp. Def stat." + name: "Dyna-Dunkel", + effect: "Eine Unlicht-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Spezial-Verteidigung des Zieles." }, "maxOvergrowth": { - name: "Max Overgrowth", - effect: "This is a Grass-type attack Dynamax Pokémon use. The user turns the ground into Grassy Terrain for five turns." + name: "Dyna-Flora", + effect: "Eine Pflanzen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Grasfeld." }, "maxSteelspike": { - name: "Max Steelspike", - effect: "This is a Steel-type attack Dynamax Pokémon use. This raises ally Pokémon's Defense stats." + name: "Dyna-Stahlzacken", + effect: "Eine Stahl-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Verteidigung der Mitstreiterseite." }, "clangorousSoul": { - name: "Clangorous Soul", - effect: "The user raises all its stats by using some of its HP." + name: "Seelentanz", + effect: "Der Anwender setzt eine kleine Menge an KP ein, um alle seine Statuswerte zu erhöhen." }, "bodyPress": { name: "Body Press", - effect: "The user attacks by slamming its body into the target. The higher the user's Defense, the more damage it can inflict on the target." + effect: "Der Anwender greift mit seinem ganzen Körper an. Je höher seine Verteidigung ist, desto mehr Schaden richtet er an." }, "decorate": { - name: "Decorate", - effect: "The user sharply raises the target's Attack and Sp. Atk stats by decorating the target." + name: "Verzierung", + effect: "Durch Verzierungen werden der Angriff und Spezial-Angriff des Zieles stark erhöht." }, "drumBeating": { - name: "Drum Beating", - effect: "The user plays its drum, controlling the drum's roots to attack the target. This also lowers the target's Speed stat." + name: "Trommelschläge", + effect: "Der Anwender kontrolliert durch Trommeln Wurzeln, die das Ziel angreifen und dessen Initiative senken." }, "snapTrap": { - name: "Snap Trap", - effect: "The user snares the target in a snap trap for four to five turns." + name: "Fangeisen", + effect: "Das Ziel wird vier bis fünf Runden lang in einem Fangeisen festgehalten und angegriffen." }, "pyroBall": { - name: "Pyro Ball", - effect: "The user attacks by igniting a small stone and launching it as a fiery ball at the target. This may also leave the target with a burn." + name: "Feuerball", + effect: "Der Anwender greift mit einem Ball aus Feuer an, den er durch Anzünden eines kleinen Steins erzeugt. Fügt dem Ziel eventuell Verbrennungen zu." }, "behemothBlade": { - name: "Behemoth Blade", - effect: "The user wields a large, powerful sword using its whole body and cuts the target in a vigorous attack." + name: "Gigantenhieb", + effect: "Der Anwender wird zu einem riesigen Schwert und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden." }, "behemothBash": { - name: "Behemoth Bash", - effect: "The user's body becomes a firm shield and slams into the target fiercely." + name: "Gigantenstoß", + effect: "Der Anwender wird zu einem riesigen Schild und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden." }, "auraWheel": { - name: "Aura Wheel", - effect: "Morpeko attacks and raises its Speed with the energy stored in its cheeks. This move's type changes depending on the user's form." + name: "Aura-Rad", + effect: "Mithilfe der in den Backentaschen gespeicherten Energie greift der Anwender an und erhöht seine Initiative. Der Typ der Attacke hängt von Morpekos Form ab." }, "breakingSwipe": { - name: "Breaking Swipe", - effect: "The user swings its tough tail wildly and attacks opposing Pokémon. This also lowers their Attack stats." + name: "Breitseite", + effect: "Der Anwender schwingt heftig seinen robusten Schweif, um damit gegnerische Pokémon anzugreifen und ihren Angriffs-Wert zu senken." }, "branchPoke": { - name: "Branch Poke", - effect: "The user attacks the target by poking it with a sharply pointed branch." + name: "Zweigstoß", + effect: "Der Anwender attackiert das Ziel mit einem spitzen Zweig." }, "overdrive": { name: "Overdrive", - effect: "The user attacks opposing Pokémon by twanging a guitar or bass guitar, causing a huge echo and strong vibration." + effect: "Der Anwender haut in die Saiten seiner Gitarre oder seines Basses und erzeugt dröhnende, kraftvolle Vibrationen, die gegnerischen Pokémon schaden." }, "appleAcid": { - name: "Apple Acid", - effect: "The user attacks the target with an acidic liquid created from tart apples. This also lowers the target's Sp. Def stat." + name: "Apfelsäure", + effect: "Der Anwender greift mit einer aus einem sauren Apfel hergestellten säurehaltigen Flüssigkeit an. Dabei wird die Spezial-Verteidigung des Zieles gesenkt." }, "gravApple": { - name: "Grav Apple", - effect: "The user inflicts damage by dropping an apple from high above. This also lowers the target's Defense stat." + name: "Gravitation", + effect: "Ein Apfel fällt aus großer Höhe herab und richtet Schaden an. Dabei wird die Verteidigung des Zieles gesenkt." }, "spiritBreak": { - name: "Spirit Break", - effect: "The user attacks the target with so much force that it could break the target's spirit. This also lowers the target's Sp. Atk stat." + name: "Seelenbruch", + effect: "Die Attacke trifft das Ziel mit so viel Wucht, dass es den Mut verliert. Dabei wird sein Spezial-Angriff gesenkt." }, "strangeSteam": { - name: "Strange Steam", - effect: "The user attacks the target by emitting steam. This may also confuse the target." + name: "Wunderdampf", + effect: "Der Anwender stößt Dampf aus, mit dem er das Ziel angreift. Dieses wird eventuell verwirrt." }, "lifeDew": { - name: "Life Dew", - effect: "The user scatters mysterious water around and restores the HP of itself and its ally Pokémon in the battle." + name: "Lebenstropfen", + effect: "Wundersames Wasser heilt die KP des Anwenders und seiner am Kampf beteiligten Mitstreiter." }, "obstruct": { - name: "Obstruct", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession. Direct contact harshly lowers the attacker's Defense stat." + name: "Abblocker", + effect: "Der Anwender wehrt jede Attacke ab. Berührt ihn währenddessen ein Pokémon, sinkt dessen Verteidigung stark. Scheitert eventuell bei Wiederholung." }, "falseSurrender": { - name: "False Surrender", - effect: "The user pretends to bow its head, but then it stabs the target with its disheveled hair. This attack never misses." + name: "Kniefalltrick", + effect: "Der Anwender tut so, als würde er sich verneigen, und sticht dann mit seinem zerzausten Fell zu. Diese Attacke trifft immer." }, "meteorAssault": { - name: "Meteor Assault", - effect: "The user attacks wildly with its thick leek. The user can't move on the next turn, because the force of this move makes it stagger." + name: "Sternensturm", + effect: "Der Anwender greift mit seiner Lauchstange an. Von der Wucht der Attacke wird ihm jedoch so schwindelig, dass er in der nächsten Runde nicht handeln kann." }, "eternabeam": { - name: "Eternabeam", - effect: "This is Eternatus's most powerful attack in its original form. The user can't move on the next turn." + name: "Unendynastrahlen", + effect: "Der mächtigste Angriff, über den Endynalos in seiner ursprünglichen Form verfügt. In der nächsten Runde kann der Anwender nicht handeln." }, "steelBeam": { - name: "Steel Beam", - effect: "The user fires a beam of steel that it collected from its entire body. This also damages the user." + name: "Stahlstrahl", + effect: "Der Anwender schießt Stahl, den er in seinem ganzen Körper angesammelt hat, in Form eines mächtigen Strahls ab. Dabei verletzt er sich auch selbst." }, "expandingForce": { - name: "Expanding Force", - effect: "The user attacks the target with its psychic power. This move's power goes up and damages all opposing Pokémon on Psychic Terrain." + name: "Flächenmacht", + effect: "Der Anwender greift das Ziel mit Psycho-Kräften an. Wenn ein Psychofeld aktiv ist, steigt die Stärke und es wird allen gegnerischen Pokémon Schaden zugefügt." }, "steelRoller": { - name: "Steel Roller", - effect: "The user attacks while destroying the terrain. This move fails when the ground hasn't turned into a terrain." + name: "Eisenwalze", + effect: "Der Anwender greift an und zerstört dabei etwaige Felder. Ist kein Feld aktiv, schlägt die Attacke fehl." }, "scaleShot": { - name: "Scale Shot", - effect: "The user attacks by shooting scales two to five times in a row. This move boosts the user's Speed stat but lowers its Defense stat." + name: "Schuppenschuss", + effect: "Der Anwender greift das Ziel zwei- bis fünfmal hintereinander mit Schuppen-Geschossen an. Erhöht die eigene Initiative, aber senkt die Verteidigung." }, "meteorBeam": { - name: "Meteor Beam", - effect: "In this two-turn attack, the user gathers space power and boosts its Sp. Atk stat, then attacks the target on the next turn." + name: "Meteorstrahl", + effect: "Der Anwender sammelt in Runde 1 kosmische Kräfte und erhöht damit seinen Spezial-Angriff, bevor er in Runde 2 das Ziel angreift." }, "shellSideArm": { - name: "Shell Side Arm", - effect: "This move inflicts physical or special damage, whichever will be more effective. This may also poison the target." + name: "Muschelwaffe", + effect: "Je nachdem, was höher ausfällt, richtet diese Attacke entweder physischen oder Spezial-Schaden an. Das Ziel wird eventuell vergiftet." }, "mistyExplosion": { - name: "Misty Explosion", - effect: "The user attacks everything around it and faints upon using this move. This move's power is increased on Misty Terrain." + name: "Nebelexplosion", + effect: "Der Anwender greift alle Pokémon im Umkreis an und wird danach kampfunfähig. Die Stärke dieser Attacke steigt, wenn ein Nebelfeld aktiv ist." }, "grassyGlide": { - name: "Grassy Glide", - effect: "Gliding on the ground, the user attacks the target. This move always goes first on Grassy Terrain." + name: "Grasrutsche", + effect: "Der Anwender rutscht über den Boden und greift das Ziel an. Ermöglicht den Erstschlag, wenn ein Grasfeld aktiv ist." }, "risingVoltage": { - name: "Rising Voltage", - effect: "The user attacks with electric voltage rising from the ground. This move's power doubles when the target is on Electric Terrain." + name: "Hochspannung", + effect: "Der Anwender greift mit aus dem Boden aufsteigender Elektrizität an. Die Stärke der Attacke wird verdoppelt, wenn beim Gegner ein Elektrofeld aktiv ist." }, "terrainPulse": { - name: "Terrain Pulse", - effect: "The user utilizes the power of the terrain to attack. This move's type and power changes depending on the terrain when it's used." + name: "Feldimpuls", + effect: "Der Anwender nutzt die Kraft des aktiven Feldes für seinen Angriff. Der Typ und die Stärke der Attacke ändern sich je nach Art des aktiven Feldes." }, "skitterSmack": { - name: "Skitter Smack", - effect: "The user skitters behind the target to attack. This also lowers the target's Sp. Atk stat." + name: "Krabbelkracher", + effect: "Der Anwender kriecht hinter das Ziel, greift es an und senkt dabei dessen Spezial-Angriff." }, "burningJealousy": { - name: "Burning Jealousy", - effect: "The user attacks with energy from jealousy. This leaves all opposing Pokémon that have had their stats boosted during the turn with a burn." + name: "Neidflammen", + effect: "Der Anwender greift mit der Energie seines Neids an und fügt allen gegnerischen Pokémon, deren Statuswerte in dieser Runde erhöht wurden, Verbrennungen zu." }, "lashOut": { - name: "Lash Out", - effect: "The user lashes out to vent its frustration toward the target. If the user's stats were lowered during this turn, the power of this move is doubled." + name: "Frustventil", + effect: "Der Anwender entlädt seinen Frust in einem Angriff. Die Stärke der Attacke wird verdoppelt, wenn seine Statuswerte in dieser Runde gesenkt wurden." }, "poltergeist": { name: "Poltergeist", - effect: "The user attacks the target by controlling the target's item. The move fails if the target doesn't have an item." + effect: "Der Anwender greift das Ziel mit dessen getragenem Item an. Die Attacke schlägt fehl, wenn das Ziel kein Item trägt." }, "corrosiveGas": { - name: "Corrosive Gas", - effect: "The user surrounds everything around it with highly acidic gas and melts away items they hold." + name: "Korrosionsgas", + effect: "Der Anwender greift alle Pokémon im Umkreis mit einem ätzenden Gas an. Getragene Items werden dadurch zersetzt." }, "coaching": { name: "Coaching", - effect: "The user properly coaches its ally Pokémon, boosting their Attack and Defense stats." + effect: "Der Anwender sorgt durch geschickte Anweisungen dafür, dass der Angriff und die Verteidigung seiner Mitstreiter steigen." }, "flipTurn": { - name: "Flip Turn", - effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting." + name: "Rollwende", + effect: "Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon." }, "tripleAxel": { - name: "Triple Axel", - effect: "A consecutive three-kick attack that becomes more powerful with each successful hit." + name: "Dreifach-Axel", + effect: "Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu." }, "dualWingbeat": { - name: "Dual Wingbeat", - effect: "The user slams the target with its wings. The target is hit twice in a row." + name: "Doppelflügel", + effect: "Der Anwender trifft das Ziel zweimal hintereinander mit seinen Flügeln und fügt ihm so Schaden zu." }, "scorchingSands": { - name: "Scorching Sands", - effect: "The user throws scorching sand at the target to attack. This may also leave the target with a burn." + name: "Brandsand", + effect: "Der Anwender greift das Ziel mit brennend heißem Sand an und fügt ihm eventuell Verbrennungen zu." }, "jungleHealing": { - name: "Jungle Healing", - effect: "The user becomes one with the jungle, restoring HP and healing any status conditions of itself and its ally Pokémon in battle." + name: "Dschungelheilung", + effect: "Der Anwender wird eins mit dem Dschungel und heilt bei sich und seinen am Kampf beteiligten Mitstreitern KP und hebt jegliche Statusprobleme auf." }, "wickedBlow": { - name: "Wicked Blow", - effect: "The user, having mastered the Dark style, strikes the target with a fierce blow. This attack always results in a critical hit." + name: "Finstertreffer", + effect: "Der Anwender hat den Stil des Unlichts gemeistert und führt einen fokussierten, harten Schlag mit Volltreffergarantie aus." }, "surgingStrikes": { - name: "Surging Strikes", - effect: "The user, having mastered the Water style, strikes the target with a flowing motion three times in a row. This attack always results in a critical hit." + name: "Trefferschwall", + effect: "Der Anwender hat den Stil des Wassers gemeistert und führt mit fließenden Bewegungen drei Angriffe in Folge mit Volltreffergarantie aus." }, "thunderCage": { - name: "Thunder Cage", - effect: "The user traps the target in a cage of sparking electricity for four to five turns." + name: "Blitzgefängnis", + effect: "Das Ziel wird für vier bis fünf Runden in einem elektrischen Käfig gefangen." }, "dragonEnergy": { - name: "Dragon Energy", - effect: "Converting its life-force into power, the user attacks opposing Pokémon. The lower the user's HP, the lower the move's power." + name: "Drachenkräfte", + effect: "Der Anwender wandelt seine Lebenskraft in Energie um und greift gegnerische Pokémon an. Je höher seine KP sind, desto mehr Schaden wird angerichtet." }, "freezingGlare": { - name: "Freezing Glare", - effect: "The user shoots its psychic power from its eyes to attack. This may also leave the target frozen." + name: "Eisiger Blick", + effect: "Der Anwender greift das Ziel mit Psycho-Kräften an, die er aus seinen Augen abschießt. Das Ziel friert eventuell ein." }, "fieryWrath": { - name: "Fiery Wrath", - effect: "The user transforms its wrath into a fire-like aura to attack. This may also make opposing Pokémon flinch." + name: "Brennender Zorn", + effect: "Der Anwender wandelt seinen Zorn in eine flammende Aura um und greift damit gegnerische Pokémon an. Diese schrecken eventuell zurück." }, "thunderousKick": { - name: "Thunderous Kick", - effect: "The user overwhelms the target with lightning-like movement before delivering a kick. This also lowers the target's Defense stat." + name: "Donnernder Tritt", + effect: "Der Anwender bringt das Ziel mit blitzschnellen Bewegungen durcheinander und tritt dann zu. Senkt die Verteidigung des Zieles." }, "glacialLance": { - name: "Glacial Lance", - effect: "The user attacks by hurling a blizzard-cloaked icicle lance at opposing Pokémon." + name: "Blizzardlanze", + effect: "Der Anwender wirft eine in einen Blizzard gehüllte Lanze aus Eis auf gegnerische Pokémon." }, "astralBarrage": { - name: "Astral Barrage", - effect: "The user attacks by sending a frightful amount of small ghosts at opposing Pokémon." + name: "Astralfragmente", + effect: "Der Anwender greift gegnerische Pokémon mit vielen kleinen Spukgestalten an." }, "eerieSpell": { - name: "Eerie Spell", - effect: "The user attacks with its tremendous psychic power. This also removes 3 PP from the target's last move." + name: "Schauderspruch", + effect: "Der Anwender greift mit gewaltigen Psycho-Kräften an. Die AP der letzten Attacke des Zieles werden um 3 Punkte gesenkt." }, "direClaw": { name: "Dire Claw", diff --git a/src/locales/de/pokemon.ts b/src/locales/de/pokemon.ts index 09be8894e..9efecb819 100644 --- a/src/locales/de/pokemon.ts +++ b/src/locales/de/pokemon.ts @@ -1,380 +1,380 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bulbasaur", - "ivysaur": "Ivysaur", - "venusaur": "Venusaur", - "charmander": "Charmander", - "charmeleon": "Charmeleon", - "charizard": "Charizard", - "squirtle": "Squirtle", - "wartortle": "Wartortle", - "blastoise": "Blastoise", - "caterpie": "Caterpie", - "metapod": "Metapod", - "butterfree": "Butterfree", - "weedle": "Weedle", - "kakuna": "Kakuna", - "beedrill": "Beedrill", - "pidgey": "Pidgey", - "pidgeotto": "Pidgeotto", - "pidgeot": "Pidgeot", - "rattata": "Rattata", - "raticate": "Raticate", - "spearow": "Spearow", - "fearow": "Fearow", - "ekans": "Ekans", + "bulbasaur": "Bisasam", + "ivysaur": "Bisaknosp", + "venusaur": "Bisaflor", + "charmander": "Glumanda", + "charmeleon": "Glutexo", + "charizard": "Glurak", + "squirtle": "Schiggy", + "wartortle": "Schillok", + "blastoise": "Turtok", + "caterpie": "Raupy", + "metapod": "Safcon", + "butterfree": "Smettbo", + "weedle": "Hornliu", + "kakuna": "Kokuna", + "beedrill": "Bibor", + "pidgey": "Taubsi", + "pidgeotto": "Tauboga", + "pidgeot": "Tauboss", + "rattata": "Rattfratz", + "raticate": "Rattikarl", + "spearow": "Habitak", + "fearow": "Ibitak", + "ekans": "Rettan", "arbok": "Arbok", "pikachu": "Pikachu", "raichu": "Raichu", - "sandshrew": "Sandshrew", - "sandslash": "Sandslash", + "sandshrew": "Sandan", + "sandslash": "Sandamer", "nidoran_f": "Nidoran♀", "nidorina": "Nidorina", "nidoqueen": "Nidoqueen", "nidoran_m": "Nidoran♂", "nidorino": "Nidorino", "nidoking": "Nidoking", - "clefairy": "Clefairy", - "clefable": "Clefable", + "clefairy": "Piepi", + "clefable": "Pixi", "vulpix": "Vulpix", - "ninetales": "Ninetales", - "jigglypuff": "Jigglypuff", - "wigglytuff": "Wigglytuff", + "ninetales": "Vulnona", + "jigglypuff": "Pummeluff", + "wigglytuff": "Knuddeluff", "zubat": "Zubat", "golbat": "Golbat", - "oddish": "Oddish", - "gloom": "Gloom", - "vileplume": "Vileplume", + "oddish": "Myrapla", + "gloom": "Duflor", + "vileplume": "Giflor", "paras": "Paras", - "parasect": "Parasect", - "venonat": "Venonat", - "venomoth": "Venomoth", - "diglett": "Diglett", - "dugtrio": "Dugtrio", - "meowth": "Meowth", - "persian": "Persian", - "psyduck": "Psyduck", - "golduck": "Golduck", - "mankey": "Mankey", - "primeape": "Primeape", - "growlithe": "Growlithe", - "arcanine": "Arcanine", - "poliwag": "Poliwag", - "poliwhirl": "Poliwhirl", - "poliwrath": "Poliwrath", + "parasect": "Parasek", + "venonat": "Bluzuk", + "venomoth": "Omot", + "diglett": "Digda", + "dugtrio": "Digdri", + "meowth": "Mauzi", + "persian": "Snobilikat", + "psyduck": "Enton", + "golduck": "Entoron", + "mankey": "Menki", + "primeape": "Rasaff", + "growlithe": "Fukano", + "arcanine": "Arkani", + "poliwag": "Quapsel", + "poliwhirl": "Quaputzi", + "poliwrath": "Quappo", "abra": "Abra", "kadabra": "Kadabra", - "alakazam": "Alakazam", - "machop": "Machop", - "machoke": "Machoke", - "machamp": "Machamp", - "bellsprout": "Bellsprout", - "weepinbell": "Weepinbell", - "victreebel": "Victreebel", - "tentacool": "Tentacool", - "tentacruel": "Tentacruel", - "geodude": "Geodude", - "graveler": "Graveler", - "golem": "Golem", - "ponyta": "Ponyta", - "rapidash": "Rapidash", - "slowpoke": "Slowpoke", - "slowbro": "Slowbro", - "magnemite": "Magnemite", + "alakazam": "Simsala", + "machop": "Machollo", + "machoke": "Maschock", + "machamp": "Machomei", + "bellsprout": "Knofensa", + "weepinbell": "Ultrigaria", + "victreebel": "Sarzenia", + "tentacool": "Tentacha", + "tentacruel": "Tentoxa", + "geodude": "Kleinstein", + "graveler": "Georok", + "golem": "Geowaz", + "ponyta": "Ponita", + "rapidash": "Gallopa", + "slowpoke": "Flegmon", + "slowbro": "Lahmus", + "magnemite": "Magnetilo", "magneton": "Magneton", - "farfetchd": "Farfetch'd", - "doduo": "Doduo", - "dodrio": "Dodrio", - "seel": "Seel", - "dewgong": "Dewgong", - "grimer": "Grimer", - "muk": "Muk", - "shellder": "Shellder", - "cloyster": "Cloyster", - "gastly": "Gastly", - "haunter": "Haunter", + "farfetchd": "Porenta", + "doduo": "Dodu", + "dodrio": "Dodri", + "seel": "Jurob", + "dewgong": "Jugong", + "grimer": "Sleima", + "muk": "Sleimok", + "shellder": "Muschas", + "cloyster": "Austos", + "gastly": "Nebulak", + "haunter": "Alpollo", "gengar": "Gengar", "onix": "Onix", - "drowzee": "Drowzee", + "drowzee": "Traumato", "hypno": "Hypno", "krabby": "Krabby", "kingler": "Kingler", - "voltorb": "Voltorb", - "electrode": "Electrode", - "exeggcute": "Exeggcute", - "exeggutor": "Exeggutor", - "cubone": "Cubone", - "marowak": "Marowak", - "hitmonlee": "Hitmonlee", - "hitmonchan": "Hitmonchan", - "lickitung": "Lickitung", - "koffing": "Koffing", - "weezing": "Weezing", - "rhyhorn": "Rhyhorn", - "rhydon": "Rhydon", - "chansey": "Chansey", + "voltorb": "Voltobal", + "electrode": "Lektrobal", + "exeggcute": "Owei", + "exeggutor": "Kokowei", + "cubone": "Tragosso", + "marowak": "Knogga", + "hitmonlee": "Kicklee", + "hitmonchan": "Nockchan", + "lickitung": "Schlurp", + "koffing": "Smogon", + "weezing": "Smogmog", + "rhyhorn": "Rihorn", + "rhydon": "Rizeros", + "chansey": "Chaneira", "tangela": "Tangela", - "kangaskhan": "Kangaskhan", - "horsea": "Horsea", - "seadra": "Seadra", - "goldeen": "Goldeen", - "seaking": "Seaking", - "staryu": "Staryu", + "kangaskhan": "Kangama", + "horsea": "Seeper", + "seadra": "Seemon", + "goldeen": "Goldini", + "seaking": "Golking", + "staryu": "Sterndu", "starmie": "Starmie", - "mr_mime": "Mr. Mime", - "scyther": "Scyther", - "jynx": "Jynx", - "electabuzz": "Electabuzz", + "mr_mime": "Pantimos", + "scyther": "Sichlor", + "jynx": "Rossana", + "electabuzz": "Elektek", "magmar": "Magmar", "pinsir": "Pinsir", "tauros": "Tauros", - "magikarp": "Magikarp", - "gyarados": "Gyarados", + "magikarp": "Karpador", + "gyarados": "Garados", "lapras": "Lapras", "ditto": "Ditto", - "eevee": "Eevee", - "vaporeon": "Vaporeon", - "jolteon": "Jolteon", - "flareon": "Flareon", + "eevee": "Evoli", + "vaporeon": "Aquana", + "jolteon": "Blitza", + "flareon": "Flamara", "porygon": "Porygon", - "omanyte": "Omanyte", - "omastar": "Omastar", + "omanyte": "Amonitas", + "omastar": "Amoroso", "kabuto": "Kabuto", "kabutops": "Kabutops", "aerodactyl": "Aerodactyl", - "snorlax": "Snorlax", - "articuno": "Articuno", + "snorlax": "Relaxo", + "articuno": "Arktos", "zapdos": "Zapdos", - "moltres": "Moltres", + "moltres": "Lavados", "dratini": "Dratini", - "dragonair": "Dragonair", - "dragonite": "Dragonite", - "mewtwo": "Mewtwo", + "dragonair": "Dragonir", + "dragonite": "Dragoran", + "mewtwo": "Mewtu", "mew": "Mew", - "chikorita": "Chikorita", - "bayleef": "Bayleef", - "meganium": "Meganium", - "cyndaquil": "Cyndaquil", - "quilava": "Quilava", - "typhlosion": "Typhlosion", - "totodile": "Totodile", - "croconaw": "Croconaw", - "feraligatr": "Feraligatr", - "sentret": "Sentret", - "furret": "Furret", + "chikorita": "Endivie", + "bayleef": "Lorblatt", + "meganium": "Meganie", + "cyndaquil": "Feurigel", + "quilava": "Igelavar", + "typhlosion": "Tornupto", + "totodile": "Karnimani", + "croconaw": "Tyracroc", + "feraligatr": "Impergator", + "sentret": "Wiesor", + "furret": "Wiesenior", "hoothoot": "Hoothoot", - "noctowl": "Noctowl", + "noctowl": "Noctuh", "ledyba": "Ledyba", "ledian": "Ledian", - "spinarak": "Spinarak", + "spinarak": "Webarak", "ariados": "Ariados", - "crobat": "Crobat", - "chinchou": "Chinchou", + "crobat": "Iksbat", + "chinchou": "Lampi", "lanturn": "Lanturn", "pichu": "Pichu", - "cleffa": "Cleffa", - "igglybuff": "Igglybuff", + "cleffa": "Pii", + "igglybuff": "Fluffeluff", "togepi": "Togepi", "togetic": "Togetic", "natu": "Natu", "xatu": "Xatu", - "mareep": "Mareep", - "flaaffy": "Flaaffy", + "mareep": "Voltilamm", + "flaaffy": "Waaty", "ampharos": "Ampharos", - "bellossom": "Bellossom", + "bellossom": "Blubella", "marill": "Marill", "azumarill": "Azumarill", - "sudowoodo": "Sudowoodo", - "politoed": "Politoed", - "hoppip": "Hoppip", - "skiploom": "Skiploom", - "jumpluff": "Jumpluff", - "aipom": "Aipom", - "sunkern": "Sunkern", - "sunflora": "Sunflora", + "sudowoodo": "Mogelbaum", + "politoed": "Quaxo", + "hoppip": "Hoppspross", + "skiploom": "Hubelupf", + "jumpluff": "Papungha", + "aipom": "Griffel", + "sunkern": "Sonnkern", + "sunflora": "Sonnflora", "yanma": "Yanma", - "wooper": "Wooper", - "quagsire": "Quagsire", - "espeon": "Espeon", - "umbreon": "Umbreon", - "murkrow": "Murkrow", - "slowking": "Slowking", - "misdreavus": "Misdreavus", - "unown": "Unown", - "wobbuffet": "Wobbuffet", + "wooper": "Felino", + "quagsire": "Morlord", + "espeon": "Psiana", + "umbreon": "Nachtara", + "murkrow": "Kramurx", + "slowking": "Laschoking", + "misdreavus": "Traunfugil", + "unown": "Icognito", + "wobbuffet": "Woingenau", "girafarig": "Girafarig", - "pineco": "Pineco", - "forretress": "Forretress", - "dunsparce": "Dunsparce", - "gligar": "Gligar", - "steelix": "Steelix", + "pineco": "Tannza", + "forretress": "Forstellka", + "dunsparce": "Dummisel", + "gligar": "Skorgla", + "steelix": "Stahlos", "snubbull": "Snubbull", "granbull": "Granbull", - "qwilfish": "Qwilfish", - "scizor": "Scizor", - "shuckle": "Shuckle", - "heracross": "Heracross", - "sneasel": "Sneasel", + "qwilfish": "Baldorfish", + "scizor": "Scherox", + "shuckle": "Pottrott", + "heracross": "Skaraborn", + "sneasel": "Sniebel", "teddiursa": "Teddiursa", "ursaring": "Ursaring", - "slugma": "Slugma", + "slugma": "Schneckmag", "magcargo": "Magcargo", - "swinub": "Swinub", - "piloswine": "Piloswine", - "corsola": "Corsola", + "swinub": "Quiekel", + "piloswine": "Keifel", + "corsola": "Corasonn", "remoraid": "Remoraid", "octillery": "Octillery", - "delibird": "Delibird", - "mantine": "Mantine", - "skarmory": "Skarmory", - "houndour": "Houndour", - "houndoom": "Houndoom", - "kingdra": "Kingdra", + "delibird": "Botogel", + "mantine": "Mantax", + "skarmory": "Panzaeron", + "houndour": "Hunduster", + "houndoom": "Hundemon", + "kingdra": "Seedraking", "phanpy": "Phanpy", "donphan": "Donphan", "porygon2": "Porygon2", - "stantler": "Stantler", - "smeargle": "Smeargle", - "tyrogue": "Tyrogue", - "hitmontop": "Hitmontop", - "smoochum": "Smoochum", + "stantler": "Damhirplex", + "smeargle": "Farbeagle", + "tyrogue": "Rabauz", + "hitmontop": "Kapoera", + "smoochum": "Kussilla", "elekid": "Elekid", "magby": "Magby", "miltank": "Miltank", - "blissey": "Blissey", + "blissey": "Heiteira", "raikou": "Raikou", "entei": "Entei", "suicune": "Suicune", "larvitar": "Larvitar", "pupitar": "Pupitar", - "tyranitar": "Tyranitar", + "tyranitar": "Despotar", "lugia": "Lugia", "ho_oh": "Ho-Oh", "celebi": "Celebi", - "treecko": "Treecko", - "grovyle": "Grovyle", - "sceptile": "Sceptile", - "torchic": "Torchic", - "combusken": "Combusken", - "blaziken": "Blaziken", - "mudkip": "Mudkip", - "marshtomp": "Marshtomp", - "swampert": "Swampert", - "poochyena": "Poochyena", - "mightyena": "Mightyena", - "zigzagoon": "Zigzagoon", - "linoone": "Linoone", - "wurmple": "Wurmple", - "silcoon": "Silcoon", - "beautifly": "Beautifly", - "cascoon": "Cascoon", - "dustox": "Dustox", - "lotad": "Lotad", - "lombre": "Lombre", - "ludicolo": "Ludicolo", - "seedot": "Seedot", - "nuzleaf": "Nuzleaf", - "shiftry": "Shiftry", - "taillow": "Taillow", - "swellow": "Swellow", + "treecko": "Geckarbor", + "grovyle": "Reptain", + "sceptile": "Gewaldro", + "torchic": "Flemmli", + "combusken": "Jungglut", + "blaziken": "Lohgock", + "mudkip": "Hydropi", + "marshtomp": "Moorabbel", + "swampert": "Sumpex", + "poochyena": "Fiffyen", + "mightyena": "Magnayen", + "zigzagoon": "Zigzachs", + "linoone": "Geradaks", + "wurmple": "Waumpel", + "silcoon": "Schaloko", + "beautifly": "Papinella", + "cascoon": "Panekon", + "dustox": "Pudox", + "lotad": "Loturzel", + "lombre": "Lombrero", + "ludicolo": "Kappalores", + "seedot": "Samurzel", + "nuzleaf": "Blanas", + "shiftry": "Tengulist", + "taillow": "Schwalbini", + "swellow": "Schwalboss", "wingull": "Wingull", "pelipper": "Pelipper", - "ralts": "Ralts", + "ralts": "Trasla", "kirlia": "Kirlia", "gardevoir": "Gardevoir", - "surskit": "Surskit", - "masquerain": "Masquerain", - "shroomish": "Shroomish", - "breloom": "Breloom", - "slakoth": "Slakoth", - "vigoroth": "Vigoroth", - "slaking": "Slaking", + "surskit": "Geweiher", + "masquerain": "Maskeregen", + "shroomish": "Knilz", + "breloom": "Kapilz", + "slakoth": "Bummelz", + "vigoroth": "Muntier", + "slaking": "Letarking", "nincada": "Nincada", "ninjask": "Ninjask", - "shedinja": "Shedinja", - "whismur": "Whismur", - "loudred": "Loudred", - "exploud": "Exploud", + "shedinja": "Ninjatom", + "whismur": "Flurmel", + "loudred": "Krakeelo", + "exploud": "Krawumms", "makuhita": "Makuhita", "hariyama": "Hariyama", "azurill": "Azurill", - "nosepass": "Nosepass", - "skitty": "Skitty", - "delcatty": "Delcatty", - "sableye": "Sableye", - "mawile": "Mawile", - "aron": "Aron", - "lairon": "Lairon", - "aggron": "Aggron", + "nosepass": "Nasgnet", + "skitty": "Eneco", + "delcatty": "Enekoro", + "sableye": "Zobiris", + "mawile": "Flunkifer", + "aron": "Stollunior", + "lairon": "Stollrak", + "aggron": "Stolloss", "meditite": "Meditite", - "medicham": "Medicham", - "electrike": "Electrike", - "manectric": "Manectric", + "medicham": "Meditalis", + "electrike": "Frizelbliz", + "manectric": "Voltenso", "plusle": "Plusle", "minun": "Minun", "volbeat": "Volbeat", "illumise": "Illumise", "roselia": "Roselia", - "gulpin": "Gulpin", - "swalot": "Swalot", - "carvanha": "Carvanha", - "sharpedo": "Sharpedo", + "gulpin": "Schluppuck", + "swalot": "Schluckwech", + "carvanha": "Kanivanha", + "sharpedo": "Tohaido", "wailmer": "Wailmer", "wailord": "Wailord", - "numel": "Numel", + "numel": "Camaub", "camerupt": "Camerupt", - "torkoal": "Torkoal", + "torkoal": "Qurtel", "spoink": "Spoink", - "grumpig": "Grumpig", - "spinda": "Spinda", - "trapinch": "Trapinch", + "grumpig": "Groink", + "spinda": "Pandir", + "trapinch": "Knacklion", "vibrava": "Vibrava", - "flygon": "Flygon", - "cacnea": "Cacnea", - "cacturne": "Cacturne", - "swablu": "Swablu", + "flygon": "Libelldra", + "cacnea": "Tuska", + "cacturne": "Noktuska", + "swablu": "Wablu", "altaria": "Altaria", - "zangoose": "Zangoose", - "seviper": "Seviper", - "lunatone": "Lunatone", - "solrock": "Solrock", - "barboach": "Barboach", - "whiscash": "Whiscash", - "corphish": "Corphish", - "crawdaunt": "Crawdaunt", - "baltoy": "Baltoy", - "claydol": "Claydol", - "lileep": "Lileep", - "cradily": "Cradily", + "zangoose": "Sengo", + "seviper": "Vipitis", + "lunatone": "Lunastein", + "solrock": "Sonnfel", + "barboach": "Schmerbe", + "whiscash": "Welsar", + "corphish": "Krebscorps", + "crawdaunt": "Krebutack", + "baltoy": "Puppance", + "claydol": "Lepumentas", + "lileep": "Liliep", + "cradily": "Wielie", "anorith": "Anorith", "armaldo": "Armaldo", - "feebas": "Feebas", + "feebas": "Barschwa", "milotic": "Milotic", - "castform": "Castform", + "castform": "Formeo", "kecleon": "Kecleon", "shuppet": "Shuppet", "banette": "Banette", - "duskull": "Duskull", - "dusclops": "Dusclops", + "duskull": "Zwirrlicht", + "dusclops": "Zwirrklop", "tropius": "Tropius", - "chimecho": "Chimecho", + "chimecho": "Palimpalim", "absol": "Absol", - "wynaut": "Wynaut", - "snorunt": "Snorunt", - "glalie": "Glalie", - "spheal": "Spheal", - "sealeo": "Sealeo", - "walrein": "Walrein", - "clamperl": "Clamperl", - "huntail": "Huntail", - "gorebyss": "Gorebyss", + "wynaut": "Isso", + "snorunt": "Schneppke", + "glalie": "Firnontor", + "spheal": "Seemops", + "sealeo": "Seejong", + "walrein": "Walraisa", + "clamperl": "Perlu", + "huntail": "Aalabyss", + "gorebyss": "Saganabyss", "relicanth": "Relicanth", - "luvdisc": "Luvdisc", - "bagon": "Bagon", - "shelgon": "Shelgon", - "salamence": "Salamence", - "beldum": "Beldum", + "luvdisc": "Liebiskus", + "bagon": "Kindwurm", + "shelgon": "Draschel", + "salamence": "Brutalanda", + "beldum": "Tanhel", "metang": "Metang", "metagross": "Metagross", "regirock": "Regirock", @@ -387,102 +387,102 @@ export const pokemon: SimpleTranslationEntries = { "rayquaza": "Rayquaza", "jirachi": "Jirachi", "deoxys": "Deoxys", - "turtwig": "Turtwig", - "grotle": "Grotle", - "torterra": "Torterra", - "chimchar": "Chimchar", - "monferno": "Monferno", - "infernape": "Infernape", - "piplup": "Piplup", - "prinplup": "Prinplup", - "empoleon": "Empoleon", - "starly": "Starly", + "turtwig": "Chelast", + "grotle": "Chelcarain", + "torterra": "Chelterrar", + "chimchar": "Panflam", + "monferno": "Panpyro", + "infernape": "Panferno", + "piplup": "Plinfa", + "prinplup": "Pilprin", + "empoleon": "Impoleon", + "starly": "Staralili", "staravia": "Staravia", "staraptor": "Staraptor", - "bidoof": "Bidoof", - "bibarel": "Bibarel", - "kricketot": "Kricketot", - "kricketune": "Kricketune", - "shinx": "Shinx", + "bidoof": "Bidiza", + "bibarel": "Bidifas", + "kricketot": "Zirpurze", + "kricketune": "Zirpeise", + "shinx": "Sheinux", "luxio": "Luxio", "luxray": "Luxray", - "budew": "Budew", + "budew": "Knospi", "roserade": "Roserade", - "cranidos": "Cranidos", - "rampardos": "Rampardos", - "shieldon": "Shieldon", - "bastiodon": "Bastiodon", + "cranidos": "Koknodon", + "rampardos": "Rameidon", + "shieldon": "Schilterus", + "bastiodon": "Bollterus", "burmy": "Burmy", - "wormadam": "Wormadam", - "mothim": "Mothim", - "combee": "Combee", - "vespiquen": "Vespiquen", + "wormadam": "Burmadame", + "mothim": "Moterpel", + "combee": "Wadribie", + "vespiquen": "Hornwiesel", "pachirisu": "Pachirisu", - "buizel": "Buizel", - "floatzel": "Floatzel", - "cherubi": "Cherubi", - "cherrim": "Cherrim", - "shellos": "Shellos", + "buizel": "Bamelin", + "floatzel": "Bojelin", + "cherubi": "Kikugi", + "cherrim": "Kinoso", + "shellos": "Schalellos", "gastrodon": "Gastrodon", - "ambipom": "Ambipom", - "drifloon": "Drifloon", - "drifblim": "Drifblim", - "buneary": "Buneary", - "lopunny": "Lopunny", - "mismagius": "Mismagius", - "honchkrow": "Honchkrow", - "glameow": "Glameow", - "purugly": "Purugly", - "chingling": "Chingling", - "stunky": "Stunky", + "ambipom": "Ambidifel", + "drifloon": "Driftlon", + "drifblim": "Drifzepeli", + "buneary": "Haspiror", + "lopunny": "Schlapor", + "mismagius": "Traunmagil", + "honchkrow": "Kramshef", + "glameow": "Charmian", + "purugly": "Shnurgarst", + "chingling": "Klingplim", + "stunky": "Skunkapuh", "skuntank": "Skuntank", - "bronzor": "Bronzor", + "bronzor": "Bronzel", "bronzong": "Bronzong", - "bonsly": "Bonsly", - "mime_jr": "Mime Jr.", - "happiny": "Happiny", - "chatot": "Chatot", - "spiritomb": "Spiritomb", - "gible": "Gible", - "gabite": "Gabite", - "garchomp": "Garchomp", - "munchlax": "Munchlax", + "bonsly": "Mobai", + "mime_jr": "Pantimimi", + "happiny": "Wonneira", + "chatot": "Plaudagei", + "spiritomb": "Kryppuk", + "gible": "Kaumalat", + "gabite": "Knarksel", + "garchomp": "Knackrack", + "munchlax": "Mampfaxo", "riolu": "Riolu", "lucario": "Lucario", "hippopotas": "Hippopotas", - "hippowdon": "Hippowdon", - "skorupi": "Skorupi", - "drapion": "Drapion", - "croagunk": "Croagunk", - "toxicroak": "Toxicroak", - "carnivine": "Carnivine", + "hippowdon": "Hippoterus", + "skorupi": "Pionskora", + "drapion": "Piondragi", + "croagunk": "Glibunkel", + "toxicroak": "Toxiquak", + "carnivine": "Venuflibis", "finneon": "Finneon", "lumineon": "Lumineon", - "mantyke": "Mantyke", - "snover": "Snover", - "abomasnow": "Abomasnow", - "weavile": "Weavile", + "mantyke": "Mantirps", + "snover": "Shnebedeck", + "abomasnow": "Rexblisar", + "weavile": "Snibunna", "magnezone": "Magnezone", - "lickilicky": "Lickilicky", - "rhyperior": "Rhyperior", - "tangrowth": "Tangrowth", - "electivire": "Electivire", - "magmortar": "Magmortar", + "lickilicky": "Schlurplek", + "rhyperior": "Rihornior", + "tangrowth": "Tangoloss", + "electivire": "Elevoltek", + "magmortar": "Magbrant", "togekiss": "Togekiss", "yanmega": "Yanmega", - "leafeon": "Leafeon", - "glaceon": "Glaceon", - "gliscor": "Gliscor", - "mamoswine": "Mamoswine", + "leafeon": "Folipurba", + "glaceon": "Glaziola", + "gliscor": "Skorgro", + "mamoswine": "Mamutel", "porygon_z": "Porygon-Z", - "gallade": "Gallade", - "probopass": "Probopass", - "dusknoir": "Dusknoir", - "froslass": "Froslass", + "gallade": "Galagladi", + "probopass": "Voluminas", + "dusknoir": "Zwirrfinst", + "froslass": "Frosdedje", "rotom": "Rotom", - "uxie": "Uxie", - "mesprit": "Mesprit", - "azelf": "Azelf", + "uxie": "Selfe", + "mesprit": "Vesprit", + "azelf": "Tobutz", "dialga": "Dialga", "palkia": "Palkia", "heatran": "Heatran", @@ -495,318 +495,318 @@ export const pokemon: SimpleTranslationEntries = { "shaymin": "Shaymin", "arceus": "Arceus", "victini": "Victini", - "snivy": "Snivy", - "servine": "Servine", - "serperior": "Serperior", - "tepig": "Tepig", - "pignite": "Pignite", - "emboar": "Emboar", - "oshawott": "Oshawott", - "dewott": "Dewott", - "samurott": "Samurott", - "patrat": "Patrat", - "watchog": "Watchog", - "lillipup": "Lillipup", - "herdier": "Herdier", - "stoutland": "Stoutland", - "purrloin": "Purrloin", - "liepard": "Liepard", - "pansage": "Pansage", - "simisage": "Simisage", - "pansear": "Pansear", - "simisear": "Simisear", - "panpour": "Panpour", - "simipour": "Simipour", - "munna": "Munna", - "musharna": "Musharna", - "pidove": "Pidove", - "tranquill": "Tranquill", - "unfezant": "Unfezant", - "blitzle": "Blitzle", - "zebstrika": "Zebstrika", - "roggenrola": "Roggenrola", - "boldore": "Boldore", - "gigalith": "Gigalith", - "woobat": "Woobat", - "swoobat": "Swoobat", - "drilbur": "Drilbur", - "excadrill": "Excadrill", - "audino": "Audino", - "timburr": "Timburr", - "gurdurr": "Gurdurr", - "conkeldurr": "Conkeldurr", - "tympole": "Tympole", - "palpitoad": "Palpitoad", - "seismitoad": "Seismitoad", - "throh": "Throh", - "sawk": "Sawk", - "sewaddle": "Sewaddle", - "swadloon": "Swadloon", - "leavanny": "Leavanny", - "venipede": "Venipede", - "whirlipede": "Whirlipede", - "scolipede": "Scolipede", - "cottonee": "Cottonee", - "whimsicott": "Whimsicott", - "petilil": "Petilil", - "lilligant": "Lilligant", - "basculin": "Basculin", - "sandile": "Sandile", - "krokorok": "Krokorok", - "krookodile": "Krookodile", - "darumaka": "Darumaka", - "darmanitan": "Darmanitan", - "maractus": "Maractus", - "dwebble": "Dwebble", - "crustle": "Crustle", - "scraggy": "Scraggy", - "scrafty": "Scrafty", - "sigilyph": "Sigilyph", - "yamask": "Yamask", - "cofagrigus": "Cofagrigus", - "tirtouga": "Tirtouga", - "carracosta": "Carracosta", - "archen": "Archen", - "archeops": "Archeops", - "trubbish": "Trubbish", - "garbodor": "Garbodor", + "snivy": "Serpifeu", + "servine": "Efoserp", + "serperior": "Serpiroyal", + "tepig": "Floink", + "pignite": "Ferkokel", + "emboar": "Flambirex", + "oshawott": "Ottaro", + "dewott": "Zwottronin", + "samurott": "Admurai", + "patrat": "Nagelotz", + "watchog": "Kukmarda", + "lillipup": "Yorkleff", + "herdier": "Terribark", + "stoutland": "Bissbark", + "purrloin": "Felilou", + "liepard": "Kleoparda", + "pansage": "Vegimak", + "simisage": "Vegichita", + "pansear": "Grillmak", + "simisear": "Grillchita", + "panpour": "Sodamak", + "simipour": "Sodachita", + "munna": "Somniam", + "musharna": "Somnivora", + "pidove": "Dusslgurr", + "tranquill": "Navitaub", + "unfezant": "Fasasnob", + "blitzle": "Elezeba", + "zebstrika": "Zebritz", + "roggenrola": "Kiesling", + "boldore": "Sedimantur", + "gigalith": "Brockoloss", + "woobat": "Fleknoil", + "swoobat": "Fletiamo", + "drilbur": "Rotomurf", + "excadrill": "Stalobor", + "audino": "Ohrdoch", + "timburr": "Praktibalk", + "gurdurr": "Strepoli", + "conkeldurr": "Meistagriff", + "tympole": "Schallquap", + "palpitoad": "Membrana", + "seismitoad": "Branawarz", + "throh": "Juitesto", + "sawk": "Karadonis", + "sewaddle": "Strawickl", + "swadloon": "Folikon", + "leavanny": "Matrifol", + "venipede": "Toxiped", + "whirlipede": "Rollum", + "scolipede": "Cerapendra", + "cottonee": "Waumboll", + "whimsicott": "Elfun", + "petilil": "Lilminip", + "lilligant": "Dressella", + "basculin": "Barschuft", + "sandile": "Ganovil", + "krokorok": "Rokkaiman", + "krookodile": "Rabigator", + "darumaka": "Flampion", + "darmanitan": "Flampavian", + "maractus": "Maracamba", + "dwebble": "Lithomith", + "crustle": "Castellith", + "scraggy": "Zurrokex", + "scrafty": "Irokex", + "sigilyph": "Symvolara", + "yamask": "Makabaja", + "cofagrigus": "Echnatoll", + "tirtouga": "Galapaflos", + "carracosta": "Karippas", + "archen": "Flapteryx", + "archeops": "Aeropteryx", + "trubbish": "Unratütox", + "garbodor": "Deponitox", "zorua": "Zorua", "zoroark": "Zoroark", - "minccino": "Minccino", - "cinccino": "Cinccino", - "gothita": "Gothita", - "gothorita": "Gothorita", - "gothitelle": "Gothitelle", - "solosis": "Solosis", - "duosion": "Duosion", - "reuniclus": "Reuniclus", - "ducklett": "Ducklett", - "swanna": "Swanna", - "vanillite": "Vanillite", - "vanillish": "Vanillish", - "vanilluxe": "Vanilluxe", - "deerling": "Deerling", - "sawsbuck": "Sawsbuck", + "minccino": "Picochilla", + "cinccino": "Chillabell", + "gothita": "Mollimorba", + "gothorita": "Hypnomorba", + "gothitelle": "Morbitesse", + "solosis": "Monozyto", + "duosion": "Mitodos", + "reuniclus": "Zytomega", + "ducklett": "Piccolente", + "swanna": "Swaroness", + "vanillite": "Gelatini", + "vanillish": "Gelatroppo", + "vanilluxe": "Gelatwino", + "deerling": "Sesokitz", + "sawsbuck": "Kronjuwild", "emolga": "Emolga", - "karrablast": "Karrablast", - "escavalier": "Escavalier", - "foongus": "Foongus", - "amoonguss": "Amoonguss", - "frillish": "Frillish", - "jellicent": "Jellicent", - "alomomola": "Alomomola", - "joltik": "Joltik", - "galvantula": "Galvantula", - "ferroseed": "Ferroseed", - "ferrothorn": "Ferrothorn", - "klink": "Klink", - "klang": "Klang", - "klinklang": "Klinklang", - "tynamo": "Tynamo", - "eelektrik": "Eelektrik", - "eelektross": "Eelektross", - "elgyem": "Elgyem", - "beheeyem": "Beheeyem", - "litwick": "Litwick", - "lampent": "Lampent", - "chandelure": "Chandelure", - "axew": "Axew", - "fraxure": "Fraxure", - "haxorus": "Haxorus", - "cubchoo": "Cubchoo", - "beartic": "Beartic", - "cryogonal": "Cryogonal", - "shelmet": "Shelmet", - "accelgor": "Accelgor", - "stunfisk": "Stunfisk", - "mienfoo": "Mienfoo", - "mienshao": "Mienshao", - "druddigon": "Druddigon", - "golett": "Golett", - "golurk": "Golurk", - "pawniard": "Pawniard", - "bisharp": "Bisharp", - "bouffalant": "Bouffalant", - "rufflet": "Rufflet", - "braviary": "Braviary", - "vullaby": "Vullaby", - "mandibuzz": "Mandibuzz", - "heatmor": "Heatmor", - "durant": "Durant", - "deino": "Deino", - "zweilous": "Zweilous", - "hydreigon": "Hydreigon", - "larvesta": "Larvesta", - "volcarona": "Volcarona", - "cobalion": "Cobalion", - "terrakion": "Terrakion", - "virizion": "Virizion", - "tornadus": "Tornadus", - "thundurus": "Thundurus", + "karrablast": "Laukaps", + "escavalier": "Cavalanzas", + "foongus": "Tarnpignon", + "amoonguss": "Hutsassa", + "frillish": "Quabbel", + "jellicent": "Apoquallyp", + "alomomola": "Mamolida", + "joltik": "Wattzapf", + "galvantula": "Voltula", + "ferroseed": "Kastadur", + "ferrothorn": "Tentantel", + "klink": "Klikk", + "klang": "Kliklak", + "klinklang": "Klikdiklak", + "tynamo": "Zapplardin", + "eelektrik": "Zapplalek", + "eelektross": "Zapplarang", + "elgyem": "Pygraulon", + "beheeyem": "Megalon", + "litwick": "Lichtel", + "lampent": "Laternecto", + "chandelure": "Skelabra", + "axew": "Milza", + "fraxure": "Scharfax", + "haxorus": "Maxax", + "cubchoo": "Petznief", + "beartic": "Siberio", + "cryogonal": "Frigometri", + "shelmet": "Schnuthelm", + "accelgor": "Hydragil", + "stunfisk": "Flunschlik", + "mienfoo": "Lin-Fu", + "mienshao": "Wie-Shu", + "druddigon": "Shardrago", + "golett": "Golbit", + "golurk": "Golgantes", + "pawniard": "Gladiantri", + "bisharp": "Ceasurio", + "bouffalant": "Bisofank", + "rufflet": "Geronimatz", + "braviary": "Washakwil", + "vullaby": "Skallyk", + "mandibuzz": "Grypheldis", + "heatmor": "Furnifraß", + "durant": "Fermicula", + "deino": "Kapuno", + "zweilous": "Duodino", + "hydreigon": "Trikephalo", + "larvesta": "Ignivor", + "volcarona": "Ramoth", + "cobalion": "Kobalium", + "terrakion": "Terrakium", + "virizion": "Viridium", + "tornadus": "Boreos", + "thundurus": "Voltolos", "reshiram": "Reshiram", "zekrom": "Zekrom", - "landorus": "Landorus", + "landorus": "Dementeros", "kyurem": "Kyurem", "keldeo": "Keldeo", "meloetta": "Meloetta", "genesect": "Genesect", - "chespin": "Chespin", - "quilladin": "Quilladin", - "chesnaught": "Chesnaught", - "fennekin": "Fennekin", - "braixen": "Braixen", - "delphox": "Delphox", - "froakie": "Froakie", - "frogadier": "Frogadier", - "greninja": "Greninja", - "bunnelby": "Bunnelby", - "diggersby": "Diggersby", - "fletchling": "Fletchling", - "fletchinder": "Fletchinder", - "talonflame": "Talonflame", - "scatterbug": "Scatterbug", - "spewpa": "Spewpa", + "chespin": "Igamaro", + "quilladin": "Igastarnish", + "chesnaught": "Brigaron", + "fennekin": "Fynx", + "braixen": "Rutena", + "delphox": "Fennexis", + "froakie": "Froxy", + "frogadier": "Amphizel", + "greninja": "Quajutsu", + "bunnelby": "Scoppel", + "diggersby": "Grebbit", + "fletchling": "Dartiri", + "fletchinder": "Dartignis", + "talonflame": "Fiaro", + "scatterbug": "Purmel", + "spewpa": "Puponcho", "vivillon": "Vivillon", - "litleo": "Litleo", - "pyroar": "Pyroar", + "litleo": "Leufeo", + "pyroar": "Pyroleo", "flabebe": "Flabébé", "floette": "Floette", "florges": "Florges", - "skiddo": "Skiddo", - "gogoat": "Gogoat", - "pancham": "Pancham", - "pangoro": "Pangoro", - "furfrou": "Furfrou", - "espurr": "Espurr", - "meowstic": "Meowstic", - "honedge": "Honedge", - "doublade": "Doublade", - "aegislash": "Aegislash", - "spritzee": "Spritzee", - "aromatisse": "Aromatisse", - "swirlix": "Swirlix", - "slurpuff": "Slurpuff", - "inkay": "Inkay", - "malamar": "Malamar", - "binacle": "Binacle", - "barbaracle": "Barbaracle", - "skrelp": "Skrelp", - "dragalge": "Dragalge", - "clauncher": "Clauncher", - "clawitzer": "Clawitzer", - "helioptile": "Helioptile", - "heliolisk": "Heliolisk", - "tyrunt": "Tyrunt", - "tyrantrum": "Tyrantrum", - "amaura": "Amaura", - "aurorus": "Aurorus", - "sylveon": "Sylveon", - "hawlucha": "Hawlucha", + "skiddo": "Mähikel", + "gogoat": "Chevrumm", + "pancham": "Pam-Pam", + "pangoro": "Pandrago", + "furfrou": "Coiffwaff", + "espurr": "Psiau", + "meowstic": "Psiaugon", + "honedge": "Gramokles", + "doublade": "Duokles", + "aegislash": "Durengard", + "spritzee": "Parfi", + "aromatisse": "Parfinesse", + "swirlix": "Flauschling", + "slurpuff": "Sabbaione", + "inkay": "Iscalar", + "malamar": "Calamanero", + "binacle": "Bithora", + "barbaracle": "Thanathora", + "skrelp": "Algitt", + "dragalge": "Tandrak", + "clauncher": "Scampisto", + "clawitzer": "Wummer", + "helioptile": "Eguana", + "heliolisk": "Elezard", + "tyrunt": "Balgoras", + "tyrantrum": "Monargoras", + "amaura": "Amarino", + "aurorus": "Amagarga", + "sylveon": "Feelinara", + "hawlucha": "Resladero", "dedenne": "Dedenne", - "carbink": "Carbink", - "goomy": "Goomy", - "sliggoo": "Sliggoo", - "goodra": "Goodra", - "klefki": "Klefki", - "phantump": "Phantump", - "trevenant": "Trevenant", - "pumpkaboo": "Pumpkaboo", - "gourgeist": "Gourgeist", - "bergmite": "Bergmite", - "avalugg": "Avalugg", - "noibat": "Noibat", - "noivern": "Noivern", + "carbink": "Rocara", + "goomy": "Viscora", + "sliggoo": "Viscargot", + "goodra": "Viscogon", + "klefki": "Clavion", + "phantump": "Paragoni", + "trevenant": "Trombork", + "pumpkaboo": "Irrbis", + "gourgeist": "Pumpdjinn", + "bergmite": "Arktip", + "avalugg": "Arktilas", + "noibat": "eF-eM", + "noivern": "UHaFnir", "xerneas": "Xerneas", "yveltal": "Yveltal", "zygarde": "Zygarde", "diancie": "Diancie", "hoopa": "Hoopa", "volcanion": "Volcanion", - "rowlet": "Rowlet", - "dartrix": "Dartrix", - "decidueye": "Decidueye", - "litten": "Litten", - "torracat": "Torracat", - "incineroar": "Incineroar", - "popplio": "Popplio", - "brionne": "Brionne", - "primarina": "Primarina", - "pikipek": "Pikipek", - "trumbeak": "Trumbeak", - "toucannon": "Toucannon", - "yungoos": "Yungoos", - "gumshoos": "Gumshoos", - "grubbin": "Grubbin", - "charjabug": "Charjabug", - "vikavolt": "Vikavolt", - "crabrawler": "Crabrawler", - "crabominable": "Crabominable", - "oricorio": "Oricorio", - "cutiefly": "Cutiefly", - "ribombee": "Ribombee", - "rockruff": "Rockruff", - "lycanroc": "Lycanroc", - "wishiwashi": "Wishiwashi", - "mareanie": "Mareanie", - "toxapex": "Toxapex", - "mudbray": "Mudbray", - "mudsdale": "Mudsdale", - "dewpider": "Dewpider", - "araquanid": "Araquanid", - "fomantis": "Fomantis", - "lurantis": "Lurantis", - "morelull": "Morelull", - "shiinotic": "Shiinotic", - "salandit": "Salandit", - "salazzle": "Salazzle", - "stufful": "Stufful", - "bewear": "Bewear", - "bounsweet": "Bounsweet", - "steenee": "Steenee", - "tsareena": "Tsareena", - "comfey": "Comfey", - "oranguru": "Oranguru", - "passimian": "Passimian", - "wimpod": "Wimpod", - "golisopod": "Golisopod", - "sandygast": "Sandygast", - "palossand": "Palossand", - "pyukumuku": "Pyukumuku", - "type_null": "Type: Null", - "silvally": "Silvally", - "minior": "Minior", - "komala": "Komala", + "rowlet": "Bauz", + "dartrix": "Arboretoss", + "decidueye": "Silvarro", + "litten": "Flamiau", + "torracat": "Miezunder", + "incineroar": "Fuegro", + "popplio": "Robball", + "brionne": "Marikeck", + "primarina": "Primarene", + "pikipek": "Peppeck", + "trumbeak": "Trompeck", + "toucannon": "Tukanon", + "yungoos": "Mangunior", + "gumshoos": "Manguspektor", + "grubbin": "Mabula", + "charjabug": "Akkup", + "vikavolt": "Donarion", + "crabrawler": "Krabbox", + "crabominable": "Krawell", + "oricorio": "Choreogel", + "cutiefly": "Wommel", + "ribombee": "Bandelby", + "rockruff": "Wuffels", + "lycanroc": "Wolwerock", + "wishiwashi": "Lusardin", + "mareanie": "Garstella", + "toxapex": "Aggrostella", + "mudbray": "Pampuli", + "mudsdale": "Pampross", + "dewpider": "Araqua", + "araquanid": "Aranestro", + "fomantis": "Imantis", + "lurantis": "Mantidea", + "morelull": "Bubungus", + "shiinotic": "Lamellus", + "salandit": "Molunk", + "salazzle": "Amfira", + "stufful": "Velursi", + "bewear": "Kosturso", + "bounsweet": "Frubberl", + "steenee": "Frubaila", + "tsareena": "Fruyal", + "comfey": "Curelei", + "oranguru": "Kommandutan", + "passimian": "Quartermak", + "wimpod": "Reißlaus", + "golisopod": "Tectass", + "sandygast": "Sankabuh", + "palossand": "Colossand", + "pyukumuku": "Gufa", + "type_null": "Typ:Null", + "silvally": "Amigento", + "minior": "Meteno", + "komala": "Koalelu", "turtonator": "Turtonator", "togedemaru": "Togedemaru", - "mimikyu": "Mimikyu", - "bruxish": "Bruxish", - "drampa": "Drampa", - "dhelmise": "Dhelmise", - "jangmo_o": "Jangmo-o", - "hakamo_o": "Hakamo-o", - "kommo_o": "Kommo-o", - "tapu_koko": "Tapu Koko", - "tapu_lele": "Tapu Lele", - "tapu_bulu": "Tapu Bulu", - "tapu_fini": "Tapu Fini", + "mimikyu": "Mimigma", + "bruxish": "Knirfish", + "drampa": "Sen-Long", + "dhelmise": "Moruda", + "jangmo_o": "Miniras", + "hakamo_o": "Mediras", + "kommo_o": "Grandiras", + "tapu_koko": "Kapu-Riki", + "tapu_lele": "Kapu-Fala", + "tapu_bulu": "Kapu-Toro", + "tapu_fini": "Kapu-Kime", "cosmog": "Cosmog", - "cosmoem": "Cosmoem", + "cosmoem": "Cosmovum", "solgaleo": "Solgaleo", "lunala": "Lunala", - "nihilego": "Nihilego", - "buzzwole": "Buzzwole", - "pheromosa": "Pheromosa", - "xurkitree": "Xurkitree", - "celesteela": "Celesteela", - "kartana": "Kartana", - "guzzlord": "Guzzlord", + "nihilego": "Anego", + "buzzwole": "Masskito", + "pheromosa": "Schabelle", + "xurkitree": "Voltriant", + "celesteela": "Kaguron", + "kartana": "Katagami", + "guzzlord": "Schlingking", "necrozma": "Necrozma", "magearna": "Magearna", "marshadow": "Marshadow", - "poipole": "Poipole", - "naganadel": "Naganadel", - "stakataka": "Stakataka", - "blacephalon": "Blacephalon", + "poipole": "Venicro", + "naganadel": "Agoyon", + "stakataka": "Muramura", + "blacephalon": "Kopplosio", "zeraora": "Zeraora", "meltan": "Meltan", "melmetal": "Melmetal", diff --git a/src/locales/de/starter-select-ui-handler.ts b/src/locales/de/starter-select-ui-handler.ts new file mode 100644 index 000000000..c7595cb2f --- /dev/null +++ b/src/locales/de/starter-select-ui-handler.ts @@ -0,0 +1,32 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon data. This includes menu navigation, settings, + * account interactions, descriptive text, etc. + */ +export const starterSelectUiHandler: SimpleTranslationEntries = { + "confirmStartTeam":'Begin with these Pokémon?', + "growthRate": "Growth Rate:", + "ability": "Ability:", + "passive": "Passive:", + "nature": "Nature:", + "eggMoves": 'Egg Moves', + "start": "Start", + "addToParty": "Add to Party", + "toggleIVs": 'Toggle IVs', + "manageMoves": 'Manage Moves', + "useCandies": 'Use Candies', + "selectMoveSwapOut": "Select a move to swap out.", + "selectMoveSwapWith": "Select a move to swap with", + "unlockPassive": "Unlock Passive", + "reduceCost": "Reduce Cost", + "cycleShiny": "R: Cycle Shiny", + "cycleForm": 'F: Cycle Form', + "cycleGender": 'G: Cycle Gender', + "cycleAbility": 'E: Cycle Ability', + "cycleNature": 'N: Cycle Nature', + "cycleVariant": 'V: Cycle Variant', + "enablePassive": "Enable Passive", + "disablePassive": "Disable Passive" +} \ No newline at end of file diff --git a/src/locales/de/tutorial.ts b/src/locales/de/tutorial.ts new file mode 100644 index 000000000..2773b6710 --- /dev/null +++ b/src/locales/de/tutorial.ts @@ -0,0 +1,42 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const tutorial: SimpleTranslationEntries = { + "intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements. + $This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used. + $The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community. + $If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`, + + "accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`, + + "menu": `From this menu you can access the settings. + $From the settings you can change game speed, window style, and other options. + $There are also various other features here, so be sure to check them all!`, + + "starterSelect": `From this screen, you can select your starters.\nThese are your initial party members. + $Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10. + $You can also select gender, ability, and form depending on\nthe variants you've caught or hatched. + $The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`, + + "pokerus": `A daily random 3 selectable starters have a purple border. + $If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`, + + "statChange": `Stat changes persist across battles as long as your Pokémon aren't recalled. + $Your Pokémon are recalled before a trainer battle and before entering a new biome. + $You can also view the stat changes for the Pokémon on the field by holding C or Shift.`, + + "selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one. + $These range from consumables, to Pokémon held items, to passive permanent items. + $Most non-consumable item effects will stack in various ways. + $Some items will only show up if they can be used, such as evolution items. + $You can also transfer held items between Pokémon using the transfer option. + $The transfer option will appear in the bottom right once you have obtained a held item. + $You may purchase consumable items with money, and a larger variety will be available the further you get. + $Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`, + + "eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs. + $Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch. + $Hatched Pokémon also won't be added to your party, they will\nbe added to your starters. + $Pokémon hatched from eggs generally have better IVs than\nwild Pokémon. + $Some Pokémon can only even be obtained from eggs. + $There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`, +} as const; \ No newline at end of file diff --git a/src/locales/en/battle.ts b/src/locales/en/battle.ts new file mode 100644 index 000000000..e307a3a52 --- /dev/null +++ b/src/locales/en/battle.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const battle: SimpleTranslationEntries = { + "bossAppeared": "{{bossName}} appeared.", + "trainerAppeared": "{{trainerName}}\nwould like to battle!", + "singleWildAppeared": "A wild {{pokemonName}} appeared!", + "multiWildAppeared": "A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!", + "playerComeBack": "Come back, {{pokemonName}}!", + "trainerComeBack": "{{trainerName}} withdrew {{pokemonName}}!", + "playerGo": "Go! {{pokemonName}}!", + "trainerGo": "{{trainerName}} sent out {{pokemonName}}!", + "switchQuestion": "Will you switch\n{{pokemonName}}?", + "trainerDefeated": `You defeated\n{{trainerName}}!`, + "pokemonCaught": "{{pokemonName}} was caught!", + "pokemon": "Pokémon", + "sendOutPokemon": "Go! {{pokemonName}}!", + "hitResultCriticalHit": "A critical hit!", + "hitResultSuperEffective": "It's super effective!", + "hitResultNotVeryEffective": "It's not very effective…", + "hitResultNoEffect": "It doesn't affect {{pokemonName}}!", + "hitResultOneHitKO": "It's a one-hit KO!", + "attackFailed": "But it failed!", + "attackHitsCount": `Hit {{count}} time(s)!`, + "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!", + "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!", + "learnMove": "{{pokemonName}} learned\n{{moveName}}!", + "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.", + "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.", + "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?", + "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?", + "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.", + "learnMoveForgetQuestion": "Which move should be forgotten?", + "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.", + "levelCapUp": "The level cap\nhas increased to {{levelCap}}!", + "moveNotImplemented": "{{moveName}} is not yet implemented and cannot be selected.", + "moveNoPP": "There's no PP left for\nthis move!", + "moveDisabled": "{{moveName}} is disabled!", + "noPokeballForce": "An unseen force\nprevents using Poké Balls.", + "noPokeballTrainer": "You can't catch\nanother trainer's Pokémon!", + "noPokeballMulti": "You can only throw a Poké Ball\nwhen there is one Pokémon remaining!", + "noPokeballStrong": "The target Pokémon is too strong to be caught!\nYou need to weaken it first!", + "noEscapeForce": "An unseen force\nprevents escape.", + "noEscapeTrainer": "You can't run\nfrom a trainer battle!", + "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nprevents {{escapeVerb}}!", + "runAwaySuccess": "You got away safely!", + "runAwayCannotEscape": 'You can\'t escape!', + "escapeVerbSwitch": "switching", + "escapeVerbFlee": "fleeing", + "notDisabled": "{{moveName}} is disabled\nno more!", + "skipItemQuestion": "Are you sure you want to skip taking an item?", + "eggHatching": "Oh?", + "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?" +} as const; \ No newline at end of file diff --git a/src/locales/en/menu.ts b/src/locales/en/menu.ts index bce59c02c..7a5043a98 100644 --- a/src/locales/en/menu.ts +++ b/src/locales/en/menu.ts @@ -35,47 +35,12 @@ export const menu: SimpleTranslationEntries = { "boyOrGirl": "Are you a boy or a girl?", "boy": "Boy", "girl": "Girl", - "bossAppeared": "{{bossName}} appeared.", - "trainerAppeared": "{{trainerName}}\nwould like to battle!", - "singleWildAppeared": "A wild {{pokemonName}} appeared!", - "multiWildAppeared": "A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!", - "playerComeBack": "Come back, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}} withdrew {{pokemonName}}!", - "playerGo": "Go! {{pokemonName}}!", - "trainerGo": "{{trainerName}} sent out {{pokemonName}}!", - "switchQuestion": "Will you switch\n{{pokemonName}}?", - "trainerDefeated": `You defeated\n{{trainerName}}!`, - "pokemonCaught": "{{pokemonName}} was caught!", - "pokemon": "Pokémon", - "sendOutPokemon": "Go! {{pokemonName}}!", - "attackFailed": "But it failed!", - "attackHitsCount": `Hit {{count}} time(s)!`, - "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!", - "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!", - "learnMove": "{{pokemonName}} learned\n{{moveName}}!", - "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.", - "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.", - "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?", - "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.", - "learnMoveForgetQuestion": "Which move should be forgotten?", - "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.", - "levelCapUp": "The level cap\nhas increased to {{levelCap}}!", - "moveNotImplemented": "{{moveName}} is not yet implemented and cannot be selected.", - "moveDisabled": "{{moveName}} is disabled!", - "noPokeballForce": "An unseen force\nprevents using Poké Balls.", - "noPokeballTrainer": "You can't catch\nanother trainer's Pokémon!", - "noPokeballMulti": "You can only throw a Poké Ball\nwhen there is one Pokémon remaining!", - "noPokeballStrong": "The target Pokémon is too strong to be caught!\nYou need to weaken it first!", - "noEscapeForce": "An unseen force\nprevents escape.", - "noEscapeTrainer": "You can't run\nfrom a trainer battle!", - "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nprevents {{escapeVerb}}!", - "runAwaySuccess": "You got away safely!", - "runAwayCannotEscape": 'You can\'t escape!', - "escapeVerbSwitch": "switching", - "escapeVerbFlee": "fleeing", - "notDisabled": "{{moveName}} is disabled\nno more!", - "skipItemQuestion": "Are you sure you want to skip taking an item?", - "eggHatching": "Oh?", - "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?", + "dailyRankings": "Daily Rankings", + "weeklyRankings": "Weekly Rankings", + "noRankings": "No Rankings", + "loading": "Loading…", + "playersOnline": "Players Online", + "empty":"Empty", + "yes":"Yes", + "no":"No", } as const; \ No newline at end of file diff --git a/src/locales/en/starter-select-ui-handler.ts b/src/locales/en/starter-select-ui-handler.ts new file mode 100644 index 000000000..c7595cb2f --- /dev/null +++ b/src/locales/en/starter-select-ui-handler.ts @@ -0,0 +1,32 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon data. This includes menu navigation, settings, + * account interactions, descriptive text, etc. + */ +export const starterSelectUiHandler: SimpleTranslationEntries = { + "confirmStartTeam":'Begin with these Pokémon?', + "growthRate": "Growth Rate:", + "ability": "Ability:", + "passive": "Passive:", + "nature": "Nature:", + "eggMoves": 'Egg Moves', + "start": "Start", + "addToParty": "Add to Party", + "toggleIVs": 'Toggle IVs', + "manageMoves": 'Manage Moves', + "useCandies": 'Use Candies', + "selectMoveSwapOut": "Select a move to swap out.", + "selectMoveSwapWith": "Select a move to swap with", + "unlockPassive": "Unlock Passive", + "reduceCost": "Reduce Cost", + "cycleShiny": "R: Cycle Shiny", + "cycleForm": 'F: Cycle Form', + "cycleGender": 'G: Cycle Gender', + "cycleAbility": 'E: Cycle Ability', + "cycleNature": 'N: Cycle Nature', + "cycleVariant": 'V: Cycle Variant', + "enablePassive": "Enable Passive", + "disablePassive": "Disable Passive" +} \ No newline at end of file diff --git a/src/locales/en/tutorial.ts b/src/locales/en/tutorial.ts new file mode 100644 index 000000000..2773b6710 --- /dev/null +++ b/src/locales/en/tutorial.ts @@ -0,0 +1,42 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const tutorial: SimpleTranslationEntries = { + "intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements. + $This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used. + $The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community. + $If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`, + + "accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`, + + "menu": `From this menu you can access the settings. + $From the settings you can change game speed, window style, and other options. + $There are also various other features here, so be sure to check them all!`, + + "starterSelect": `From this screen, you can select your starters.\nThese are your initial party members. + $Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10. + $You can also select gender, ability, and form depending on\nthe variants you've caught or hatched. + $The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`, + + "pokerus": `A daily random 3 selectable starters have a purple border. + $If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`, + + "statChange": `Stat changes persist across battles as long as your Pokémon aren't recalled. + $Your Pokémon are recalled before a trainer battle and before entering a new biome. + $You can also view the stat changes for the Pokémon on the field by holding C or Shift.`, + + "selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one. + $These range from consumables, to Pokémon held items, to passive permanent items. + $Most non-consumable item effects will stack in various ways. + $Some items will only show up if they can be used, such as evolution items. + $You can also transfer held items between Pokémon using the transfer option. + $The transfer option will appear in the bottom right once you have obtained a held item. + $You may purchase consumable items with money, and a larger variety will be available the further you get. + $Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`, + + "eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs. + $Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch. + $Hatched Pokémon also won't be added to your party, they will\nbe added to your starters. + $Pokémon hatched from eggs generally have better IVs than\nwild Pokémon. + $Some Pokémon can only even be obtained from eggs. + $There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`, +} as const; \ No newline at end of file diff --git a/src/locales/es/battle.ts b/src/locales/es/battle.ts new file mode 100644 index 000000000..f4bf22bb9 --- /dev/null +++ b/src/locales/es/battle.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const battle: SimpleTranslationEntries = { + "bossAppeared": "¡{{bossName}} te corta el paso!", + "trainerAppeared": "¡{{trainerName}}\nte desafía!", + "singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!", + "multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!", + "playerComeBack": "¡{{pokemonName}}, ven aquí!", + "trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!", + "playerGo": "¡Adelante, {{pokemonName}}!", + "trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!", + "switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?", + "trainerDefeated": "¡Has derrotado a\n{{trainerName}}!", + "pokemonCaught": "¡{{pokemonName}} atrapado!", + "pokemon": "Pokémon", + "sendOutPokemon": "¡Adelante, {{pokemonName}}!", + "hitResultCriticalHit": "A critical hit!", + "hitResultSuperEffective": "It's super effective!", + "hitResultNotVeryEffective": "It's not very effective…", + "hitResultNoEffect": "It doesn't affect {{pokemonName}}!", + "hitResultOneHitKO": "It's a one-hit KO!", + "attackFailed": "¡Pero ha fallado!", + "attackHitsCount": `N.º de golpes: {{count}}.`, + "expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.", + "levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!", + "learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!", + "learnMovePrompt": "{{pokemonName}} quiere aprender\n{{moveName}}.", + "learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.", + "learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?", + "learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?", + "learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.", + "learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?", + "learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.", + "levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!", + "moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.", + "moveNoPP": "There's no PP left for\nthis move!", + "moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!", + "noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.", + "noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!", + "noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!", + "noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!", + "noEscapeForce": "Una fuerza misteriosa\nte impide huir.", + "noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!", + "noEscapePokemon": "¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!", + "runAwaySuccess": "¡Escapas sin problemas!", + "runAwayCannotEscape": "¡No has podido escapar!", + "escapeVerbSwitch": "cambiar", + "escapeVerbFlee": "huir", + "notDisabled": "¡El movimiento {{moveName}}\nya no está anulado!", + "skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?", + "eggHatching": "¿Y esto?", + "ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?" +} as const; \ No newline at end of file diff --git a/src/locales/es/command-ui-handler.ts b/src/locales/es/command-ui-handler.ts index 237e779db..66a892f8f 100644 --- a/src/locales/es/command-ui-handler.ts +++ b/src/locales/es/command-ui-handler.ts @@ -2,7 +2,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; export const commandUiHandler: SimpleTranslationEntries = { "fight": "Luchar", - "ball": "Ball", + "ball": "Balls", "pokemon": "Pokémon", "run": "Huir", "actionMessage": "¿Qué debería\nhacer {{pokemonName}}?", diff --git a/src/locales/es/fight-ui-handler.ts b/src/locales/es/fight-ui-handler.ts new file mode 100644 index 000000000..b431e3b70 --- /dev/null +++ b/src/locales/es/fight-ui-handler.ts @@ -0,0 +1,6 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const fightUiHandler: SimpleTranslationEntries = { + "pp": "PP", + "power": "POTENCIA", +} as const; diff --git a/src/locales/es/menu.ts b/src/locales/es/menu.ts index dc1c50b38..4839630bc 100644 --- a/src/locales/es/menu.ts +++ b/src/locales/es/menu.ts @@ -13,53 +13,34 @@ export const menu: SimpleTranslationEntries = { "newGame": "Nueva partida", "selectGameMode": "Elige un modo de juego.", "logInOrCreateAccount": "Inicia sesión o crea una cuenta para empezar. ¡No se requiere correo electrónico!", + "username": "Usuario", + "password": "Contraseña", + "login": "Iniciar Sesión", + "register": "Registrarse", + "emptyUsername": "El usuario no puede estar vacío", + "invalidLoginUsername": "El usuario no es válido", + "invalidRegisterUsername": "El usuario solo puede contener letras, números y guiones bajos", + "invalidLoginPassword": "La contraseña no es válida", + "invalidRegisterPassword": "Contraseña debe tener 6 o más caracter.", + "usernameAlreadyUsed": "El usuario ya está en uso", + "accountNonExistent": "El usuario no existe", + "unmatchingPassword": "La contraseña no coincide", + "passwordNotMatchingConfirmPassword": "Las contraseñas deben coincidir", + "confirmPassword": "Confirmar Contra.", + "registrationAgeWarning": "Al registrarte, confirmas tener 13 o más años de edad.", + "backToLogin": "Volver al Login", "failedToLoadSaveData": "No se ha podido cargar los datos guardados. Por favor, recarga la página.\nSi el fallo continúa, por favor contacta al administrador.", "sessionSuccess": "Sesión cargada con éxito.", "failedToLoadSession": "No se ha podido cargar los datos de tu sesión.\nPuede que estén corruptos.", "boyOrGirl": "¿Eres un chico o una chica?", "boy": "Chico", "girl": "Chica", - "bossAppeared": "¡{{bossName}} te corta el paso!", - "trainerAppeared": "¡{{trainerName}}\nte desafía!", - "singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!", - "multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!", - "playerComeBack": "¡{{pokemonName}}, ven aquí!", - "trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!", - "playerGo": "¡Adelante, {{pokemonName}}!", - "trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!", - "switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?", - "trainerDefeated": "¡Has derrotado a\n{{trainerName}}!", - "pokemonCaught": "¡{{pokemonName}} atrapado!", - "pokemon": "Pokémon", - "sendOutPokemon": "¡Adelante, {{pokemonName}}!", - "attackFailed": "¡Pero ha fallado!", - "attackHitsCount": `N.º de golpes: {{count}}.`, - "expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.", - "levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!", - "learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!", - "learnMovePrompt": "{{pokemonName}} quiere aprender {{moveName}}.", - "learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.", - "learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?", - "learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.", - "learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?", - "learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.", - "levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!", - "moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.", - "moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!", - "noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.", - "noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!", - "noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!", - "noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!", - "noEscapeForce": "Una fuerza misteriosa\nte impide huir.", - "noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!", - "noEscapePokemon": "¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!", - "runAwaySuccess": "¡Escapas sin problemas!", - "runAwayCannotEscape": "¡No has podido escapar!", - "escapeVerbSwitch": "cambiar", - "escapeVerbFlee": "huir", - "notDisabled": "¡El movimiento {{moveName}}\nya no está anulado!", - "skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?", - "eggHatching": "¿Y esto?", - "ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?" + "dailyRankings": "Rankings Diarios", + "weeklyRankings": "Rankings Semanales", + "noRankings": "Sin Rankings", + "loading": "Cargando…", + "playersOnline": "Jugadores en Línea", + "empty":"Vacío", + "yes":"Sí", + "no":"No", } as const; \ No newline at end of file diff --git a/src/locales/es/pokemon-stat.ts b/src/locales/es/pokemon-stat.ts index 276b099bf..514ef1989 100644 --- a/src/locales/es/pokemon-stat.ts +++ b/src/locales/es/pokemon-stat.ts @@ -4,13 +4,13 @@ export const pokemonStat: SimpleTranslationEntries = { "HP": "PV", "HPshortened": "PV", "ATK": "Ataque", - "ATKshortened": "Ataque", + "ATKshortened": "Ata", "DEF": "Defensa", - "DEFshortened": "Defensa", + "DEFshortened": "Def", "SPATK": "At. Esp.", - "SPATKshortened": "At. Esp.", + "SPATKshortened": "AtEsp", "SPDEF": "Def. Esp.", - "SPDEFshortened": "Def. Esp.", + "SPDEFshortened": "DefEsp", "SPD": "Velocidad", "SPDshortened": "Veloc." } as const; \ No newline at end of file diff --git a/src/locales/es/pokemon.ts b/src/locales/es/pokemon.ts index 09be8894e..7826e15ba 100644 --- a/src/locales/es/pokemon.ts +++ b/src/locales/es/pokemon.ts @@ -772,7 +772,7 @@ export const pokemon: SimpleTranslationEntries = { "sandygast": "Sandygast", "palossand": "Palossand", "pyukumuku": "Pyukumuku", - "type_null": "Type: Null", + "type_null": "Código Cero", "silvally": "Silvally", "minior": "Minior", "komala": "Komala", @@ -984,18 +984,18 @@ export const pokemon: SimpleTranslationEntries = { "farigiraf": "Farigiraf", "dudunsparce": "Dudunsparce", "kingambit": "Kingambit", - "great_tusk": "Great Tusk", - "scream_tail": "Scream Tail", - "brute_bonnet": "Brute Bonnet", - "flutter_mane": "Flutter Mane", - "slither_wing": "Slither Wing", - "sandy_shocks": "Sandy Shocks", - "iron_treads": "Iron Treads", - "iron_bundle": "Iron Bundle", - "iron_hands": "Iron Hands", - "iron_jugulis": "Iron Jugulis", - "iron_moth": "Iron Moth", - "iron_thorns": "Iron Thorns", + "great_tusk": "Colmilargo", + "scream_tail": "Colagrito", + "brute_bonnet": "Furioseta", + "flutter_mane": "Melenaleteo", + "slither_wing": "Reptalada", + "sandy_shocks": "Pelarena", + "iron_treads": "Ferrodada", + "iron_bundle": "Ferrosaco", + "iron_hands": "Ferropalmas", + "iron_jugulis": "Ferrocuello", + "iron_moth": "Ferropolilla", + "iron_thorns": "Ferropúas", "frigibax": "Frigibax", "arctibax": "Arctibax", "baxcalibur": "Baxcalibur", @@ -1005,12 +1005,12 @@ export const pokemon: SimpleTranslationEntries = { "chien_pao": "Chien-Pao", "ting_lu": "Ting-Lu", "chi_yu": "Chi-Yu", - "roaring_moon": "Roaring Moon", - "iron_valiant": "Iron Valiant", + "roaring_moon": "Bramaluna", + "iron_valiant": "Ferropaladín", "koraidon": "Koraidon", "miraidon": "Miraidon", - "walking_wake": "Walking Wake", - "iron_leaves": "Iron Leaves", + "walking_wake": "Ondulagua", + "iron_leaves": "Ferroverdor", "dipplin": "Dipplin", "poltchageist": "Poltchageist", "sinistcha": "Sinistcha", @@ -1020,10 +1020,10 @@ export const pokemon: SimpleTranslationEntries = { "ogerpon": "Ogerpon", "archaludon": "Archaludon", "hydrapple": "Hydrapple", - "gouging_fire": "Gouging Fire", - "raging_bolt": "Raging Bolt", - "iron_boulder": "Iron Boulder", - "iron_crown": "Iron Crown", + "gouging_fire": "Flamariete", + "raging_bolt": "Electrofuria", + "iron_boulder": "Ferromole", + "iron_crown": "Ferrotesta", "terapagos": "Terapagos", "pecharunt": "Pecharunt", "alola_rattata": "Rattata", @@ -1083,4 +1083,4 @@ export const pokemon: SimpleTranslationEntries = { "paldea_tauros": "Tauros", "paldea_wooper": "Wooper", "bloodmoon_ursaluna": "Ursaluna", -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/es/starter-select-ui-handler.ts b/src/locales/es/starter-select-ui-handler.ts new file mode 100644 index 000000000..629e25632 --- /dev/null +++ b/src/locales/es/starter-select-ui-handler.ts @@ -0,0 +1,32 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon data. This includes menu navigation, settings, + * account interactions, descriptive text, etc. + */ +export const starterSelectUiHandler: SimpleTranslationEntries = { + "confirmStartTeam":'¿Comenzar con estos Pokémon?', + "growthRate": "Crecimiento:", + "ability": "Habilid:", + "passive": "Pasiva:", + "nature": "Natur:", + "eggMoves": "Mov. Huevo", + "start": "Iniciar", + "addToParty": "Añadir a Equipo", + "toggleIVs": "Mostrar IVs", + "manageMoves": "Gestionar Movs.", + "useCandies": "Usar Caramelos", + "selectMoveSwapOut": "Elige el movimiento que sustituir.", + "selectMoveSwapWith": "Elige el movimiento que sustituirá a", + "unlockPassive": "Añadir Pasiva", + "reduceCost": "Reducir Coste", + "cycleShiny": "R: Cambiar Shiny", + "cycleForm": 'F: Cambiar Forma', + "cycleGender": 'G: Cambiar Género', + "cycleAbility": 'E: Cambiar Habilidad', + "cycleNature": 'N: Cambiar Naturaleza', + "cycleVariant": 'V: Cambiar Variante', + "enablePassive": "Activar Pasiva", + "disablePassive": "Desactivar Pasiva" +} \ No newline at end of file diff --git a/src/locales/es/tutorial.ts b/src/locales/es/tutorial.ts new file mode 100644 index 000000000..6e131f9b0 --- /dev/null +++ b/src/locales/es/tutorial.ts @@ -0,0 +1,49 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const tutorial: SimpleTranslationEntries = { + "intro": `¡Bienvenido/a a PokéRogue! Este es un fangame de Pokémon centrado en el combate con elementos roguelite. + $Este juego no está monetizado y no reclamamos ningún derecho de propiedad sobre Pokémon ni sobre ninguno de + $los recursos con copyright utilizados. + $El juego está en proceso, pero es completamente jugable.\nPara reportar bugs, por favor, hazlo en nuestra + $comunidad de Discord. + $Si el juego va lento, por favor, asegúrate de que tengas activada la opción 'Aceleración de gráficos' en los + $ajustes de tu navegador.`, + + "accessMenu": `Para acceder al menú, pulsa M o Escape cuando\ntengas el control. + $El menú contiene los ajustes y otras funciones.`, + + "menu": `Desde este menú podrás acceder a los ajustes. + $Podrás cambiar la velocidad del juego, el estilo de la ventana y demás. + $Hay más opciones, ¡así que pruébalas todas!`, + + "starterSelect": `En esta pantalla podrás elegir tus iniciales. Estos serán tus\nmiembros de equipo al comenzar la partida. + $Cada inicial tiene un valor. Tu equipo puede contener hasta 6\nmiembros mientras el valor total no pase de 10. + $También puedes elegir su género, habilidad y forma\ndependiendo de las variantes que hayas conseguido. + $Los IVs de los iniciales corresponderán al valor más alto de\nlos Pokémon de la misma especie que hayas obtenido. + $¡Así que intenta conseguir muchos Pokémon de la misma\nespecie!`, + + "pokerus": `Cada día, 3 iniciales aleatorios tendrán un borde morado. + $Si ves un inicial que tengas con este borde, prueba a\nañadirlo a tu equipo. ¡No olvides revisar sus datos!`, + + "statChange": `Los cambios de estadísticas se mantienen entre combates\nmientras que el Pokémon no vuelva a la Poké Ball. + $Tus Pokémon vuelven a sus Poké Balls antes de combates contra entrenadores y de entrar a un nuevo bioma. + $También puedes ver los cambios de estadísticas del Pokémon en campo manteniendo pulsado C o Shift.`, + + "selectItem": `Tras cada combate, tendrás la opción de elegir entre tres objetos aleatorios. Solo podrás escoger uno. + $Estos objetos pueden ser consumibles, objetos equipables u objetos pasivos permanentes (hasta acabar la partida). + $La mayoría de los efectos de objetos no consumibles se acumularán de varias maneras. + $Algunos objetos solo aparecerán si pueden ser utilizados, como las piedras evolutivas. + $También puedes transferir objetos equipados entre Pokémon utilizando la opción de transferir. + $La opción de transferir aparecerá en la parte inferior derecha una vez hayas obtenido un objeto equipable. + $También puedes comprar objetos consumibles con dinero y su variedad irá aumentando según tu avance. + $Asegúrate de comprar antes de escoger un objeto aleatorio, ya que se avanzará al siguiente combate.`, + + "eggGacha": `En esta pantalla podrás canjear tus vales por huevos\nde Pokémon. + $Los huevos deben eclosionar y estarán más cerca de\nhacerlo tras cada combate. + $Los huevos más raros tardarán más en eclosionar. + $Los Pokémon que hayan salido del huevo no se\nañadirán a tu equipo, pero sí a tus iniciales. + $Los Pokémon salidos de un huevo suelen tener mejores\nIVs que los Pokémon salvajes. + $Algunos Pokémon solo pueden ser obtenidos de huevos. + $Hay 3 máquinas diferentes entre las que elegir, cada\nuna con zdiferentes bonificaciones. + $¡Así que escoge la que más te interese!`, +} as const; \ No newline at end of file diff --git a/src/locales/fr/battle.ts b/src/locales/fr/battle.ts new file mode 100644 index 000000000..56ab69215 --- /dev/null +++ b/src/locales/fr/battle.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const battle: SimpleTranslationEntries = { + "bossAppeared": "Un {{bossName}} apparaît.", + "trainerAppeared": "Un combat est lancé\npar {{trainerName}} !", + "singleWildAppeared": "Un {{pokemonName}} sauvage apparaît !", + "multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !", + "playerComeBack": "{{pokemonName}}, on change !\nReviens !", + "trainerComeBack": "{{trainerName}} retire {{pokemonName}} !", + "playerGo": "{{pokemonName}} ! Go !", + "trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !", + "switchQuestion": "Voulez-vous changer\nvotre {{pokemonName}} ?", + "trainerDefeated": `Vous avez battu\n{{trainerName}} !`, + "pokemonCaught": "Vous avez attrapé {{pokemonName}} !", + "pokemon": "Pokémon", + "sendOutPokemon": "{{pokemonName}} ! Go !", + "hitResultCriticalHit": "Coup critique !", + "hitResultSuperEffective": "C’est super efficace !", + "hitResultNotVeryEffective": "Ce n’est pas très efficace…", + "hitResultNoEffect": "Ça n’affecte pas {{pokemonName}}…", + "hitResultOneHitKO": "K.O. en un coup !", + "attackFailed": "Mais cela échoue !", + "attackHitsCount": `Touché {{count}} fois !`, + "expGain": "{{pokemonName}} gagne\n{{exp}} Points d’Exp !", + "levelUp": "{{pokemonName}} monte au\nN. {{level}} !", + "learnMove": "{{pokemonName}} apprend\n{{moveName}} !", + "learnMovePrompt": "{{pokemonName}} veut apprendre\n{{moveName}}.", + "learnMoveLimitReached": "Cependant, {{pokemonName}} connait\ndéjà quatre capacités.", + "learnMoveReplaceQuestion": "Voulez-vous oublier une capacité\net la remplacer par {{moveName}} ?", + "learnMoveStopTeaching": "Arrêter d’apprendre\n{{moveName}} ?", + "learnMoveNotLearned": "{{pokemonName}} n’a pas appris\n{{moveName}}.", + "learnMoveForgetQuestion": "Quelle capacité doit être oubliée ?", + "learnMoveForgetSuccess": "{{pokemonName}} oublie comment\nutiliser {{moveName}}.", + "levelCapUp": "La limite de niveau\na été augmentée à {{levelCap}} !", + "moveNotImplemented": "{{moveName}} n’est pas encore implémenté et ne peut pas être sélectionné.", + "moveNoPP": "Il n’y a plus de PP pour\ncette capacité !", + "moveDisabled": "{{moveName}} est sous entrave !", + "noPokeballForce": "Une force mystérieuse\nempêche l’utilisation des Poké Balls.", + "noPokeballTrainer": "Le Dresseur détourne la Ball\nVoler, c’est mal !", + "noPokeballMulti": "Impossible ! On ne peut pas viser\nquand il y a deux Pokémon !", + "noPokeballStrong": "Le Pokémon est trop fort pour être capturé !\nVous devez d’abord l’affaiblir !", + "noEscapeForce": "Une force mystérieuse\nempêche la fuite.", + "noEscapeTrainer": "On ne s’enfuit pas d’un\ncombat de Dresseurs !", + "noEscapePokemon": "{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !", + "runAwaySuccess": "Vous prenez la fuite !", + "runAwayCannotEscape": "Fuite impossible !", + "escapeVerbSwitch": "le changement", + "escapeVerbFlee": "la fuite", + "notDisabled": "{{moveName}} n’est plus sous entrave !", + "skipItemQuestion": "Êtes-vous sûr·e de ne pas vouloir prendre d’objet ?", + "eggHatching": "Oh ?", + "ivScannerUseQuestion": "Utiliser le Scanner d’IV sur {{pokemonName}} ?" +} as const; diff --git a/src/locales/fr/menu-ui-handler.ts b/src/locales/fr/menu-ui-handler.ts index 684a8cc07..54328a05e 100644 --- a/src/locales/fr/menu-ui-handler.ts +++ b/src/locales/fr/menu-ui-handler.ts @@ -13,9 +13,9 @@ export const menuUiHandler: SimpleTranslationEntries = { "LOG_OUT": "Déconnexion", "slot": "Emplacement {{slotNumber}}", "importSession": "Importer session", - "importSlotSelect": "Sélectionnez l'emplacement vers lequel importer les données.", + "importSlotSelect": "Sélectionnez l’emplacement vers lequel importer les données.", "exportSession": "Exporter session", - "exportSlotSelect": "Sélectionnez l'emplacement depuis lequel exporter les données.", + "exportSlotSelect": "Sélectionnez l’emplacement depuis lequel exporter les données.", "importData": "Importer données", "exportData": "Exporter données", "cancel": "Retour", diff --git a/src/locales/fr/menu.ts b/src/locales/fr/menu.ts index 8c9a8f073..b073bbbfb 100644 --- a/src/locales/fr/menu.ts +++ b/src/locales/fr/menu.ts @@ -8,69 +8,34 @@ export const menu: SimpleTranslationEntries = { "newGame": "Nouvelle partie", "selectGameMode": "Sélectionnez un mode de jeu.", "logInOrCreateAccount": "Connectez-vous ou créez un compte pour commencer. Aucun e-mail requis !", - "username": "Nom d'utilisateur", + "username": "Nom d’utilisateur", "password": "Mot de passe", "login": "Connexion", - "register": "S'inscrire", - "emptyUsername": "Le nom d'utilisateur est manquant", - "invalidLoginUsername": "Le nom d'utilisateur n'est pas valide", - "invalidRegisterUsername": "Le nom d'utilisateur ne doit contenir que\ndes lettres, chiffres ou traits bas", - "invalidLoginPassword": "Le mot de passe n'est pas valide", + "register": "S’inscrire", + "emptyUsername": "Le nom d’utilisateur est manquant", + "invalidLoginUsername": "Le nom d’utilisateur n’est pas valide", + "invalidRegisterUsername": "Le nom d’utilisateur ne doit contenir que\ndes lettres, chiffres ou traits bas", + "invalidLoginPassword": "Le mot de passe n’est pas valide", "invalidRegisterPassword": "Le mot de passe doit contenir 6 caractères ou plus", - "usernameAlreadyUsed": "Le nom d'utilisateur est déjà utilisé", - "accountNonExistent": "Le nom d'utilisateur n'existe pas", - "unmatchingPassword": "Le mot de passe n'est pas correct", + "usernameAlreadyUsed": "Le nom d’utilisateur est déjà utilisé", + "accountNonExistent": "Le nom d’utilisateur n’existe pas", + "unmatchingPassword": "Le mot de passe n’est pas correct", "passwordNotMatchingConfirmPassword": "Les mots de passe ne correspondent pas", "confirmPassword": "Confirmer le MDP", "registrationAgeWarning": "Vous confirmez en vous inscrivant que vous avez 13 ans ou plus.", "backToLogin": "Retour", - "failedToLoadSaveData": "Échec du chargement des données. Veuillez recharger la page.\nSi cela continue, veuillez contacter l'administrateur.", + "failedToLoadSaveData": "Échec du chargement des données. Veuillez recharger la page.\nSi cela continue, veuillez contacter l’administrateur.", "sessionSuccess": "Session chargée avec succès.", - "failedToLoadSession": "Vos données de session n'ont pas pu être chargées.\nElles pourraient être corrompues.", + "failedToLoadSession": "Vos données de session n’ont pas pu être chargées.\nElles pourraient être corrompues.", "boyOrGirl": "Es-tu un garçon ou une fille ?", "boy": "Garçon", "girl": "Fille", - "bossAppeared": "Un {{bossName}} apparaît.", - "trainerAppeared": "Un combat est lancé\npar {{trainerName}} !", - "singleWildAppeared": "Un {{pokemonName}} sauvage apparaît !", - "multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !", - "playerComeBack": "{{pokemonName}}, on change !\nReviens !", - "trainerComeBack": "{{trainerName}} retire {{pokemonName}} !", - "playerGo": "{{pokemonName}} ! Go !", - "trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !", - "switchQuestion": "Voulez-vous changer\n{{pokemonName}} ?", - "trainerDefeated": `You defeated\n{{trainerName}}!`, - "pokemonCaught": "{{pokemonName}} was caught!", - "pokemon": "Pokémon", - "sendOutPokemon": "{{pokemonName}} ! Go !", - "attackFailed": "But it failed!", - "attackHitsCount": `Hit {{count}} time(s)!`, - "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!", - "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!", - "learnMove": "{{pokemonName}} learned\n{{moveName}}!", - "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.", - "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.", - "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?", - "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.", - "learnMoveForgetQuestion": "Which move should be forgotten?", - "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.", - "levelCapUp": "La limite de niveau\na été augmentée à {{levelCap}} !", - "moveNotImplemented": "{{moveName}} n'est pas encore implémenté et ne peut pas être sélectionné.", - "moveDisabled": "{{moveName}} est sous entrave !", - "noPokeballForce": "Une force mystérieuse\nempêche l'utilisation des Poké Balls.", - "noPokeballTrainer": "Le Dresseur détourne la Ball\nVoler, c'est mal !", - "noPokeballMulti": "Impossible ! On ne peut pas viser\nquand il y a deux Pokémon!", - "noPokeballStrong": "Le Pokémon est trop fort pour être capturé !\nVous devez d'abord l'affaiblir !", - "noEscapeForce": "Une force mystérieuse\nempêche la fuite.", - "noEscapeTrainer": "On ne s'enfuit pas d'un\ncombat de Dresseurs !", - "noEscapePokemon": "{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !", - "runAwaySuccess": "You got away safely!", - "runAwayCannotEscape": 'You can\'t escape!', - "escapeVerbSwitch": "le changement", - "escapeVerbFlee": "la fuite", - "notDisabled": "{{moveName}} n'est plus sous entrave !", - "skipItemQuestion": "Are you sure you want to skip taking an item?", - "eggHatching": "Oh?", - "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?", -} as const; \ No newline at end of file + "dailyRankings": "Classement du Jour", + "weeklyRankings": "Classement de la Semaine", + "noRankings": "Pas de Classement", + "loading": "Chargement…", + "playersOnline": "Joueurs Connectés", + "empty":"Vide", + "yes":"Oui", + "no":"Non", +} as const; diff --git a/src/locales/fr/move.ts b/src/locales/fr/move.ts index 867fbd4f4..b6d17252b 100644 --- a/src/locales/fr/move.ts +++ b/src/locales/fr/move.ts @@ -390,7 +390,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur se relaxe et allège son corps pour beaucoup augmenter sa Vitesse." }, "quickAttack": { - name: "Vive-attaque", + name: "Vive-Attaque", effect: "Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité." }, "rage": { @@ -490,8 +490,8 @@ export const move: MoveTranslationEntries = { effect: "Un grand coup de langue qui inflige des dégâts à la cible et peut aussi la paralyser (30% de chances)." }, "smog": { - name: "Bain de Smog", - effect: "Le lanceur projette de la boue bizarre sur la cible. Les changements de stats de la cible sont annulés." + name: "Purédpois", + effect: "Le lanceur attaque à l'aide d'une éruption de gaz répugnants qui peuvent aussi empoisonner la cible." }, "sludge": { name: "Détritus", @@ -1090,7 +1090,7 @@ export const move: MoveTranslationEntries = { effect: "Imite la cible et copie son talent." }, "wish": { - name: "Voeu", + name: "Vœu", effect: "Un vœu qui permet au lanceur ou au Pokémon entrant sur le terrain au tour suivant de récupérer la moitié des PV max du lanceur." }, "assist": { @@ -1410,7 +1410,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur projette une aura aquatique sur la cible, et peut la rendre confuse." }, "doomDesire": { - name: "Voeu Destructeur", + name: "Vœu Destructeur", effect: "Le lanceur génère une sphère lumineuse qu’il projette sur l’ennemi deux tours plus tard." }, "psychoBoost": { @@ -1442,7 +1442,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur effectue une rotation rapide et frappe la cible. Plus la Vitesse du lanceur est basse par rapport à celle de la cible, plus il inflige de dégâts." }, "healingWish": { - name: "Voeu Soin", + name: "Vœu Soin", effect: "Le lanceur tombe K.O. pour soigner les altérations de statut et les PV du Pokémon qui viendra le remplacer sur le terrain." }, "brine": { @@ -1786,7 +1786,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur fait flotter des pierres autour de la cible qui blessent tout adversaire entrant au combat." }, "grassKnot": { - name: "Noeud Herbe", + name: "Nœud Herbe", effect: "Le lanceur fait des nœuds dans l’herbe pour faire trébucher la cible. Plus la cible est lourde, plus la puissance de cette capacité augmente." }, "chatter": { @@ -2030,7 +2030,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur emmène l’ennemi dans les airs au premier tour et le lâche dans le vide au second. L’ennemi saisi ne peut pas attaquer." }, "shiftGear": { - name: "Chgt Vitesse", + name: "Change-Vitesse", effect: "Le lanceur fait tourner ses engrenages. Cela augmente son Attaque et augmente beaucoup sa Vitesse." }, "circleThrow": { @@ -2858,7 +2858,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur attaque avec un rayon de lumière mystérieux. Ignore le talent de la cible." }, "tearfulLook": { - name: "Larme à l’Oeil", + name: "Larme à l’Œil", effect: "Le lanceur regarde la cible avec des yeux remplis de larmes. Celle-ci perd toute combativité et voit son Attaque et son Attaque Spéciale baisser." }, "zingZap": { @@ -3362,7 +3362,7 @@ export const move: MoveTranslationEntries = { effect: "Le lanceur entaille la cible avec ses ailes renforcées par une émanation psychique. Taux de critiques élevé. Cela augmente la Vitesse du lanceur." }, "bitterMalice": { - name: "Coeur de Rancoeur", + name: "Cœur de Rancœur", effect: "Une rancœur glaciale frappe la cible et baisse son Attaque." }, "shelter": { diff --git a/src/locales/fr/pokemon.ts b/src/locales/fr/pokemon.ts index fa543852b..fc0ed5e10 100644 --- a/src/locales/fr/pokemon.ts +++ b/src/locales/fr/pokemon.ts @@ -75,7 +75,7 @@ export const pokemon: SimpleTranslationEntries = { "tentacool": "Tentacool", "tentacruel": "Tentacruel", "geodude": "Racaillou", - "graveler": "Gravalanche", + "graveler": "Gravalanch", "golem": "Grolem", "ponyta": "Ponyta", "rapidash": "Galopa", @@ -279,7 +279,7 @@ export const pokemon: SimpleTranslationEntries = { "taillow": "Nirondelle", "swellow": "Hélédelle", "wingull": "Goélise", - "pelipper": "Békipan", + "pelipper": "Bekipan", "ralts": "Tarsal", "kirlia": "Kirlia", "gardevoir": "Gardevoir", @@ -307,7 +307,7 @@ export const pokemon: SimpleTranslationEntries = { "aron": "Galekid", "lairon": "Galegon", "aggron": "Galeking", - "meditite": "Méditika", + "meditite": "Méditikka", "medicham": "Charmina", "electrike": "Dynavolt", "manectric": "Élecsprint", @@ -573,7 +573,7 @@ export const pokemon: SimpleTranslationEntries = { "zorua": "Zorua", "zoroark": "Zoroark", "minccino": "Chinchidou", - "cinccino": "Pasmilla", + "cinccino": "Pashmilla", "gothita": "Scrutella", "gothorita": "Mesmérella", "gothitelle": "Sidérella", @@ -766,7 +766,7 @@ export const pokemon: SimpleTranslationEntries = { "tsareena": "Sucreine", "comfey": "Guérilande", "oranguru": "Gouroutan", - "passimian": "Quatermac", + "passimian": "Quartermac", "wimpod": "Sovkipou", "golisopod": "Sarmuraï", "sandygast": "Bacabouh", diff --git a/src/locales/fr/starter-select-ui-handler.ts b/src/locales/fr/starter-select-ui-handler.ts new file mode 100644 index 000000000..f91194f0c --- /dev/null +++ b/src/locales/fr/starter-select-ui-handler.ts @@ -0,0 +1,32 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon data. This includes menu navigation, settings, + * account interactions, descriptive text, etc. + */ +export const starterSelectUiHandler: SimpleTranslationEntries = { + "confirmStartTeam":'Commencer avec ces Pokémon ?', + "growthRate": "Growth Rate:", + "ability": "Ability:", + "passive": "Passive:", + "nature": "Nature:", + "eggMoves": 'Egg Moves', + "start": "Start", + "addToParty": "Add to Party", + "toggleIVs": 'Toggle IVs', + "manageMoves": 'Manage Moves', + "useCandies": 'Use Candies', + "selectMoveSwapOut": "Select a move to swap out.", + "selectMoveSwapWith": "Select a move to swap with", + "unlockPassive": "Unlock Passive", + "reduceCost": "Reduce Cost", + "cycleShiny": "R: Cycle Shiny", + "cycleForm": 'F: Cycle Form', + "cycleGender": 'G: Cycle Gender', + "cycleAbility": 'E: Cycle Ability', + "cycleNature": 'N: Cycle Nature', + "cycleVariant": 'V: Cycle Variant', + "enablePassive": "Enable Passive", + "disablePassive": "Disable Passive" +} \ No newline at end of file diff --git a/src/locales/fr/tutorial.ts b/src/locales/fr/tutorial.ts new file mode 100644 index 000000000..bcd76d61d --- /dev/null +++ b/src/locales/fr/tutorial.ts @@ -0,0 +1,47 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const tutorial: SimpleTranslationEntries = { + "intro": `Bienvenue dans PokéRogue, un fangame axé sur les combats Pokémon avec des éléments roguelite ! + $Ce jeu n’est pas monétisé et nous ne prétendons pas à la propriété de Pokémon, ni des éléments sous copyright + $utilisés. + $Ce jeu est toujours en développement, mais entièrement jouable. + $Tout signalement de bugs passe par le serveur Discord. + $Si le jeu est lent, vérifiez que l’Accélération Matérielle est activée dans les paramètres du navigateur.`, + + "accessMenu": `Accédez au menu avec M ou Échap lors de l’attente d’une\naction. + $Il contient les paramètres et diverses fonctionnalités`, + + "menu": `Vous pouvez accéder aux paramètres depuis ce menu. + $Vous pouvez entre autres y changer la vitesse du jeu ou le style de fenêtre. + $Il y a également toute une variété d’autres fonctionnalités, + $jetez-y un œil !`, + + "starterSelect": `Choisissez vos starters depuis cet écran.\nIls formeront votre équipe de départ. + $Chacun possède une valeur. Votre équipe peut avoir jusqu’à\n6 membres, tant que vous ne dépassez pas un cout de 10. + $Vous pouvez aussi choisir le sexe, le talent et la forme en\nfonction des variants déjà capturés ou éclos. + $Les IVs d’un starter sont les meilleurs de tous ceux de son\nespèce déjà obtenus. Essayez donc d’en obtenir plusieurs !`, + + "pokerus": `Chaque jour, 3 starters tirés aléatoirement ont un contour + $violet. Si un starter que vous possédez l’a, essayez de + $l’ajouter à votre équipe. Vérifiez bien son résumé !`, + + "statChange": `Les changements de stats restent à travers les combats tant que le Pokémon n’est pas rappelé. + $Vos Pokémon sont rappelés avant un combat de Dresseur et avant d’entrer dans un nouveau biome. + $Vous pouvez également voir en combat les changements de stats d’un Pokémon en maintenant C ou Maj.`, + + "selectItem": `Après chaque combat, vous avez le choix entre 3 objets\ntirés au sort. Vous ne pouvez en prendre qu’un. + $Cela peut être des objets consommables, des objets à\nfaire tenir, ou des objets passifs aux effets permanents. + $La plupart des effets des objets non-consommables se cumuleront de diverses manières. + $Certains objets apparaîtront s’ils peuvent être utilisés, comme les objets d’évolution. + $Vous pouvez aussi transférer des objets tenus entre Pokémon en utilisant l’option de transfert. + $L’option de transfert apparaît en bas à droite dès que vous avez obtenu un objet à faire tenir. + $Vous pouvez acheter des consommables avec de l’argent.\nPlus vous progressez, plus le choix sera varié. + $Choisir un des objets gratuits déclenchera le prochain combat, donc faites bien tous vos achats avant.`, + + "eggGacha": `Depuis cet écran, vous pouvez échanger vos coupons\ncontre des Œufs de Pokémon. + $Les Œufs éclosent après avoir remporté un certain nombre\nde combats. Les plus rares mettent plus de temps. + $Les Pokémon éclos ne rejoindront pas votre équipe,\nmais seront ajoutés à vos starters. + $Les Pokémon issus d’Œufs ont généralement de\nmeilleurs IVs que les Pokémon sauvages. + $Certains Pokémon ne peuvent être obtenus\nque dans des Œufs. + $Il y a 3 différentes machines à actionner avec différents\nbonus, prenez celle qui vous convient le mieux !`, +} as const; diff --git a/src/locales/it/ability.ts b/src/locales/it/ability.ts new file mode 100644 index 000000000..4955813c4 --- /dev/null +++ b/src/locales/it/ability.ts @@ -0,0 +1,1244 @@ +import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; + +export const ability: AbilityTranslationEntries = { + stench: { + name: "Tanfo", + description: "Quando il Pokémon attacca il bersaglio, può farlo tentennare grazie al cattivo odore che emana.", + }, + drizzle: { + name: "Piovischio", + description: "Quando il Pokémon entra in campo, attira la pioggia.", + }, + speedBoost: { + name: "Acceleratore", + description: "La Velocità aumenta a ogni turno.", + }, + battleArmor: { + name: "Lottascudo", + description: "Il Pokémon è protetto da una dura corazza che gli evita di subire brutti colpi.", + }, + sturdy: { + name: "Vigore", + description: "Evita che il Pokémon vada KO in un sol colpo se ha tutti i PS, e lo rende immune alle mosse che causano KO immediato.", + }, + damp: { + name: "Umidità", + description: "Aumenta l'umidità circostante, impedendo l'uso di Autodistruzione e di altre mosse esplosive.", + }, + limber: { + name: "Scioltezza", + description: "Il corpo flessibile del Pokémon gli impedisce di subire gli effetti della paralisi.", + }, + sandVeil: { + name: "Sabbiavelo", + description: "L'elusione aumenta durante le tempeste di sabbia.", + }, + static: { + name: "Statico", + description: "Il Pokémon si ricopre di elettricità statica e può causare paralisi a chi è entrato in contatto con lui.", + }, + voltAbsorb: { + name: "Assorbivolt", + description: "Se il Pokémon viene colpito da una mossa di tipo Elettro, recupera PS anziché subire danni.", + }, + waterAbsorb: { + name: "Assorbacqua", + description: "Se il Pokémon viene colpito da una mossa di tipo Acqua, recupera PS anziché subire danni.", + }, + oblivious: { + name: "Indifferenza", + description: "L'imperturbabilità del Pokémon lo protegge da infatuazioni, provocazioni e dall'effetto di Prepotenza.", + }, + cloudNine: { + name: "Antimeteo", + description: "Neutralizza gli effetti di tutte le condizioni atmosferiche.", + }, + compoundEyes: { + name: "Insettocchi", + description: "La precisione del Pokémon aumenta grazie ai suoi occhi composti.", + }, + insomnia: { + name: "Insonnia", + description: "Il Pokémon soffre d'insonnia e non può addormentarsi.", + }, + colorChange: { + name: "Cambiacolore", + description: "Il Pokémon acquisisce il tipo della mossa subita.", + }, + immunity: { + name: "Immunità", + description: "L'immunità naturale del Pokémon gli impedisce di essere avvelenato.", + }, + flashFire: { + name: "Fuocardore", + description: "Se il Pokémon subisce una mossa di tipo Fuoco, ne sfrutta il calore per potenziare le proprie mosse di tipo Fuoco.", + }, + shieldDust: { + name: "Polvoscudo", + description: "Il Pokémon è protetto da uno strato di scaglie che annulla gli effetti aggiuntivi delle mosse subite.", + }, + ownTempo: { + name: "Mente Locale", + description: "Il Pokémon affronta la vita al proprio ritmo e per questo non può essere confuso o subire l'effetto di Prepotenza.", + }, + suctionCups: { + name: "Ventose", + description: "Il Pokémon resiste a strumenti e mosse che causano la sostituzione appiccicandosi al terreno con le ventose.", + }, + intimidate: { + name: "Prepotenza", + description: "Quando il Pokémon entra in campo, la sua prepotenza crea soggezione, riducendo l'Attacco degli avversari intimiditi.", + }, + shadowTag: { + name: "Pedinombra", + description: "Il Pokémon impedisce la fuga o la sostituzione degli avversari di cui calpesta l'ombra.", + }, + roughSkin: { + name: "Cartavetro", + description: "Quando il Pokémon subisce un attacco, grazie alla sua pelle ruvida infligge a sua volta danni al Pokémon con cui è entrato in contatto.", + }, + wonderGuard: { + name: "Magidifesa", + description: "Un potere misterioso protegge il Pokémon e lo rende vulnerabile solo alle mosse superefficaci.", + }, + levitate: { + name: "Levitazione", + description: "La capacità di levitare conferisce al Pokémon immunità agli attacchi di tipo Terra.", + }, + effectSpore: { + name: "Spargispora", + description: "Può causare avvelenamento, paralisi o sonno a chi attacca il Pokémon entrando in contatto con lui.", + }, + synchronize: { + name: "Sincronismo", + description: "Se un Pokémon con questa abilità viene avvelenato, paralizzato o scottato, contagia con lo stesso problema di stato chi lo ha causato.", + }, + clearBody: { + name: "Corpochiaro", + description: "Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.", + }, + naturalCure: { + name: "Alternacura", + description: "Quando il Pokémon lascia il campo, guarisce dai problemi di stato.", + }, + lightningRod: { + name: "Parafulmine", + description: "Il Pokémon attira e neutralizza le mosse di tipo Elettro, facendo aumentare il suo Attacco Speciale.", + }, + sereneGrace: { + name: "Leggiadro", + description: "Rende più probabili gli effetti aggiuntivi delle mosse.", + }, + swiftSwim: { + name: "Nuotovelox", + description: "Se piove, la Velocità aumenta.", + }, + chlorophyll: { + name: "Clorofilla", + description: "Se la luce del sole è intensa, la Velocità aumenta.", + }, + illuminate: { + name: "Risplendi", + description: "Illuminando l'ambiente circostante, impedisce che la precisione del pokémon sia diminuita.", + }, + trace: { + name: "Traccia", + description: "Quando il Pokémon entra in campo, copia l'abilità di un avversario.", + }, + hugePower: { + name: "Macroforza", + description: "Raddoppia la potenza degli attacchi fisici del Pokémon.", + }, + poisonPoint: { + name: "Velenopunto", + description: "Può avvelenare chi entra in contatto con il Pokémon.", + }, + innerFocus: { + name: "Forza Interiore", + description: "La capacità di concentrazione del Pokémon evita che tentenni per gli attacchi subiti e lo protegge dall'effetto di Prepotenza.", + }, + magmaArmor: { + name: "Magmascudo", + description: "Il magma riveste il corpo del Pokémon impedendogli di venire congelato.", + }, + waterVeil: { + name: "Idrovelo", + description: "Un velo d'acqua riveste il corpo del Pokémon impedendogli di venire scottato.", + }, + magnetPull: { + name: "Magnetismo", + description: "La carica magnetica attrae i Pokémon di tipo Acciaio impedendogli la fuga o la sostituzione.", + }, + soundproof: { + name: "Antisuono", + description: "Il Pokémon è dotato di una sorta di isolamento acustico che lo rende immune alle mosse basate sul suono.", + }, + rainDish: { + name: "Copripioggia", + description: "Il Pokémon recupera PS quando piove.", + }, + sandStream: { + name: "Sabbiafiume", + description: "Quando il Pokémon entra in campo, scatena una tempesta di sabbia.", + }, + pressure: { + name: "Pressione", + description: "Il Pokémon mette pressione agli avversari, facendogli consumare più PP.", + }, + thickFat: { + name: "Grassospesso", + description: "Il Pokémon è protetto da uno spesso strato di grasso che dimezza il danno causato da mosse di tipo Fuoco e Ghiaccio.", + }, + earlyBird: { + name: "Sveglialampo", + description: "Anche se il Pokémon si addormenta, può risvegliarsi due volte più velocemente.", + }, + flameBody: { + name: "Corpodifuoco", + description: "Può scottare chi entra in contatto con il Pokémon.", + }, + runAway: { + name: "Fugafacile", + description: "Garantisce la fuga dai Pokémon selvatici.", + }, + keenEye: { + name: "Sguardofermo", + description: "La vista acuta del Pokémon impedisce che la sua precisione diminuisca.", + }, + hyperCutter: { + name: "Ipertaglio", + description: "Le possenti chele o tenaglie di cui è dotato il Pokémon fanno sì che il suo Attacco non possa essere diminuito da altri.", + }, + pickup: { + name: "Raccolta", + description: "Il Pokémon può raccogliere strumenti usati da altri durante la lotta. Potrebbe raccogliere strumenti anche fuori dalla lotta.", + }, + truant: { + name: "Pigrone", + description: "Quando il Pokémon usa una mossa, nel turno successivo si riposerà.", + }, + hustle: { + name: "Tuttafretta", + description: "L'Attacco aumenta, ma la precisione diminuisce.", + }, + cuteCharm: { + name: "Incantevole", + description: "Può causare infatuazione a chi entra in contatto con il Pokémon.", + }, + plus: { + name: "Più", + description: "L'Attacco Speciale aumenta se ci sono alleati con l'abilità Meno o Più.", + }, + minus: { + name: "Meno", + description: "L'Attacco Speciale aumenta se ci sono alleati con l'abilità Meno o Più.", + }, + forecast: { + name: "Previsioni", + description: "Cambia il tipo del Pokémon in Acqua, Fuoco o Ghiaccio in base alle condizioni atmosferiche.", + }, + stickyHold: { + name: "Antifurto", + description: "Gli strumenti restano appiccicati al corpo adesivo del Pokémon e non possono essere rubati.", + }, + shedSkin: { + name: "Muta", + description: "Il Pokémon può guarire dai problemi di stato facendo la muta completa della pelle.", + }, + guts: { + name: "Dentistretti", + description: "Se il Pokémon è affetto da un problema di stato, tira fuori la grinta e aumenta il proprio Attacco.", + }, + marvelScale: { + name: "Pelledura", + description: "Se il Pokémon è affetto da un problema di stato, le squame sulla sua pelle si induriscono aumentando la sua Difesa.", + }, + liquidOoze: { + name: "Melma", + description: "La melma del Pokémon infligge danni a chi la assorbe, facendogli perdere PS a causa del fortissimo tanfo.", + }, + overgrow: { + name: "Erbaiuto", + description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Erba aumenta.", + }, + blaze: { + name: "Aiutofuoco", + description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Fuoco aumenta.", + }, + torrent: { + name: "Acquaiuto", + description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Acqua aumenta.", + }, + swarm: { + name: "Aiutinsetto", + description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Coleottero aumenta.", + }, + rockHead: { + name: "Testadura", + description: "Anche se il Pokémon usa delle mosse che causano un contraccolpo, non perde PS.", + }, + drought: { + name: "Siccità", + description: "Quando il Pokémon entra in campo, la luce solare diventa intensa.", + }, + arenaTrap: { + name: "Trappoarena", + description: "Impedisce la fuga agli avversari.", + }, + vitalSpirit: { + name: "Spiritovivo", + description: "Il Pokémon è talmente vivace che non può addormentarsi.", + }, + whiteSmoke: { + name: "Fumochiaro", + description: "Il Pokémon è protetto da un fumo chiaro che impedisce ai nemici di diminuire le sue statistiche.", + }, + purePower: { + name: "Forzapura", + description: "L'Attacco del Pokémon raddoppia grazie alla sua padronanza delle tecniche yoga.", + }, + shellArmor: { + name: "Guscioscudo", + description: "Il Pokémon è protetto da un guscio robusto che gli evita di subire brutti colpi.", + }, + airLock: { + name: "Riparo", + description: "Neutralizza gli effetti di tutte le condizioni atmosferiche.", + }, + tangledFeet: { + name: "Intricopiedi", + description: "Se il Pokémon è confuso, la sua elusione aumenta.", + }, + motorDrive: { + name: "Elettrorapid", + description: "Se il Pokémon viene colpito da una mossa di tipo Elettro, la neutralizza e sfrutta la carica elettrica per aumentare la propria Velocità.", + }, + rivalry: { + name: "Antagonismo", + description: "Rende più forti contro nemici dello stesso sesso, ma più deboli contro nemici di sesso opposto.", + }, + steadfast: { + name: "Cuordeciso", + description: "Se il Pokémon tentenna, il suo animo indomito si risveglia e la sua Velocità aumenta.", + }, + snowCloak: { + name: "Mantelneve", + description: "Se grandina, l'elusione aumenta.", + }, + gluttony: { + name: "Voracità", + description: "Il Pokémon non attende di aver perso molti PS per mangiare certe bacche, ma lo fa non appena i suoi PS scendono a metà o meno.", + }, + angerPoint: { + name: "Grancollera", + description: "Se il Pokémon subisce un brutto colpo, monta su tutte le furie e il suo Attacco aumenta al massimo.", + }, + unburden: { + name: "Agiltecnica", + description: "Se il Pokémon usa o perde uno strumento, la sua Velocità aumenta.", + }, + heatproof: { + name: "Antifuoco", + description: "Il corpo termoresistente del Pokémon dimezza i danni che subisce dalle mosse di tipo Fuoco.", + }, + simple: { + name: "Disinvoltura", + description: "Raddoppia le modifiche alle statistiche.", + }, + drySkin: { + name: "Pellearsa", + description: "Il Pokémon recupera PS se piove o se subisce mosse di tipo Acqua, ma perde PS con la luce solare intensa. Subisce più danni da mosse di tipo Fuoco.", + }, + download: { + name: "Download", + description: "Il Pokémon analizza Difesa e Difesa Speciale del nemico e, a seconda di qual è più bassa, aumenta il proprio Attacco o Attacco Speciale.", + }, + ironFist: { + name: "Ferropugno", + description: "Potenzia le mosse che utilizzano pugni.", + }, + poisonHeal: { + name: "Velencura", + description: "Se il Pokémon è avvelenato, recupera PS anziché perderli.", + }, + adaptability: { + name: "Adattabilità", + description: "Potenzia di molto le mosse dello stesso tipo del Pokémon.", + }, + skillLink: { + name: "Abillegame", + description: "Le mosse multicolpo mandano a segno sempre il massimo dei colpi possibili.", + }, + hydration: { + name: "Idratazione", + description: "Se piove, il Pokémon guarisce dai problemi di stato.", + }, + solarPower: { + name: "Solarpotere", + description: "Se la luce del sole è intensa, l'Attacco Speciale aumenta, ma il Pokémon perde PS a ogni turno.", + }, + quickFeet: { + name: "Piedisvelti", + description: "Se il Pokémon è affetto da un problema di stato, la Velocità aumenta.", + }, + normalize: { + name: "Normalità", + description: "Tutte le mosse del Pokémon diventano di tipo Normale e la loro potenza aumenta un po'.", + }, + sniper: { + name: "Cecchino", + description: "Aumenta ulteriormente i danni inflitti dai brutti colpi.", + }, + magicGuard: { + name: "Magicscudo", + description: "Il Pokémon subisce danni solo dagli attacchi.", + }, + noGuard: { + name: "Nullodifesa", + description: "Il Pokémon e chiunque lo attacchi abbassano la guardia e le loro mosse vanno sempre a segno.", + }, + stall: { + name: "Rallentatore", + description: "Il Pokémon agisce sempre per ultimo.", + }, + technician: { + name: "Tecnico", + description: "Potenzia le mosse più deboli del Pokémon.", + }, + leafGuard: { + name: "Fogliamanto", + description: "Se la luce del sole è intensa, evita i problemi di stato.", + }, + klutz: { + name: "Impaccio", + description: "Il Pokémon non può usare lo strumento che ha con sé.", + }, + moldBreaker: { + name: "Rompiforma", + description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.", + }, + superLuck: { + name: "Supersorte", + description: "L'incredibile fortuna del Pokémon aumenta la sua probabilità di infliggere brutti colpi.", + }, + aftermath: { + name: "Scoppio", + description: "Chi manda KO questo Pokémon con un attacco diretto subisce dei danni.", + }, + anticipation: { + name: "Presagio", + description: "Rivela se il nemico ha mosse pericolose.", + }, + forewarn: { + name: "Premonizione", + description: "Quando il Pokémon entra in campo, rivela una delle mosse del nemico.", + }, + unaware: { + name: "Imprudenza", + description: "Quando il Pokémon attacca, ignora le modifiche alle statistiche del nemico.", + }, + tintedLens: { + name: "Lentifumé", + description: "Permette alle mosse non molto efficaci di infliggere danni normalmente.", + }, + filter: { + name: "Filtro", + description: "Riduce i danni subiti dalle mosse superefficaci.", + }, + slowStart: { + name: "Lentoinizio", + description: "Dimezza per cinque turni l'Attacco e la Velocità.", + }, + scrappy: { + name: "Nervisaldi", + description: "Permette di colpire Pokémon di tipo Spettro con mosse di tipo Normale e Lotta.", + }, + stormDrain: { + name: "Acquascolo", + description: "Il Pokémon attira e neutralizza le mosse di tipo Acqua e fa aumentare il proprio Attacco Speciale.", + }, + iceBody: { + name: "Corpogelo", + description: "Se grandina, il Pokémon recupera PS.", + }, + solidRock: { + name: "Solidroccia", + description: "Riduce i danni subiti dalle mosse superefficaci.", + }, + snowWarning: { + name: "Scendineve", + description: "Quando il Pokémon entra in campo, causa l'inizio di una nevicata.", + }, + honeyGather: { + name: "Mielincetta", + description: "Il Pokémon può raccogliere del Miele alla fine della lotta.", + }, + frisk: { + name: "Indagine", + description: "Quando il Pokémon entra in campo, rivela lo strumento del nemico.", + }, + reckless: { + name: "Temerarietà", + description: "Potenzia le mosse che causano contraccolpo.", + }, + multitype: { + name: "Multitipo", + description: "Cambia il tipo del Pokémon a seconda della lastra o del Cristallo Z che ha con sé.", + }, + flowerGift: { + name: "Regalfiore", + description: "Se la luce del sole è intensa, aumenta l'Attacco e la Difesa Speciale del Pokémon e dei suoi alleati.", + }, + badDreams: { + name: "Sogniamari", + description: "Infligge danni ai nemici addormentati.", + }, + pickpocket: { + name: "Arraffalesto", + description: "Se il Pokémon viene colpito da un attacco diretto, ruba lo strumento di chi lo ha attaccato.", + }, + sheerForce: { + name: "Forzabruta", + description: "Aumenta la potenza delle mosse, ma ne annulla gli effetti aggiuntivi.", + }, + contrary: { + name: "Inversione", + description: "Le modifiche alle statistiche hanno effetto inverso: le statistiche aumentano quando dovrebbero diminuire e viceversa.", + }, + unnerve: { + name: "Agitazione", + description: "Il nemico viene intimidito e non può mangiare bacche.", + }, + defiant: { + name: "Agonismo", + description: "L'Attacco aumenta di molto quando le statistiche diminuiscono a causa di un nemico.", + }, + defeatist: { + name: "Sconforto", + description: "Quando i PS scendono a metà o meno, il Pokémon si scoraggia e l'Attacco e l'Attacco Speciale vengono dimezzati.", + }, + cursedBody: { + name: "Corpofunesto", + description: "Può bloccare la mossa subita dal Pokémon.", + }, + healer: { + name: "Curacuore", + description: "A volte cura i problemi di stato degli alleati.", + }, + friendGuard: { + name: "Amicoscudo", + description: "I danni inflitti agli alleati del Pokémon vengono ridotti.", + }, + weakArmor: { + name: "Sottilguscio", + description: "Se il Pokémon subisce danni da mosse fisiche, la Difesa diminuisce e la Velocità aumenta di molto.", + }, + heavyMetal: { + name: "Metalpesante", + description: "Raddoppia il peso del Pokémon.", + }, + lightMetal: { + name: "Metalleggero", + description: "Dimezza il peso del Pokémon.", + }, + multiscale: { + name: "Multisquame", + description: "Se i PS sono al massimo, riduce il danno subito.", + }, + toxicBoost: { + name: "Velenimpeto", + description: "Se il Pokémon è avvelenato, la potenza delle sue mosse fisiche aumenta.", + }, + flareBoost: { + name: "Bruciaimpeto", + description: "Se il Pokémon è scottato, la potenza delle sue mosse speciali aumenta.", + }, + harvest: { + name: "Coglibacche", + description: "Può ricreare una bacca utilizzata.", + }, + telepathy: { + name: "Telepatia", + description: "Il Pokémon prevede ed evita gli attacchi degli alleati.", + }, + moody: { + name: "Altalena", + description: "A ogni turno, aumenta di molto una statistica e ne riduce un'altra.", + }, + overcoat: { + name: "Copricapo", + description: "Rende immuni ai danni da grandine e tempesta di sabbia, alle mosse Spora, Cottonspora, Sonnifero, Paralizzante e alle mosse “polvere”.", + }, + poisonTouch: { + name: "Velentocco", + description: "Il Pokémon può avvelenare il nemico al solo contatto.", + }, + regenerator: { + name: "Rigenergia", + description: "Il Pokémon recupera un po' di PS quando lascia il campo.", + }, + bigPecks: { + name: "Pettinfuori", + description: "Evita che la Difesa diminuisca.", + }, + sandRush: { + name: "Remasabbia", + description: "Se c'è una tempesta di sabbia, la Velocità aumenta.", + }, + wonderSkin: { + name: "Splendicute", + description: "Il Pokémon resiste più facilmente alle mosse di stato.", + }, + analytic: { + name: "Ponderazione", + description: "Se il Pokémon agisce per ultimo, la potenza della mossa aumenta.", + }, + illusion: { + name: "Illusione", + description: "Il Pokémon entra in campo con le sembianze dell'ultimo Pokémon della squadra.", + }, + imposter: { + name: "Sosia", + description: "Il Pokémon si trasforma nel nemico che ha davanti.", + }, + infiltrator: { + name: "Intrapasso", + description: "Il Pokémon attacca evitando le barriere e il sostituto del nemico.", + }, + mummy: { + name: "Mummia", + description: "Al contatto con il Pokémon, l'abilità del nemico diventa Mummia.", + }, + moxie: { + name: "Arroganza", + description: "Quando manda un nemico KO, il Pokémon si fa sicuro di sé e aumenta il proprio Attacco.", + }, + justified: { + name: "Giustizia", + description: "Quando il Pokémon viene colpito da una mossa di tipo Buio, il suo forte senso di giustizia fa sì che l'Attacco aumenti.", + }, + rattled: { + name: "Paura", + description: "Le mosse di tipo Buio, Spettro e Coleottero spaventano il Pokémon aumentandone la Velocità.", + }, + magicBounce: { + name: "Magispecchio", + description: "Il Pokémon respinge al mittente le mosse di stato senza subirne gli effetti.", + }, + sapSipper: { + name: "Mangiaerba", + description: "Se il Pokémon viene colpito da una mossa di tipo Erba, la neutralizza e aumenta il proprio Attacco.", + }, + prankster: { + name: "Burla", + description: "Le mosse di stato del Pokémon acquistano priorità alta.", + }, + sandForce: { + name: "Silicoforza", + description: "Potenzia le mosse di tipo Roccia, Terra e Acciaio durante le tempeste di sabbia.", + }, + ironBarbs: { + name: "Spineferrate", + description: "Se il Pokémon viene colpito da un attacco diretto, infligge danni a sua volta con le sue spine di ferro.", + }, + zenMode: { + name: "Stato Zen", + description: "Cambia la forma del Pokémon se i PS scendono a metà o meno.", + }, + victoryStar: { + name: "Vittorstella", + description: "Aumenta la precisione di tutta la squadra.", + }, + turboblaze: { + name: "Piroturbina", + description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.", + }, + teravolt: { + name: "Teravolt", + description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.", + }, + aromaVeil: { + name: "Aromavelo", + description: "Protegge tutta la squadra da effetti che ne limitano la libertà di scelta delle mosse.", + }, + flowerVeil: { + name: "Fiorvelo", + description: "Rende gli alleati di tipo Erba immuni alla diminuzione delle statistiche e ai problemi di stato.", + }, + cheekPouch: { + name: "Guancegonfie", + description: "Quando il Pokémon mangia una bacca, recupera anche dei PS.", + }, + protean: { + name: "Mutatipo", + description: "Cambia il tipo del Pokémon in quello della mossa che usa.", + }, + furCoat: { + name: "Foltopelo", + description: "Dimezza il danno subito dalle mosse fisiche.", + }, + magician: { + name: "Prestigiatore", + description: "Quando chi la usa colpisce un Pokémon con una mossa, gli ruba lo strumento.", + }, + bulletproof: { + name: "Antiproiettile", + description: "Protegge da alcune mosse a base di proiettili e bombe.", + }, + competitive: { + name: "Tenacia", + description: "L'Attacco Speciale aumenta di molto quando le statistiche diminuiscono a causa di un nemico.", + }, + strongJaw: { + name: "Ferromascella", + description: "La robusta mascella del Pokémon permette morsi molto potenti.", + }, + refrigerate: { + name: "Pellegelo", + description: "Le mosse di tipo Normale diventano di tipo Ghiaccio e la loro potenza aumenta un po'.", + }, + sweetVeil: { + name: "Dolcevelo", + description: "Rende il Pokémon e i suoi alleati immuni al sonno.", + }, + stanceChange: { + name: "Accendilotta", + description: "Assume la Forma Spada se usa una mossa d'attacco e la Forma Scudo se usa Scudo Reale.", + }, + galeWings: { + name: "Aliraffica", + description: "Se il Pokémon ha tutti i PS, le sue mosse di tipo Volante acquistano priorità alta.", + }, + megaLauncher: { + name: "Megalancio", + description: 'Potenzia le mosse "pulsar", Forzasfera e Ondasana.', + }, + grassPelt: { + name: "Peloderba", + description: "In presenza di un Campo Erboso, la Difesa aumenta.", + }, + symbiosis: { + name: "Simbiosi", + description: "Se un alleato usa uno strumento, il Pokémon gli passa il proprio.", + }, + toughClaws: { + name: "Unghiedure", + description: "Potenzia le mosse che causano un contatto fisico.", + }, + pixilate: { + name: "Pellefolletto", + description: "Le mosse di tipo Normale diventano di tipo Folletto e la loro potenza aumenta un po'.", + }, + gooey: { + name: "Viscosità", + description: "Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l'ha colpito diminuisce.", + }, + aerilate: { + name: "Pellecielo", + description: "Le mosse di tipo Normale diventano di tipo Volante e la loro potenza aumenta un po'.", + }, + parentalBond: { + name: "Amorefiliale", + description: "Il Pokémon e il suo piccolo attaccano insieme.", + }, + darkAura: { + name: "Auratetra", + description: "Potenzia le mosse di tipo Buio di tutti i Pokémon.", + }, + fairyAura: { + name: "Aurafolletto", + description: "Potenzia le mosse di tipo Folletto di tutti i Pokémon.", + }, + auraBreak: { + name: "Frangiaura", + description: "Inverte gli effetti di tutte le aure riducendone la potenza.", + }, + primordialSea: { + name: "Mare Primordiale", + description: "Crea un clima che rende inefficaci gli attacchi di tipo Fuoco.", + }, + desolateLand: { + name: "Terra Estrema", + description: "Crea un clima che rende inefficaci gli attacchi di tipo Acqua.", + }, + deltaStream: { + name: "Flusso Delta", + description: "Crea un clima che annulla i punti deboli del tipo Volante.", + }, + stamina: { + name: "Sopportazione", + description: "Se il Pokémon subisce un attacco, la sua Difesa aumenta.", + }, + wimpOut: { + name: "Fuggifuggi", + description: "Se i PS scendono a metà o meno, il Pokémon si fa prendere dalla paura e abbandona la lotta in tutta fretta.", + }, + emergencyExit: { + name: "Passoindietro", + description: "Se i PS scendono a metà o meno, il Pokémon abbandona la lotta per sfuggire al pericolo.", + }, + waterCompaction: { + name: "Idrorinforzo", + description: "Se il Pokémon subisce una mossa di tipo Acqua, la sua Difesa aumenta di molto.", + }, + merciless: { + name: "Spietatezza", + description: "Gli attacchi sferrati su un bersaglio avvelenato producono sempre brutti colpi.", + }, + shieldsDown: { + name: "Scudosoglia", + description: "Se i PS scendono a metà o meno, il guscio si rompe e il Pokémon si prepara all'offensiva.", + }, + stakeout: { + name: "Sorveglianza", + description: "Raddoppia i danni inflitti a un bersaglio che è appena entrato in campo per sostituire un altro Pokémon.", + }, + waterBubble: { + name: "Bolladacqua", + description: "Riduce i danni subiti dalle mosse di tipo Fuoco e rende immuni alle scottature.", + }, + steelworker: { + name: "Tempracciaio", + description: "Aumenta la potenza delle mosse di tipo Acciaio.", + }, + berserk: { + name: "Furore", + description: "Se i PS scendono a metà o meno a causa di un attacco, l'Attacco Speciale aumenta.", + }, + slushRush: { + name: "Spalaneve", + description: "Se grandina, la Velocità aumenta.", + }, + longReach: { + name: "Distacco", + description: "Il Pokémon è in grado di usare tutte le sue mosse senza entrare in contatto diretto con il bersaglio.", + }, + liquidVoice: { + name: "Idrovoce", + description: "Le mosse del Pokémon basate sul suono diventano di tipo Acqua.", + }, + triage: { + name: "Primacura", + description: "Le mosse che ripristinano direttamente i PS del Pokémon acquistano priorità alta.", + }, + galvanize: { + name: "Pellelettro", + description: "Le mosse di tipo Normale diventano di tipo Elettro e la loro potenza aumenta un po'.", + }, + surgeSurfer: { + name: "Codasurf", + description: "In presenza di un Campo Elettrico, la Velocità raddoppia.", + }, + schooling: { + name: "Banco", + description: "Quando ha molti PS, il Pokémon forma un banco con i propri simili e si rafforza. Quando ne ha pochi, il banco si disperde.", + }, + disguise: { + name: "Fantasmanto", + description: "Il panno che ricopre il Pokémon lo protegge da un singolo attacco.", + }, + battleBond: { + name: "Morfosintonia", + description: "Se il Pokémon manda KO un nemico, il legame con l'Allenatore si rafforza, attivando la trasformazione in Greninja Forma Ash. Acqualame si potenzia.", + }, + powerConstruct: { + name: "Sciamefusione", + description: "Se i PS del Pokémon scendono a metà o meno, le cellule si raggruppano e gli permettono di assumere la Forma Perfetta.", + }, + corrosion: { + name: "Corrosione", + description: "Il Pokémon è in grado di avvelenare il bersaglio anche se questo è di tipo Acciaio o Veleno.", + }, + comatose: { + name: "Sonno Assoluto", + description: "Il Pokémon si trova in un costante stato di dormiveglia che gli impedisce di svegliarsi. Può attaccare anche da addormentato.", + }, + queenlyMajesty: { + name: "Regalità", + description: "L'aura di regalità del Pokémon impedisce al nemico di attaccarlo con mosse che hanno priorità alta.", + }, + innardsOut: { + name: "Espellinterno", + description: "Se il Pokémon viene mandato KO da un attacco, infligge a chi lo ha sferrato tanti danni quanti erano i suoi PS prima di ricevere il colpo.", + }, + dancer: { + name: "Sincrodanza", + description: "Permette al Pokémon di copiare immediatamente qualsiasi mossa basata sulla danza usata da un altro Pokémon in campo.", + }, + battery: { + name: "Batteria", + description: "Aumenta la potenza delle mosse speciali degli alleati.", + }, + fluffy: { + name: "Morbidone", + description: "Dimezza il danno causato dagli attacchi diretti di un nemico, ma raddoppia quello subito dalle mosse di tipo Fuoco.", + }, + dazzling: { + name: "Corposgargiante", + description: "Il Pokémon sbalordisce il nemico e non gli permette di attaccarlo con mosse che hanno priorità alta.", + }, + soulHeart: { + name: "Cuoreanima", + description: "Aumenta l'Attacco Speciale ogni volta che un Pokémon va KO.", + }, + tanglingHair: { + name: "Boccolidoro", + description: "Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l'ha colpito diminuisce.", + }, + receiver: { + name: "Ricezione", + description: "Il Pokémon acquisisce l'abilità di un alleato andato KO.", + }, + powerOfAlchemy: { + name: "Forza Chimica", + description: "Il Pokémon trasforma la propria abilità in quella di un alleato andato KO.", + }, + beastBoost: { + name: "Ultraboost", + description: "Quando il Pokémon manda KO un altro Pokémon, aumenta la propria statistica di punta.", + }, + rksSystem: { + name: "Sistema Primevo", + description: "Il tipo del Pokémon cambia in base alla ROM installata.", + }, + electricSurge: { + name: "Elettrogenesi", + description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Elettrico.", + }, + psychicSurge: { + name: "Psicogenesi", + description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Psichico.", + }, + mistySurge: { + name: "Nebbiogenesi", + description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Nebbioso.", + }, + grassySurge: { + name: "Erbogenesi", + description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Erboso.", + }, + fullMetalBody: { + name: "Metalprotezione", + description: "Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.", + }, + shadowShield: { + name: "Spettroguardia", + description: "Se i PS sono al massimo, riduce il danno subito.", + }, + prismArmor: { + name: "Scudoprisma", + description: "Riduce i danni subiti dalle mosse superefficaci.", + }, + neuroforce: { + name: "Cerebroforza", + description: "Potenzia le mosse superefficaci.", + }, + intrepidSword: { + name: "Spada Indomita", + description: "Quando il Pokémon entra in campo, il suo Attacco aumenta.", + }, + dauntlessShield: { + name: "Scudo Saldo", + description: "Quando il Pokémon entra in campo, la sua Difesa aumenta.", + }, + libero: { + name: "Libero", + description: "Cambia il tipo del Pokémon in quello della mossa che usa.", + }, + ballFetch: { + name: "Raccattapalle", + description: "Se il Pokémon non ha uno strumento con sé, raccoglie la Poké Ball del primo tentativo di cattura fallito.", + }, + cottonDown: { + name: "Lanugine", + description: "Se il Pokémon subisce un attacco, sparge della lanugine che diminuisce la Velocità di tutti i Pokémon in campo tranne la sua.", + }, + propellerTail: { + name: "Elicopinna", + description: "Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.", + }, + mirrorArmor: { + name: "Blindospecchio", + description: "Rimanda al mittente le diminuzioni alle statistiche subite.", + }, + gulpMissile: { + name: "Inghiottimissile", + description: "Quando usa Surf o Sub, il Pokémon cattura una preda. Se subisce dei danni, la sputa fuori per attaccare.", + }, + stalwart: { + name: "Volontà di Ferro", + description: "Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.", + }, + steamEngine: { + name: "Vapormacchina", + description: "Se il Pokémon viene colpito da una mossa di tipo Acqua o Fuoco, la sua Velocità aumenta moltissimo.", + }, + punkRock: { + name: "Punk Rock", + description: "Aumenta la potenza delle mosse basate sul suono. Inoltre, dimezza i danni subiti dal Pokémon se viene colpito da tali mosse.", + }, + sandSpit: { + name: "Sputasabbia", + description: "Quando il Pokémon viene colpito da un attacco, scatena una tempesta di sabbia.", + }, + iceScales: { + name: "Geloscaglie", + description: "Scaglie di ghiaccio proteggono il Pokémon dalle mosse speciali, dimezzandone i danni subiti.", + }, + ripen: { + name: "Maturazione", + description: "Fa maturare le bacche raddoppiandone gli effetti.", + }, + iceFace: { + name: "Gelofaccia", + description: "Grazie al ghiaccio sulla testa, il Pokémon può incassare i danni causati da mosse fisiche, ma cambia forma. Torna al suo stato originale quando grandina.", + }, + powerSpot: { + name: "Fonte Energetica", + description: "Potenzia le mosse di chi si trova nelle immediate vicinanze.", + }, + mimicry: { + name: "Mimetismo", + description: "Il tipo del Pokémon cambia a seconda dello stato del campo.", + }, + screenCleaner: { + name: "Annullabarriere", + description: "Quando il Pokémon entra in campo, annulla l'effetto di Schermoluce, Riflesso e Velaurora sia per i nemici che per gli alleati.", + }, + steelySpirit: { + name: "Spiritoferreo", + description: "Potenzia gli attacchi di tipo Acciaio degli alleati.", + }, + perishBody: { + name: "Ultimotocco", + description: "Se il Pokémon viene colpito da un attacco diretto, dopo tre turni va KO assieme a chi lo ha attaccato. Se uno dei due viene sostituito, non va KO.", + }, + wanderingSpirit: { + name: "Anima Errante", + description: "Se il Pokémon subisce un attacco diretto, scambia la sua abilità con quella di chi lo ha colpito.", + }, + gorillaTactics: { + name: "Vigorilla", + description: "Aumenta l'Attacco ma costringe il Pokémon a usare solo la prima mossa selezionata.", + }, + neutralizingGas: { + name: "Gas Reagente", + description: "Se in campo c'è un Pokémon con Gas Reagente, gli effetti delle abilità di tutti gli altri Pokémon vengono annullati o non si attivano.", + }, + pastelVeil: { + name: "Pastelvelo", + description: "Protegge il Pokémon e gli alleati dai problemi di stato causati dal veleno.", + }, + hungerSwitch: { + name: "Pancialterna", + description: "Alla fine di ogni turno cambia forma, alternando tra Motivo Panciapiena e Motivo Panciavuota.", + }, + quickDraw: { + name: "Pugni Invisibili", + description: "Quando il Pokémon utilizza un attacco diretto, gli effetti di mosse protettive vengono ignorati.", + }, + unseenFist: { + name: "Colpolesto", + description: "A volte permette al Pokémon di agire per primo.", + }, + curiousMedicine: { + name: "Stranofarmaco", + description: "Quando il Pokémon entra in campo, sparge un farmaco dalla conchiglia che annulla le modifiche alle statistiche degli alleati.", + }, + transistor: { + name: "Transistor", + description: "Potenzia le mosse di tipo Elettro.", + }, + dragonsMaw: { + name: "Dragomascelle", + description: "Potenzia le mosse di tipo Drago.", + }, + chillingNeigh: { + name: "Nitrito Bianco", + description: "Quando manda KO il nemico, emette un nitrito agghiacciante, aumentando il proprio Attacco.", + }, + grimNeigh: { + name: "Nitrito Nero", + description: "Quando manda KO il nemico, emette un nitrito spettrale, aumentando il proprio Attacco Speciale.", + }, + asOneGlastrier: { + name: "Sintonia Equina", + description: "Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Bianco di Glastrier", + }, + asOneSpectrier: { + name: "Sintonia Equina", + description: "Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Nero di Spectrier.", + }, + lingeringAroma: { + name: "Odore Tenace", + description: "L'abilità di chi entra in contatto con il Pokémon diventa Odore Tenace.", + }, + seedSower: { + name: "Spargisemi", + description: "Se il Pokémon subisce un attacco, il terreno entra nello stato di Campo Erboso.", + }, + thermalExchange: { + name: "Termoscambio", + description: "Impedisce al Pokémon di venire scottato e aumenta il suo Attacco se subisce una mossa di tipo Fuoco.", + }, + angerShell: { + name: "Iraguscio", + description: "Se un attacco subìto porta i PS a metà o meno, la rabbia del Pokémon ne riduce la Difesa e la Difesa Speciale ma ne aumenta l'Attacco, l'Attacco Speciale e la Velocità.", + }, + purifyingSalt: { + name: "Sale Purificante", + description: "Protegge il Pokémon dai problemi di stato e dimezza il danno causato dalle mosse di tipo Spettro.", + }, + wellBakedBody: { + name: "Bentostato", + description: "Se il Pokémon viene colpito da una mossa di tipo Fuoco, la neutralizza e aumenta di molto la propria Difesa.", + }, + windRider: { + name: "Vento Propizio", + description: "L'Attacco aumenta se vengono usate mosse come Ventoincoda o se il Pokémon è colpito da una mossa basata sul vento, che viene inoltre neutralizzata.", + }, + guardDog: { + name: "Cane da Guardia", + description: "Il Pokémon resiste a strumenti e mosse che causano la sostituzione. Se subisce l'effetto di Prepotenza, il suo Attacco aumenta.", + }, + rockyPayload: { + name: "Portamassi", + description: "Aumenta la potenza delle mosse di tipo Roccia.", + }, + windPower: { + name: "Energia Eolica", + description: "Se il Pokémon è esposto a una mossa basata sul vento, si carica di elettricità.", + }, + zeroToHero: { + name: "Supercambio", + description: "Se il Pokémon lascia il campo, assume la Forma Possente.", + }, + commander: { + name: "Torre di Comando", + description: "Quando il Pokémon entra in campo ed è presente un Dondozo alleato, si ficca nella bocca di quest'ultimo e da lì impartisce ordini.", + }, + electromorphosis: { + name: "Convertivolt", + description: "Se il Pokémon subisce danni, si carica di elettricità.", + }, + protosynthesis: { + name: "Paleoattivazione", + description: "Quando il Pokémon ha con sé una Capsula energetica o la luce solare è intensa, la sua statistica più alta aumenta.", + }, + quarkDrive: { + name: "Carica Quark", + description: "Quando il Pokémon ha con sé una Capsula energetica o è in presenza di un Campo Elettrico, la sua statistica più alta aumenta.", + }, + goodAsGold: { + name: "Corpo Aureo", + description: "Grazie al robusto e inossidabile corpo d'oro, il Pokémon è immune alle mosse di stato sferrate da altri.", + }, + vesselOfRuin: { + name: "Vaso Nefasto", + description: "L'Attacco Speciale degli altri Pokémon viene indebolito dal potere del vaso che richiama le disgrazie.", + }, + swordOfRuin: { + name: "Spada Nefasta", + description: "La Difesa degli altri Pokémon viene indebolita dal potere della spada che richiama le disgrazie.", + }, + tabletsOfRuin: { + name: "Amuleto Nefasto", + description: "L'Attacco degli altri Pokémon viene indebolito dal potere delle tavolette che richiamano le disgrazie.", + }, + beadsOfRuin: { + name: "Monile Nefasto", + description: "La Difesa Speciale degli altri Pokémon viene indebolita dal potere dei gioielli che richiamano le disgrazie.", + }, + orichalcumPulse: { + name: "Ritmo d'Oricalco", + description: "Quando il Pokémon entra in campo, la luce solare diventa intensa. Con la luce solare intensa l'Attacco del Pokémon aumenta grazie al battito dell'antichità.", + }, + hadronEngine: { + name: "Motore Adronico", + description: "Quando il Pokémon entra in campo, il terreno entra nello stato di Campo Elettrico. In presenza di Campo Elettrico l'Attacco Speciale aumenta grazie al motore del futuro.", + }, + opportunist: { + name: "Scrocco", + description: "Quando la statistica di un avversario viene aumentata, il Pokémon se ne approfitta e aumenta anche la propria.", + }, + cudChew: { + name: "Ruminante", + description: "Se il Pokémon mangia una bacca, alla fine del turno successivo questa risale dal suo stomaco per essere mangiata una seconda volta.", + }, + sharpness: { + name: "Affilama", + description: "Aumenta la potenza delle mosse che tagliano il bersaglio.", + }, + supremeOverlord: { + name: "Generale Supremo", + description: "Quando il Pokémon entra in campo, il suo Attacco e il suo Attacco Speciale aumentano un po' per ciascuno dei suoi compagni di squadra andati KO.", + }, + costar: { + name: "Coprotagonismo", + description: "Quando il Pokémon entra in campo, copia le modifiche alle statistiche dell'alleato.", + }, + toxicDebris: { + name: "Mantossina", + description: "Se il Pokémon subisce danni da mosse fisiche, piazza ai piedi degli avversari una trappola di punte velenose.", + }, + armorTail: { + name: "Codarmatura", + description: "La misteriosa coda che avvolge la testa del Pokémon impedisce agli avversari di usare mosse che hanno priorità alta contro di lui o i suoi alleati.", + }, + earthEater: { + name: "Mangiaterra", + description: "Se il Pokémon viene colpito da una mossa di tipo Terra, recupera PS anziché subire danni.", + }, + myceliumMight: { + name: "Micoforza", + description: "Quando usa mosse di stato, il Pokémon agisce più lentamente, ma ignora l'abilità del bersaglio se questa ha effetto su tali mosse.", + }, + mindsEye: { + name: "Ospitalità", + description: "Quando un Pokémon con questa abilità entra in campo ricopre di attenzioni l'alleato, restituendogli un po' dei suoi PS.", + }, + supersweetSyrup: { + name: "Occhio Interiore", + description: "Permette di colpire bersagli di tipo Spettro con mosse di tipo Normale e Lotta, di ignorare modifiche alla loro elusione e di non veder ridotta la propria precisione.", + }, + hospitality: { + name: "Albergamemorie", + description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Turchese e aumentando la propria Velocità.", + }, + toxicChain: { + name: "Albergamemorie", + description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Pozzo e aumentando la propria Difesa Speciale.", + }, + embodyAspectTeal: { + name: "Albergamemorie", + description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Focolare e aumentando il proprio Attacco.", + }, + embodyAspectWellspring: { + name: "Albergamemorie", + description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Fondamenta e aumentando la propria Difesa.", + }, + embodyAspectHearthflame: { + name: "Catena Tossica", + description: "Quando il Pokémon colpisce il bersaglio con una mossa, può iperavvelenarlo grazie al potere della catena intrisa di tossine.", + }, + embodyAspectCornerstone: { + name: "Sciroppo Sublime", + description: "La prima volta che il Pokémon entra in campo, spande un odore dolciastro che diminuisce l'elusione degli avversari.", + }, + teraShift: { + name: "Teramorfosi", + description: "Quando il Pokémon entra in campo, assorbe l'energia circostante e assume la Forma Teracristal.", + }, + teraShell: { + name: "Teraguscio", + description: "Grazie al suo guscio che racchiude il potere di tutti i tipi, se il Pokémon ha tutti i PS, le mosse che subisce non saranno molto efficaci.", + }, + teraformZero: { + name: "Zeroformazione", + description: "Quando assume la Forma Astrale, Terapagos azzera tutti gli effetti delle condizioni atmosferiche e lo stato del terreno di lotta grazie al suo potere occulto.", + }, + poisonPuppeteer: { + name: " Malia Tossica", + description: "I Pokémon avvelenati dalle mosse di Pecharunt entreranno anche in stato di confusione.", + }, +} as const; diff --git a/src/locales/it/battle.ts b/src/locales/it/battle.ts new file mode 100644 index 000000000..4b0afae12 --- /dev/null +++ b/src/locales/it/battle.ts @@ -0,0 +1,53 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const battle: SimpleTranslationEntries = { + "bossAppeared": "{{bossName}} è apparso.", + "trainerAppeared": "{{trainerName}}\nvuole combattere!", + "singleWildAppeared": "Appare {{pokemonName}} selvatico!", + "multiWildAppeared": "Appaiono {{pokemonName1}}\ne {{pokemonName2}} salvatici!", + "playerComeBack": "Rientra, {{pokemonName}}!", + "trainerComeBack": "{{trainerName}} ha ritirato {{pokemonName}}!", + "playerGo": "Vai! {{pokemonName}}!", + "trainerGo": "{{trainerName}} manda in campo {{pokemonName}}!", + "switchQuestion": "Vuoi cambiare\n{{pokemonName}}?", + "trainerDefeated": `Hai sconfitto\n{{trainerName}}!`, + "pokemonCaught": "{{pokemonName}} è stato catturato!", + "pokemon": "Pokémon", + "sendOutPokemon": "Vai! {{pokemonName}}!", + "hitResultCriticalHit": "Brutto colpo!", + "hitResultSuperEffective": "È superefficace!", + "hitResultNotVeryEffective": "Non è molto efficace…", + "hitResultNoEffect": "Non ha effetto su {{pokemonName}}!", + "hitResultOneHitKO": "È KO con un colpo solo!", + "attackFailed": "Ma ha fallito!", + "attackHitsCount": `Colpito {{count}} volta/e!`, + "expGain": "{{pokemonName}} ha guadagnato\n{{exp}} Punti Esperienza!", + "levelUp": "{{pokemonName}} è salito al \nLivello {{level}}!", + "learnMove": "{{pokemonName}} impara \n{{moveName}}!", + "learnMovePrompt": "{{pokemonName}} vorrebbe imparare\n{{moveName}}.", + "learnMoveLimitReached": "Tuttavia, {{pokemonName}} \nconosce già quattro mosse.", + "learnMoveReplaceQuestion": "Vuoi che ne dimentichi una e al suo \nposto la sostituisca con {{moveName}}?", + "learnMoveStopTeaching": "Vuoi smettere di fargli imparare \n{{moveName}}?", + "learnMoveNotLearned": "{{pokemonName}} non ha imparato\n{{moveName}}.", + "learnMoveForgetQuestion": "Quale mossa deve dimenticare?", + "learnMoveForgetSuccess": "{{pokemonName}} ha dimenticato la mossa\n{{moveName}}.", + "levelCapUp": "Il livello massimo\nè aumentato a {{levelCap}}!", + "moveNotImplemented": "{{moveName}} non è ancora implementata e non può essere selezionata.", + "moveNoPP": "There's no PP left for\nthis move!", + "moveDisabled": "{{moveName}} è disabilitata!", + "noPokeballForce": "Una forza misteriosa\nimpedisce l'uso dell Poké Ball.", + "noPokeballTrainer": "Non puoi catturare\nPokémon di altri allenatori!", + "noPokeballMulti": "Puoi lanciare una Poké Ball\nquando rimane un solo Pokémon!", + "noPokeballStrong": "Il Pokémon avversario è troppo forte per essere catturato!\nDevi prima indebolirlo!", + "noEscapeForce": "Una forza misteriosa\nimpedisce la fuga.", + "noEscapeTrainer": "Non puoi fuggire\nda una battaglia contro un'allenatore!", + "noEscapePokemon": "{{moveName}} di {{pokemonName}}\npreviene la {{escapeVerb}}!", + "runAwaySuccess": "Sei riuscito a fuggire!", + "runAwayCannotEscape": 'Non puoi fuggire!', + "escapeVerbSwitch": "cambiando", + "escapeVerbFlee": "fuggendo", + "notDisabled": "{{moveName}} non è più\ndisabilitata!", + "skipItemQuestion": "Sei sicuro di non voler prendere nessun oggetto?", + "eggHatching": "Oh?", + "ivScannerUseQuestion": "Vuoi usare lo scanner di IV su {{pokemonName}}?" +} as const; \ No newline at end of file diff --git a/src/locales/it/command-ui-handler.ts b/src/locales/it/command-ui-handler.ts new file mode 100644 index 000000000..54af8f766 --- /dev/null +++ b/src/locales/it/command-ui-handler.ts @@ -0,0 +1,9 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const commandUiHandler: SimpleTranslationEntries = { + "fight": "Lotta", + "ball": "Borsa", + "pokemon": "Pokémon", + "run": "Fuga", + "actionMessage": "Cosa deve fare {{pokemonName}}?", +} as const; \ No newline at end of file diff --git a/src/locales/it/fight-ui-handler.ts b/src/locales/it/fight-ui-handler.ts new file mode 100644 index 000000000..0743e382c --- /dev/null +++ b/src/locales/it/fight-ui-handler.ts @@ -0,0 +1,6 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const fightUiHandler: SimpleTranslationEntries = { + "pp": "PP", + "power": "POTENZA", +} as const; \ No newline at end of file diff --git a/src/locales/it/menu-ui-handler.ts b/src/locales/it/menu-ui-handler.ts index 5fde37ae3..9def62d8d 100644 --- a/src/locales/it/menu-ui-handler.ts +++ b/src/locales/it/menu-ui-handler.ts @@ -1,23 +1,23 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": 'Game Settings', - "ACHIEVEMENTS": "Achievements", - "STATS": "Stats", - "VOUCHERS": "Vouchers", - "EGG_LIST": "Egg List", - "EGG_GACHA": "Egg Gacha", - "MANAGE_DATA": "Manage Data", + "GAME_SETTINGS": 'Impostazioni', + "ACHIEVEMENTS": "Risultati", + "STATS": "Statistiche", + "VOUCHERS": "Biglietti", + "EGG_LIST": "Lista Uova", + "EGG_GACHA": "Gacha Uova", + "MANAGE_DATA": "Gestisci Dati", "COMMUNITY": "Community", - "RETURN_TO_TITLE": "Return To Title", - "LOG_OUT": "Log Out", + "RETURN_TO_TITLE": "Ritorna al Titolo", + "LOG_OUT": "Disconnettiti", "slot": "Slot {{slotNumber}}", - "importSession": "Import Session", - "importSlotSelect": "Select a slot to import to.", - "exportSession": "Export Session", - "exportSlotSelect": "Select a slot to export from.", - "importData": "Import Data", - "exportData": "Export Data", - "cancel": "Cancel", - "losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?" + "importSession": "Importa Sessione", + "importSlotSelect": "Seleziona uno slot in cui importare.", + "exportSession": "Esporta Sessione", + "exportSlotSelect": "Seleziona uno slot da cui esportare.", + "importData": "Importa Dati", + "exportData": "Esporta Dati", + "cancel": "Annulla", + "losingProgressionWarning": "Perderai tutti i progressi dall'inizio della battaglia. Procedere?" } as const; \ No newline at end of file diff --git a/src/locales/it/menu.ts b/src/locales/it/menu.ts index 872315d77..1344b21cc 100644 --- a/src/locales/it/menu.ts +++ b/src/locales/it/menu.ts @@ -1,10 +1,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon data. This includes menu navigation, settings, + * account interactions, descriptive text, etc. + */ export const menu: SimpleTranslationEntries = { "cancel": "Annulla", "continue": "Continua", "newGame": "Nuova Partita", "loadGame": "Carica Partita", "dailyRun": "Corsa Giornaliera (Beta)", - "selectGameMode": "Seleziona una modalità di gioco." + "selectGameMode": "Seleziona una modalità di gioco.", + "logInOrCreateAccount": "Accedi o crea un nuovo account per iniziare. Non è richiesta un'email!", + "username": "Nome Utente", + "password": "Password", + "login": "Accedi", + "register": "Registrati", + "emptyUsername": "Nome utente mancante!", + "invalidLoginUsername": "Nome utente non valido!", + "invalidRegisterUsername": "Il nome utente può contenere solo lettere, numeri o trattini bassi", + "invalidLoginPassword": "Password non valida!", + "invalidRegisterPassword": "La password deve contenere almeno 6 caratteri", + "usernameAlreadyUsed": "Il nome utente inserito è stato già utilizzato!", + "accountNonExistent": "Account inesistente!", + "unmatchingPassword": "La password inserita non è corretta!", + "passwordNotMatchingConfirmPassword": "La password deve essere uguale alla conferma password!", + "confirmPassword": "Conferma Password", + "registrationAgeWarning": "Registrandoti confermi di avere 13 anni o più.", + "backToLogin": "Torna all'accesso", + "failedToLoadSaveData": "Impossibile caricare i dati di salvataggio. Ricarica la pagina.\nSe il problema persiste, contatta l'amministratore.", + "sessionSuccess": "Sessione caricata correttamente.", + "failedToLoadSession": "Impossibile caricare i dati della sessione.\nPotrebbero essere danneggiati.", + "boyOrGirl": "Sei un ragazzo o una ragazza?", + "boy": "Ragazzo", + "girl": "Ragazza", + "dailyRankings": "Classifica Giornaliera", + "weeklyRankings": "Classifica Settimanale", + "noRankings": "Nessuna Classifica", + "loading": "Caricamento…", + "playersOnline": "Giocatori Online", + "empty":"Vuoto", + "yes":"Si", + "no":"No", } as const; \ No newline at end of file diff --git a/src/locales/it/move.ts b/src/locales/it/move.ts new file mode 100644 index 000000000..116a14b5d --- /dev/null +++ b/src/locales/it/move.ts @@ -0,0 +1,3812 @@ +import { MoveTranslationEntries } from "#app/plugins/i18n"; + +export const move: MoveTranslationEntries = { + pound: { + name: "Botta", + effect: "Colpisce il nemico con la coda o le zampe anteriori.", + }, + karateChop: { + name: "Colpokarate", + effect: "Colpisce il nemico con un colpo netto. Probabile brutto colpo.", + }, + doubleSlap: { + name: "Doppiasberla", + effect: "Schiaffeggia il nemico da due a cinque volte di fila.", + }, + cometPunch: { + name: "Cometapugno", + effect: "Colpisce il nemico con una scarica di pugni da due a cinque volte di fila.", + }, + megaPunch: { + name: "Megapugno", + effect: "Colpisce il nemico con un pugno poderoso.", + }, + payDay: { + name: "Giornopaga", + effect: "Colpisce il nemico con una gran quantità di monete recuperabili dopo la lotta.", + }, + firePunch: { + name: "Fuocopugno", + effect: "Colpisce il nemico con un pugno ardente che può scottarlo.", + }, + icePunch: { + name: "Gelopugno", + effect: "Colpisce il nemico con un pugno di ghiaccio che può congelarlo.", + }, + thunderPunch: { + name: "Tuonopugno", + effect: "Colpisce il nemico con un pugno elettrico che può paralizzarlo.", + }, + scratch: { + name: "Graffio", + effect: "Infligge danni al nemico con artigli acuminati, duri e affilati.", + }, + viseGrip: { + name: "Presa", + effect: "Stringe il nemico in una morsa usando enormi e possenti tenaglie.", + }, + guillotine: { + name: "Ghigliottina", + effect: "Attacca il nemico con pericolose tenaglie. Se l'attacco va a segno, il nemico va subito KO.", + }, + razorWind: { + name: "Ventagliente", + effect: "Chi la usa genera un turbine al primo turno e attacca al secondo. Probabile brutto colpo.", + }, + swordsDance: { + name: "Danzaspada", + effect: "Danza frenetica che incrementa lo spirito combattivo. Chi la usa aumenta di molto il suo Attacco.", + }, + cut: { + name: "Taglio", + effect: "Attacca il nemico con artigli o falci affilate. Fuori dalla lotta si usa per tagliare piccoli alberi.", + }, + gust: { + name: "Raffica", + effect: "Infligge danni al nemico con una folata di vento sollevata dalle ali.", + }, + wingAttack: { + name: "Attacco d'Ala", + effect: "Infligge danni al nemico spiegando delle grandi ali possenti.", + }, + whirlwind: { + name: "Turbine", + effect: "Il bersaglio è spazzato via ed è costretto a lasciare il posto ad un altro. Se è selvatico, la lotta finisce.", + }, + fly: { + name: "Volo", + effect: "Chi la usa si alza in volo per attaccare al turno seguente. Fuori dalla lotta permette di volare in città già visitate.", + }, + bind: { + name: "Legatutto", + effect: "Lega e stritola il nemico per quattro o cinque turni con tentacoli o con un corpo lungo.", + }, + slam: { + name: "Schianto", + effect: "Infligge danni al nemico con una coda, una liana o simili.", + }, + vineWhip: { + name: "Frustata", + effect: "Infligge danni al nemico con liane sottili simili a fruste.", + }, + stomp: { + name: "Pestone", + effect: "Colpisce il nemico con un grosso piede e può anche farlo tentennare.", + }, + doubleKick: { + name: "Doppiocalcio", + effect: "Colpisce il nemico due volte con un paio di rapidi calci inferti con entrambi i piedi.", + }, + megaKick: { + name: "Megacalcio", + effect: "Colpisce il nemico con un calcio sferrato con la forza di muscoli poderosi.", + }, + jumpKick: { + name: "Calciosalto", + effect: "Permette di saltare in alto per attaccare con un calcio. Se non va a buon fine, chi la usa si ferisce.", + }, + rollingKick: { + name: "Calciorullo", + effect: "Chi la usa infierisce sul nemico con un calcio rotante. Può anche farlo tentennare.", + }, + sandAttack: { + name: "Turbosabbia", + effect: "Getta sabbia in faccia al nemico e ne riduce la precisione.", + }, + headbutt: { + name: "Bottintesta", + effect: "Chi la usa si lancia diritto di testa contro il nemico. Può anche far tentennare.", + }, + hornAttack: { + name: "Incornata", + effect: "Danneggia il nemico infilzandolo con un corno affilato.", + }, + furyAttack: { + name: "Furia", + effect: "Infilza il nemico con corna affilate o un becco da due a cinque volte di fila.", + }, + hornDrill: { + name: "Perforcorno", + effect: "Colpisce il nemico con un corno perforante come un trapano. Se il colpo va a segno, il nemico va KO.", + }, + tackle: { + name: "Azione", + effect: "Attacco fisico che colpisce il nemico investendolo con tutto il corpo.", + }, + bodySlam: { + name: "Corposcontro", + effect: "Chi la usa carica il nemico con tutto il corpo. Può causarne anche la paralisi.", + }, + wrap: { + name: "Avvolgibotta", + effect: "Avvolge e stritola il nemico con un corpo lungo o con piante rampicanti per quattro o cinque turni.", + }, + takeDown: { + name: "Riduttore", + effect: "Carica spericolata con tutto il corpo contro il nemico. Danneggia un po' anche chi la usa.", + }, + thrash: { + name: "Colpo", + effect: "Assale e attacca il nemico per due o tre turni, ma confonde chi la usa.", + }, + doubleEdge: { + name: "Sdoppiatore", + effect: "Carica spietata e pericolosa che danneggia molto anche chi la usa.", + }, + tailWhip: { + name: "Colpocoda", + effect: "Chi la usa agita la coda per distrarre i nemici, riducendone la Difesa.", + }, + poisonSting: { + name: "Velenospina", + effect: "Colpisce il nemico con un aculeo tossico che può anche avvelenarlo.", + }, + twineedle: { + name: "Doppio Ago", + effect: "Colpisce il nemico due volte di seguito con un paio di aghi. Può anche avvelenarlo.", + }, + pinMissile: { + name: "Missilspillo", + effect: "Il nemico viene colpito da due a cinque volte con spilli appuntiti in rapida successione.", + }, + leer: { + name: "Fulmisguardo", + effect: "Il nemico viene guardato con sguardo intimidatorio da occhi acuti. Viene ridotta la difesa dell'avversario.", + }, + bite: { + name: "Morso", + effect: "Il nemico viene morso da denti affilatissimi che possono farlo tentennare.", + }, + growl: { + name: "Ruggito", + effect: "Il Pokémon ruggisce con cattiveria. Viene ridotto l'attacco dell'avversario.", + }, + roar: { + name: "Boato", + effect: "Il bersaglio è costretto a lasciare il campo e viene sostituito. Mette fine alle lotte contro Pokémon selvatici.", + }, + sing: { + name: "Canto", + effect: "Una ninna nanna è cantata con voce calma per far addormentare il nemico.", + }, + supersonic: { + name: "Supersuono", + effect: "Chi la usa genera dal proprio corpo strane onde acustiche che possono confondere il nemico.", + }, + sonicBoom: { + name: "Sonicboom", + effect: "Il nemico viene colpito con un suono distruttivo che infligge un danno sempre 20 PS.", + }, + disable: { + name: "Inibitore", + effect: "Per quattro turni impedisce al bersaglio di riutilizzare l'ultima mossa usata.", + }, + acid: { + name: "Acido", + effect: "Colpisce i nemici intorno spruzzando un acido corrosivo. Può anche ridurne la Difesa Speciale.", + }, + ember: { + name: "Braciere", + effect: "Il Pokémon attacca con piccole fiamme. Possono scottare il nemico.", + }, + flamethrower: { + name: "Lanciafiamme", + effect: "Il nemico viene colpito da intense fiammate che possono anche scottarlo.", + }, + mist: { + name: "Nebbia", + effect: "Chi la usa attira una nebbia che blocca la riduzione alle statistiche della sua squadra per cinque turni.", + }, + waterGun: { + name: "Pistolacqua", + effect: "Il nemico è colpito da un potente getto d'acqua.", + }, + hydroPump: { + name: "Idropompa", + effect: "Il nemico è travolto da un potente getto d'acqua spruzzato ad altissima pressione.", + }, + surf: { + name: "Surf", + effect: "Un'onda enorme sommerge il campo di lotta. Fuori dalla lotta si usa per spostarsi sull'acqua.", + }, + iceBeam: { + name: "Geloraggio", + effect: "Il nemico è colpito da un raggio di energia gelida che può anche congelarlo.", + }, + blizzard: { + name: "Bora", + effect: "Colpisce i bersagli con una tremenda tempesta di ghiaccio che può anche congelarli.", + }, + psybeam: { + name: "Psicoraggio", + effect: "Il nemico è attaccato con un raggio psichico. Può anche lasciare il nemico confuso.", + }, + bubbleBeam: { + name: "Bollaraggio", + effect: "Colpisce il nemico con una forte scarica di bolle. Può anche ridurne la Velocità.", + }, + auroraBeam: { + name: "Raggiaurora", + effect: "Il nemico viene colpito da un fascio color arcobaleno. Può ridurre l'attacco dell'avversario.", + }, + hyperBeam: { + name: "Iper Raggio", + effect: "Colpisce il nemico con un potente raggio. Chi la usa salta il turno successivo per recuperare energia.", + }, + peck: { + name: "Beccata", + effect: "Colpisce il nemico con un becco appuntito o un corno.", + }, + drillPeck: { + name: "Perforbecco", + effect: "Attacco a spirale con un becco aguzzo che fa da trapano.", + }, + submission: { + name: "Sottomissione", + effect: "Chi la usa carica il nemico in modo spericolato, ma danneggia anche se stesso.", + }, + lowKick: { + name: "Colpo Basso", + effect: "Un calcio basso e potente che fa cadere il nemico. Danneggia maggiormente i nemici più pesanti.", + }, + counter: { + name: "Contrattacco", + effect: "Una mossa di ritorsione che contrasta qualsiasi attacco fisico, infliggendo il doppio dei danni subiti.", + }, + seismicToss: { + name: "Movimento Sismico", + effect: "Colpisce il bersaglio con la forza di gravità. Infligge un danno pari al livello di chi la usa.", + }, + strength: { + name: "Forza", + effect: "Colpisce il nemico con un'enorme energia. Fuori dalla lotta si usa per spostare i massi.", + }, + absorb: { + name: "Assorbimento", + effect: "Mossa che assorbe PS. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.", + }, + megaDrain: { + name: "Megassorbimento", + effect: "Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.", + }, + leechSeed: { + name: "Parassiseme", + effect: "Vengono piantati semi sul bersaglio. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.", + }, + growth: { + name: "Crescita", + effect: "Provoca la crescita immediata del corpo e l'aumento dell'Attacco e dell'Attacco Speciale di chi la usa.", + }, + razorLeaf: { + name: "Foglielama", + effect: "Foglie taglienti sferzano i nemici intorno. Probabile brutto colpo.", + }, + solarBeam: { + name: "Solarraggio", + effect: "Chi la usa assorbe luce al primo turno per proiettare un raggio intenso al turno successivo.", + }, + poisonPowder: { + name: "Velenpolvere", + effect: "Una nube di polvere velenosa è sparsa sul nemico. Può avvelenare il bersaglio.", + }, + stunSpore: { + name: "Paralizzante", + effect: "Investe il bersaglio con una nuvola di polvere che paralizza.", + }, + sleepPowder: { + name: "Sonnifero", + effect: "Investe il bersaglio con una grande nuvola di polvere soporifera che lo fa addormentare.", + }, + petalDance: { + name: "Petalodanza", + effect: "Attacca il nemico cospargendolo di petali per due o tre turni, ma chi la usa rimane confuso.", + }, + stringShot: { + name: "Millebave", + effect: "Chi la usa produce della seta che avvolge i nemici e ne riduce la Velocità.", + }, + dragonRage: { + name: "Ira di Drago", + effect: "Colpisce il nemico con un'onda d'urto generata dall'ira. Questo attacco provoca sempre un danno di 40 PS.", + }, + fireSpin: { + name: "Turbofuoco", + effect: "Intrappola il bersaglio in un turbine di fuoco che dura per quattro o cinque turni.", + }, + thunderShock: { + name: "Tuonoshock", + effect: "Danneggia il bersaglio con una scarica elettrica che può anche paralizzarlo.", + }, + thunderbolt: { + name: "Fulmine", + effect: "Il bersaglio viene colpito da una potente scarica elettrica che può anche paralizzarlo.", + }, + thunderWave: { + name: "Tuononda", + effect: "Il nemico viene colpito da una debole scarica elettrica che, se va a segno, ne causa la paralisi.", + }, + thunder: { + name: "Tuono", + effect: "Il nemico è colpito da un lampo molto violento che può anche paralizzarlo.", + }, + rockThrow: { + name: "Sassata", + effect: "Chi la usa solleva una roccia e la lancia contro il nemico.", + }, + earthquake: { + name: "Terremoto", + effect: "Chi la usa provoca un potente sisma che colpisce gli altri Pokémon in campo.", + }, + fissure: { + name: "Abisso", + effect: "Chi la usa crea una spaccatura nel terreno e cerca di gettarvici dentro il nemico. Se va a segno, il nemico va KO.", + }, + dig: { + name: "Fossa", + effect: "Chi la usa scava al primo turno e attacca al successivo. Fuori dalla lotta fa uscire da alcuni luoghi.", + }, + toxic: { + name: "Tossina", + effect: "Una mossa che lascia l'obiettivo gravemente avvelenato. Il danno da veleno peggiora ad ogni turno.", + }, + confusion: { + name: "Confusione", + effect: "Colpisce il nemico con una leggera forza telecinetica e può anche confonderlo.", + }, + psychic: { + name: "Psichico", + effect: "Il nemico viene colpito da una potente forza telecinetica che può anche ridurne la Difesa Speciale.", + }, + hypnosis: { + name: "Ipnosi", + effect: "Chi la usa si avvale della suggestione ipnotica per far addormentare il nemico.", + }, + meditate: { + name: "Meditazione", + effect: "Il Pokémon medita risvegliando il potere nel profondo del suo corpo ed aumentando il suo Attacco.", + }, + agility: { + name: "Agilità", + effect: "Chi la usa rilassa e alleggerisce il proprio corpo per far salire di molto la Velocità.", + }, + quickAttack: { + name: "Attacco Rapido", + effect: "Chi la usa colpisce sempre per primo e ad una tale velocità da rendersi quasi invisibile.", + }, + rage: { + name: "Ira", + effect: "Questa mossa ha il potere di aumentare la statistica Attacco ogni volta che chi la usa viene colpito durante una lotta.", + }, + teleport: { + name: "Teletrasporto", + effect: "Fa fuggire dai Pokémon selvatici. Fuori dalla lotta porta all'ultimo Centro Pokémon visitato.", + }, + nightShade: { + name: "Ombra Notturna", + effect: "Fa apparire un orribile miraggio al nemico e infligge un danno pari al livello di chi la usa.", + }, + mimic: { + name: "Mimica", + effect: "Copia l'ultima mossa usata dal bersaglio. La mossa copiata si può utilizzare fino alla sostituzione del Pokémon.", + }, + screech: { + name: "Stridio", + effect: "Stridio assordante che riduce di molto la Difesa del nemico.", + }, + doubleTeam: { + name: "Doppioteam", + effect: "Chi la usa si muove in fretta e crea copie illusorie di se stesso che aumentano la capacità di elusione.", + }, + recover: { + name: "Ripresa", + effect: "Una mossa di auto-guarigione. Il Pokémon ripristina i suoi PS fino a metà dei suoi PS massimi.", + }, + harden: { + name: "Rafforzatore", + effect: "Tutti i muscoli del corpo si tonificano per aumentare la Difesa.", + }, + minimize: { + name: "Minimizzato", + effect: "Il corpo di chi la usa si comprime e diventa più piccolo. La sua capacità di elusione aumenta di molto.", + }, + smokescreen: { + name: "Muro di Fumo", + effect: "Il Pokémon rilascia un'oscura cortina di fumo che riduce la precisione del nemico.", + }, + confuseRay: { + name: "Stordiraggio", + effect: "Il nemico è colpito da un raggio sinistro che lo confonde.", + }, + withdraw: { + name: "Ritirata", + effect: "Il corpo si ritira nel suo duro guscio per aumentare la Difesa.", + }, + defenseCurl: { + name: "Ricciolscudo", + effect: "Chi la usa si raggomitola per nascondere i punti deboli e aumentare la propria Difesa.", + }, + barrier: { + name: "Barriera", + effect: "Innalza una barriera resistente che aumenta molto la Difesa.", + }, + lightScreen: { + name: "Schermoluce", + effect: "Innalza una barriera di luce fantastica per ridurre i danni degli attacchi speciali alla squadra per cinque turni.", + }, + haze: { + name: "Nube", + effect: "Chi la usa crea una nube nera che annulla ogni modifica delle statistiche di tutti i Pokémon in campo.", + }, + reflect: { + name: "Riflesso", + effect: "Innalza una barriera di luce fantastica per ridurre i danni degli attacchi fisici alla squadra per cinque turni.", + }, + focusEnergy: { + name: "Focalenergia", + effect: "Chi la usa fa un profondo respiro e si concentra per rendere più probabili i brutti colpi.", + }, + bide: { + name: "Pazienza", + effect: "Chi la usa subisce attacchi per due turni e poi restituisce il danno moltiplicato per due.", + }, + metronome: { + name: "Metronomo", + effect: "Il Pokémon fa di no con il dito e stimola il cervello a usare a caso una delle tante mosse esistenti.", + }, + mirrorMove: { + name: "Speculmossa", + effect: "Chi la usa colpisce il bersaglio copiandone l'ultima mossa usata.", + }, + selfDestruct: { + name: "Autodistruzione", + effect: "Chi la usa esplode e infligge danni agli altri Pokémon in campo, ma poi va KO.", + }, + eggBomb: { + name: "Uovobomba", + effect: "Colpisce il nemico con un grande uovo scaraventato con enorme forza.", + }, + lick: { + name: "Leccata", + effect: "Una lingua lunga infligge danni al nemico e può anche paralizzarlo.", + }, + smog: { + name: "Smog", + effect: "Colpisce il nemico con una scarica di gas maleodoranti. Può anche avvelenarlo.", + }, + sludge: { + name: "Fango", + effect: "Lancio di fango malsano che arreca danno al nemico. Può anche avvelenarlo.", + }, + boneClub: { + name: "Ossoclava", + effect: "Il Pokémon colpisce il nemico con un bastone d'osso. Può anche fare tentennare l'obiettivo.", + }, + fireBlast: { + name: "Fuocobomba", + effect: "Investe il nemico con un'intensa fiammata che fa terra bruciata. Può anche scottarlo.", + }, + waterfall: { + name: "Cascata", + effect: "Carica il nemico a grande velocità e può farlo tentennare. Fuori dalla lotta fa risalire le cascate.", + }, + clamp: { + name: "Tenaglia", + effect: "Chi la usa intrappola e stritola il nemico con la sua corazza spessa e forte per quattro o cinque turni.", + }, + swift: { + name: "Comete", + effect: "Colpisce i nemici con raggi a forma di stella. Questo attacco è infallibile.", + }, + skullBash: { + name: "Capocciata", + effect: "Chi la usa ritira la testa per aumentare la Difesa e poi attacca al turno successivo.", + }, + spikeCannon: { + name: "Sparalance", + effect: "Il nemico viene colpito da due a cinque volte in rapida successione da spilli appuntiti.", + }, + constrict: { + name: "Limitazione", + effect: "Colpisce il nemico con lunghi tentacoli o piante rampicanti. Può anche ridurne la Velocità.", + }, + amnesia: { + name: "Amnesia", + effect: "Vuoto di memoria che aumenta esponenzialmente la difesa speciale.", + }, + kinesis: { + name: "Cinèsi", + effect: "Chi la usa distrae il bersaglio piegando un cucchiaio e ne riduce la precisione.", + }, + softBoiled: { + name: "Covauova", + effect: "Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.", + }, + highJumpKick: { + name: "Calcinvolo", + effect: "Chi la usa colpisce il nemico con una ginocchiata in volo: se fallisce, subisce danni.", + }, + glare: { + name: "Sguardo Feroce", + effect: "Chi la usa spaventa il nemico con uno sguardo terrificante e ne causa la paralisi.", + }, + dreamEater: { + name: "Mangiasogni", + effect: "Attacco che funziona solo su un nemico che dorme. Chi lo usa riceve metà dei PS persi dal nemico.", + }, + poisonGas: { + name: "Velenogas", + effect: "Spruzza in faccia al nemico una nuvola di gas tossico che avvelena.", + }, + barrage: { + name: "Attacco Pioggia", + effect: "Piovono enormi sfere sulla testa del nemico da due a cinque volte di fila.", + }, + leechLife: { + name: "Sanguisuga", + effect: "Mossa succhiasangue. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.", + }, + lovelyKiss: { + name: "Demonbacio", + effect: "Chi la usa intimidisce il bersaglio con una faccia paurosa e gli schiocca un bacio che lo fa addormentare.", + }, + skyAttack: { + name: "Aeroattacco", + effect: "Un attacco in due turni e probabile brutto colpo. Può anche far tentennare il nemico.", + }, + transform: { + name: "Trasformazione", + effect: "Chi la usa si trasforma in una copia esatta del bersaglio per sfruttarne le caratteristiche.", + }, + bubble: { + name: "Bolla", + effect: "Uno spruzzo di bolle viene lanciato sul nemico. Può ridurne la velocità.", + }, + dizzyPunch: { + name: "Stordipugno", + effect: "Colpisce il bersaglio con una sequenza di pugni che può anche confonderlo.", + }, + spore: { + name: "Spora", + effect: "Nube di spore che fa sempre addormentare il bersaglio.", + }, + flash: { + name: "Flash", + effect: "Il Pokémon usa un lampo di luce contro il nemico riducendone la precisione. Può essere usata per illuminare luoghi oscuri.", + }, + psywave: { + name: "Psiconda", + effect: "Il nemico è attaccato con una strana onda di energia. L'intensità dell'attacco è variabile.", + }, + splash: { + name: "Splash", + effect: "Chi la usa sguazza nell'acqua, senza ottenere alcun effetto.", + }, + acidArmor: { + name: "Scudo Acido", + effect: "Il Pokémon modifica la sua struttura cellulare liquefandosi, per aumentare esponenzialmente la sua difesa.", + }, + crabhammer: { + name: "Martellata", + effect: "Colpisce il nemico con una grande tenaglia. Probabile brutto colpo.", + }, + explosion: { + name: "Esplosione", + effect: "Chi la usa esplode per infliggere danni agli altri Pokémon attorno, ma va KO.", + }, + furySwipes: { + name: "Sfuriate", + effect: "Colpisce il nemico con artigli o falci affilate da due a cinque volte in rapida successione.", + }, + bonemerang: { + name: "Ossomerang", + effect: "Chi la usa lancia l'osso che tiene. L'osso colpisce due volte e ritorna come un vero e proprio boomerang.", + }, + rest: { + name: "Riposo", + effect: "Il Pokémon si addormenta per due turni per curare tutti i PS e qualsiasi problema di stato.", + }, + rockSlide: { + name: "Frana", + effect: "I nemici vengono colpiti da grandi massi che possono anche farli tentennare.", + }, + hyperFang: { + name: "Iperzanna", + effect: "Il Pokémon morde il nemico con zanne taglienti. Può anche farlo tentennare.", + }, + sharpen: { + name: "Affilatore", + effect: "Chi la usa riduce il numero di poligoni sul proprio corpo per accentuarne gli spigoli e aumentare l'Attacco.", + }, + conversion: { + name: "Conversione", + effect: "Il tipo di chi la usa muta in quello di una sua mossa a caso.", + }, + triAttack: { + name: "Tripletta", + effect: "Colpisce il nemico con tre sfere simultanee che possono anche paralizzarlo, scottarlo o congelarlo.", + }, + superFang: { + name: "Superzanna", + effect: "Chi la usa salta sul nemico azzannandolo con i suoi incisivi affilati e facendogli perdere metà dei PS.", + }, + slash: { + name: "Lacerazione", + effect: "Attacca il nemico con artigli, falci o altro. Probabile brutto colpo.", + }, + substitute: { + name: "Sostituto", + effect: "Chi la usa crea una copia di se stesso usando alcuni PS. La copia serve come esca per il nemico.", + }, + struggle: { + name: "Scontro", + effect: "Mossa da usare solo in caso estremo, quando non si hanno più PP. Danneggia anche chi la usa.", + }, + sketch: { + name: "Schizzo", + effect: "Permette a chi la usa di imparare l'ultima mossa usata dal bersaglio. La nuova mossa appresa sostituisce Schizzo.", + }, + tripleKick: { + name: "Triplocalcio", + effect: "Chi la usa esegue fino a tre calci consecutivi la cui potenza aumenta ad ogni colpo.", + }, + thief: { + name: "Furto", + effect: "Il Pokémon attacca e contemporaneamente ruba lo strumento tenuto dal nemico. Non ruberà nulla, se si possiede già uno strumento.", + }, + spiderWeb: { + name: "Ragnatela", + effect: "Copre il nemico con un filo di seta sottile e appiccicoso. Il nemico non può fuggire.", + }, + mindReader: { + name: "Leggimente", + effect: "Il Pokémon percepisce i movimenti del nemico con la mente per garantire il successo della mossa successiva.", + }, + nightmare: { + name: "Incubo", + effect: "Il nemico addormentato ha un incubo e perde PS ad ogni turno.", + }, + flameWheel: { + name: "Ruotafuoco", + effect: "Il Pokémon si avvolge nel fuoco e carica il nemico. Può scottare.", + }, + snore: { + name: "Russare", + effect: "Mossa da usare solo mentre si dorme. Il chiasso assordante può anche far tentennare il nemico.", + }, + curse: { + name: "Maledizione", + effect: "Una mossa che agisce in modo diverso se chi la usa è di tipo Spettro.", + }, + flail: { + name: "Flagello", + effect: "Chi la usa si dimena per attaccare. È più efficace se i suoi PS sono bassi.", + }, + conversion2: { + name: "Conversione2", + effect: "Chi la usa cambia tipo per rendersi resistente al tipo dell'ultima mossa usata dal bersaglio.", + }, + aeroblast: { + name: "Aerocolpo", + effect: "Colpisce il nemico con un vortice d'aria per danneggiarlo. Probabile brutto colpo.", + }, + cottonSpore: { + name: "Cottonspora", + effect: "Rilascia spore simili al cotone che si attaccano ai nemici nei paraggi e ne riducono di molto la Velocità.", + }, + reversal: { + name: "Contropiede", + effect: "Chi la usa attacca con tutte le sue forze. Più i PS sono bassi, maggiore è la potenza di questa mossa.", + }, + spite: { + name: "Dispetto", + effect: "Chi la usa sfoga la propria rabbia sull'ultima mossa usata dal bersaglio e le sottrae quattro PP.", + }, + powderSnow: { + name: "Polneve", + effect: "Attacca il nemico con una raffica di neve farinosa e può anche congelarlo.", + }, + protect: { + name: "Protezione", + effect: "Permette di eludere tutti gli attacchi. Se usata in successione può fallire.", + }, + machPunch: { + name: "Pugnorapido", + effect: "Chi la usa tira un pugno a velocità impressionante e colpisce di sicuro per primo.", + }, + scaryFace: { + name: "Visotruce", + effect: "Chi la usa spaventa il nemico con una faccia terribile e ne riduce di molto la Velocità.", + }, + feintAttack: { + name: "Finta", + effect: "Chi la usa si avvicina al nemico facendo finta di niente, per poi scagliare un pugno infallibile a tradimento.", + }, + sweetKiss: { + name: "Dolcebacio", + effect: "Chi la usa bacia il nemico con una dolcezza angelica, confondendolo.", + }, + bellyDrum: { + name: "Panciamburo", + effect: "Chi la usa massimizza l'Attacco in cambio di metà dei PS massimi.", + }, + sludgeBomb: { + name: "Fangobomba", + effect: "Chi la usa attacca lanciando fango sul bersaglio. Può anche avvelenarlo.", + }, + mudSlap: { + name: "Fangosberla", + effect: "Chi la usa butta fango in faccia al nemico per arrecargli danni e ridurne la precisione.", + }, + octazooka: { + name: "Octazooka", + effect: "Chi la usa spruzza del'inchiostro in faccia al nemico. Può anche ridurne la precisione.", + }, + spikes: { + name: "Punte", + effect: "Chi la usa piazza sul terreno una trappola di punte che danneggia i nemici quando scendono in campo.", + }, + zapCannon: { + name: "Falcecannone", + effect: "Chi la usa provoca un'esplosione elettrica che infligge danni e paralizza il nemico.", + }, + foresight: { + name: "Preveggenza", + effect: "Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.", + }, + destinyBond: { + name: "Destinobbligato", + effect: "Se chi la usa va KO prima del proprio turno, chi ha sferrato il colpo da KO fa la stessa fine.", + }, + perishSong: { + name: "Ultimocanto", + effect: "Ogni Pokémon che sente questo canto va KO in tre turni, se non lo si sostituisce.", + }, + icyWind: { + name: "Ventogelato", + effect: "Chi la usa attacca i nemici con una folata di aria gelida e ne riduce anche la Velocità.", + }, + detect: { + name: "Individua", + effect: "Consente al Pokémon di evitare tutti gli attacchi. Può fallire se usato in successione.", + }, + boneRush: { + name: "Ossoraffica", + effect: "Chi la usa colpisce il nemico con un osso duro, da 2 a 5 volte di fila.", + }, + lockOn: { + name: "Localizza", + effect: "Chi la usa punta il nemico con precisione. La mossa successiva andrà a segno.", + }, + outrage: { + name: "Oltraggio", + effect: "Chi la usa sfoga la sua ira e attacca il nemico per due o tre turni prima di essere lasciato in preda alla confusione.", + }, + sandstorm: { + name: "Terrempesta", + effect: "Causa una tempesta di sabbia per cinque turni che danneggia tutti i tipi in campo esclusi Terra, Roccia e Acciaio.", + }, + gigaDrain: { + name: "Gigassorbimento", + effect: "Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.", + }, + endure: { + name: "Resistenza", + effect: "Chi la usa resta con un PS anche se subisce un colpo da KO in quel turno. Usata in successione può fallire.", + }, + charm: { + name: "Fascino", + effect: "Ammalia il nemico con lo sguardo per renderlo meno cauto. Riduce molto l'Attacco del nemico.", + }, + rollout: { + name: "Rotolamento", + effect: "Chi la usa colpisce il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.", + }, + falseSwipe: { + name: "Falsofinale", + effect: "Chi la usa trattiene il colpo per impedire al nemico di andare KO, lasciandolo con almeno un PS.", + }, + swagger: { + name: "Bullo", + effect: "Chi la usa provoca il bersaglio e lo confonde, facendo aumentare però di molto il suo Attacco.", + }, + milkDrink: { + name: "Buonlatte", + effect: "Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.", + }, + spark: { + name: "Scintilla", + effect: "Colpisce il nemico con una carica elettrica e può anche paralizzarlo.", + }, + furyCutter: { + name: "Tagliofuria", + effect: "Colpisce il nemico con falci o artigli. Se usata in successione aumenta di potenza ogni volta che va a segno.", + }, + steelWing: { + name: "Alacciaio", + effect: "Colpisce il nemico con ali d'acciaio. Può anche aumentare la Difesa di chi la usa.", + }, + meanLook: { + name: "Malosguardo", + effect: "Chi la usa blocca il nemico con uno sguardo oscuro e ammaliante, impedendogli la fuga.", + }, + attract: { + name: "Attrazione", + effect: "Se il nemico è del sesso opposto, s'infatua e attacca con meno probabilità.", + }, + sleepTalk: { + name: "Sonnolalia", + effect: "Chi la usa sfodera a caso una delle proprie mosse mentre sta dormendo.", + }, + healBell: { + name: "Rintoccasana", + effect: "Chi la usa fa suonare le campane per curare completamente tutta la squadra.", + }, + return: { + name: "Ritorno", + effect: "Mossa che diventa tanto più potente quanto maggiore è il grado di affezione del Pokémon per il proprio Allenatore.", + }, + present: { + name: "Regalino", + effect: "Chi la usa dà un regalo bomba al bersaglio. A volte, però, può fargli recuperare PS.", + }, + frustration: { + name: "Frustrazione", + effect: "Mossa che diventa tanto più potente quanto minore è il grado di affezione del Pokémon per il proprio Allenatore.", + }, + safeguard: { + name: "Salvaguardia", + effect: "Chi la usa crea un campo protettivo che difende tutta la squadra dai problemi di stato per cinque turni.", + }, + painSplit: { + name: "Malcomune", + effect: "Chi la usa somma i propri PS a quelli di un altro Pokémon per poi dividerli in parti uguali.", + }, + sacredFire: { + name: "Magifuoco", + effect: "Colpisce il nemico con un fuoco mistico di enorme intensità che può anche causargli una scottatura.", + }, + magnitude: { + name: "Magnitudo", + effect: "Chi la usa scatena un terremoto d'intensità variabile che danneggia gli altri Pokémon in campo.", + }, + dynamicPunch: { + name: "Dinamipugno", + effect: "Colpisce il nemico con un pugno davvero forte. Se va a segno, lo confonde.", + }, + megahorn: { + name: "Megacorno", + effect: "Chi la usa utilizza il suo corno per montare con grande forza il nemico.", + }, + dragonBreath: { + name: "Dragospiro", + effect: "Investe il nemico con una raffica potentissima che arreca danni. Può anche paralizzarlo.", + }, + batonPass: { + name: "Staffetta", + effect: "Chi la usa è sostituito da un Pokémon della squadra, che eredita anche ogni modifica alle statistiche.", + }, + encore: { + name: "Ripeti", + effect: "Chi la usa costringe il nemico a continuare ad utilizzare solo l'ultima mossa utilizzata da 2 a 6 turni.", + }, + pursuit: { + name: "Inseguimento", + effect: "Una mossa d'attacco che infligge un danno doppio se il nemico è in fase di sostituzione.", + }, + rapidSpin: { + name: "Rapigiro", + effect: "Un attacco roteante che elimina gli effetti delle mosse Legatutto, Avvolgibotta, Parassiseme e Punte.", + }, + sweetScent: { + name: "Profumino", + effect: "Un dolce profumo che alletta il nemico per ridurne l'elusione. Attira anche Pokémon selvatici.", + }, + ironTail: { + name: "Codacciaio", + effect: "Il nemico viene colpito da una robusta coda d'acciaio. Può anche ridurne la Difesa.", + }, + metalClaw: { + name: "Ferrartigli", + effect: "Colpisce il nemico con artigli d'acciaio. Può anche aumentare l'Attacco di chi la usa.", + }, + vitalThrow: { + name: "Vitaltiro", + effect: "Chi la usa attacca per ultimo, ma il colpo è sempre infallibile.", + }, + morningSun: { + name: "Mattindoro", + effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.", + }, + synthesis: { + name: "Sintesi", + effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.", + }, + moonlight: { + name: "Lucelunare", + effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.", + }, + hiddenPower: { + name: "Introforza", + effect: "Mossa singolare che cambia tipo e potenza a seconda del Pokémon che la usa.", + }, + crossChop: { + name: "Incrocolpo", + effect: "Investe il nemico con un colpo sferrato con entrambe le braccia incrociate. Probabile brutto colpo.", + }, + twister: { + name: "Tornado", + effect: "Un potente tornado si abbatte sul nemico. Può anche far tentennare.", + }, + rainDance: { + name: "Pioggiadanza", + effect: "Chi la usa provoca una forte pioggia per cinque turni, potenziando le mosse di tipo Acqua.", + }, + sunnyDay: { + name: "Giornodisole", + effect: "Chi la usa intensifica i raggi solari per cinque turni, potenziando le mosse di tipo Fuoco.", + }, + crunch: { + name: "Sgranocchio", + effect: "Il nemico viene morso con denti affilati. Può anche ridurne la Difesa.", + }, + mirrorCoat: { + name: "Specchiovelo", + effect: "Mossa che replica ogni attacco speciale, arrecando il doppio del danno ricevuto.", + }, + psychUp: { + name: "Psicamisù", + effect: "Chi la usa s'ipnotizza per copiare ogni modifica alle statistiche del bersaglio.", + }, + extremeSpeed: { + name: "Extrarapido", + effect: "Chi la usa carica il nemico a velocità impressionante ed attacca sempre per primo.", + }, + ancientPower: { + name: "Forzantica", + effect: "Colpisce il nemico con una forza primordiale. Può aumentare tutte le statistiche.", + }, + shadowBall: { + name: "Palla Ombra", + effect: "Lancia sul nemico una sfera nera. Può anche ridurne la Difesa Speciale.", + }, + futureSight: { + name: "Divinazione", + effect: "Due turni dopo l'utilizzo di questa mossa, il nemico viene attaccato con energia psichica.", + }, + rockSmash: { + name: "Spaccaroccia", + effect: "Il nemico viene colpito da un pugno in grado di frantumare anche la roccia. Può anche ridurne la Difesa.", + }, + whirlpool: { + name: "Mulinello", + effect: "Intrappola il nemico in un turbine d'acqua che dura per quattro o cinque turni infliggendogli dei danni ogni turno.", + }, + beatUp: { + name: "Picchiaduro", + effect: "Chi la usa chiama in aiuto i Pokémon della squadra: più ce ne sono, maggiore è il numero di attacchi.", + }, + fakeOut: { + name: "Bruciapelo", + effect: "Mossa che fa agire per primo e fa tentennare il nemico. Funziona solo appena sceso in campo.", + }, + uproar: { + name: "Baraonda", + effect: "Chi la usa attacca per tre turni con un frastuono che non fa dormire nessuno.", + }, + stockpile: { + name: "Accumulo", + effect: "Chi la usa accumula energia aumentando la Difesa e la Difesa Speciale. Si può utilizzare tre volte.", + }, + spitUp: { + name: "Sfoghenergia", + effect: "Tutta l'energia accumulata in precedenza con Accumulo è rilasciata nell'attacco. Maggiore è l'energia, più danni si arrecano.", + }, + swallow: { + name: "Introenergia", + effect: "Chi la usa assorbe l'energia raccolta con la mossa Accumulo e recupera PS. Maggiore è l'energia, più PS si recuperano.", + }, + heatWave: { + name: "Ondacalda", + effect: "Chi la usa investe i nemici con una folata di vento caldo. Può anche scottare.", + }, + hail: { + name: "Grandine", + effect: "Chi la usa causa una grandinata che dura cinque turni. Danneggia tutti i Pokémon tranne quelli di tipo Ghiaccio.", + }, + torment: { + name: "Attaccalite", + effect: "Chi la usa tormenta e fa infuriare il nemico, impedendogli di usare la stessa mossa due volte di seguito.", + }, + flatter: { + name: "Adulazione", + effect: "Adula il bersaglio e lo confonde, ma ne aumenta l'Attacco Speciale.", + }, + willOWisp: { + name: "Fuocofatuo", + effect: "Fiamme intense di colore viola causano una scottatura al nemico.", + }, + memento: { + name: "Memento", + effect: "Chi la usa va KO. Tuttavia, riduce di molto l'Attacco e l'Attacco Speciale del nemico.", + }, + facade: { + name: "Facciata", + effect: "Mossa d'attacco che raddoppia la potenza se chi la usa è scottato, avvelenato o paralizzato.", + }, + focusPunch: { + name: "Centripugno", + effect: "Chi la usa prende la mira prima di sferrare un pugno. Fallirà se verrà colpito prima di eseguire la mossa.", + }, + smellingSalts: { + name: "Maniereforti", + effect: "Infligge un danno doppio ad un bersaglio paralizzato, ma ne cura anche la paralisi.", + }, + followMe: { + name: "Sonoqui", + effect: "Chi la usa attrae l'attenzione su di sé, costringendo i nemici a sceglierlo sempre come bersaglio.", + }, + naturePower: { + name: "Naturforza", + effect: "Mossa che fa uso della forza della natura. Il suo effetto varia in base all'ambiente.", + }, + charge: { + name: "Sottocarica", + effect: "Potenzia la mossa di tipo Elettro usata subito dopo. Aumenta anche la Difesa Speciale di chi la usa.", + }, + taunt: { + name: "Provocazione", + effect: "Provoca il nemico, inducendolo ad usare solo mosse d'attacco per tre turni.", + }, + helpingHand: { + name: "Altruismo", + effect: "Mossa che aumenta la potenza dell'attacco di un alleato.", + }, + trick: { + name: "Raggiro", + effect: "Chi la usa coglie il bersaglio in contropiede e l'obbliga a cambiare il suo strumento con il proprio.", + }, + rolePlay: { + name: "Giocodiruolo", + effect: "Chi la usa mima in tutto il bersaglio, copiandone l'abilità.", + }, + wish: { + name: "Desiderio", + effect: "Permette di recuperare metà dei PS massimi al turno successivo.", + }, + assist: { + name: "Assistente", + effect: "Chi la usa utilizza in fretta e a caso una delle mosse degli altri Pokémon della squadra.", + }, + ingrain: { + name: "Radicamento", + effect: "Chi la usa mette delle radici che gli fanno recuperare PS a ogni turno. Non può essere sostituito.", + }, + superpower: { + name: "Troppoforte", + effect: "Chi la usa attacca il nemico con grande forza, ma il suo Attacco e la sua Difesa diminuiscono.", + }, + magicCoat: { + name: "Magivelo", + effect: "Una barriera rimanda al mittente l'effetto di mosse come Parassiseme e di mosse che influenzano lo stato.", + }, + recycle: { + name: "Riciclo", + effect: "Chi la usa ricicla uno strumento tenuto, già usato nella lotta, e lo può riutilizzare.", + }, + revenge: { + name: "Vendetta", + effect: "Mossa d'attacco che infligge un danno doppio se si è stati colpiti dal nemico nello stesso turno.", + }, + brickBreak: { + name: "Breccia", + effect: "Colpisce il nemico con una mano e rompe barriere come Riflesso e Schermoluce.", + }, + yawn: { + name: "Sbadiglio", + effect: "Chi la usa fa un grande sbadiglio che addormenta il nemico al turno seguente.", + }, + knockOff: { + name: "Privazione", + effect: "Attacco che blocca anche lo strumento tenuto dal nemico, impedendone l'uso nella lotta.", + }, + endeavor: { + name: "Rimonta", + effect: "Attacco che riduce i PS del nemico a una quantità pari ai PS di chi la usa.", + }, + eruption: { + name: "Eruzione", + effect: "Attacco impetuoso ed esplosivo la cui potenza è proporzionale ai PS di chi lo usa.", + }, + skillSwap: { + name: "Baratto", + effect: "Chi la usa sfrutta le sue facoltà mentali per scambiare l'abilità con il bersaglio.", + }, + imprison: { + name: "Esclusiva", + effect: "Chi la usa impedisce al nemico di usare mosse che conoscono entrambi.", + }, + refresh: { + name: "Rinfrescata", + effect: "Chi la usa riposa per curarsi da avvelenamento, paralisi e scottatura.", + }, + grudge: { + name: "Rancore", + effect: "Se chi la usa va KO, i PP della mossa nemica che lo ha messo fuori gioco si azzerano.", + }, + snatch: { + name: "Scippo", + effect: "Chi la usa ruba e utilizza la mossa curativa o modifica-statistiche che il bersaglio stava per usare.", + }, + secretPower: { + name: "Forzasegreta", + effect: "Attacco che può avere un effetto aggiuntivo a seconda del luogo in cui si trova chi lo usa.", + }, + dive: { + name: "Sub", + effect: "Chi la usa si tuffa in acqua per emergere e attaccare al turno seguente. Fuori dalla lotta permette di immergersi sott'acqua.", + }, + armThrust: { + name: "Sberletese", + effect: "Raffica di ceffoni che colpisce da due a cinque volte di fila.", + }, + camouflage: { + name: "Camuffamento", + effect: "Modifica il tipo di chi la usa a seconda del luogo, ad esempio sull'acqua, nell'erba o in una grotta.", + }, + tailGlow: { + name: "Codadiluce", + effect: "Chi la usa fissa una luce forte per concentrarsi e aumentare moltissimo l'Attacco Speciale.", + }, + lusterPurge: { + name: "Abbagliante", + effect: "Chi la usa scatena un'esplosione abbagliante che può anche ridurre la Difesa Speciale del Pokémon colpito.", + }, + mistBall: { + name: "Foschisfera", + effect: "Una sfera coperta di nebbia danneggia il nemico. Può anche ridurre l'Attacco Speciale.", + }, + featherDance: { + name: "Danzadipiume", + effect: "Chi la usa copre il nemico con un manto di piume che riduce di molto il suo Attacco.", + }, + teeterDance: { + name: "Strampadanza", + effect: "Chi la usa esegue una danza goffa che confonde tutti i Pokémon attorno.", + }, + blazeKick: { + name: "Calciardente", + effect: "Chi la usa tira un calcio. Probabile brutto colpo. Può anche causare una scottatura.", + }, + mudSport: { + name: "Fangata", + effect: "Chi la usa si ricopre di fango indebolendo le mosse di tipo Elettro finché resta in campo.", + }, + iceBall: { + name: "Palla Gelo", + effect: "Chi la usa attacca il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.", + }, + needleArm: { + name: "Pugnospine", + effect: "Chi la usa attacca colpendo il bersaglio con i suoi arti pieni di spine. Può far tentennare il Pokémon colpito.", + }, + slackOff: { + name: "Pigro", + effect: "Chi la usa si rilassa recuperando metà dei propri PS massimi.", + }, + hyperVoice: { + name: "Granvoce", + effect: "Chi la usa lancia un urlo straziante che danneggia i nemici.", + }, + poisonFang: { + name: "Velenodenti", + effect: "Chi la usa morde il nemico con denti avvelenati che possono anche iperavvelenarlo.", + }, + crushClaw: { + name: "Tritartigli", + effect: "Colpisce il nemico con artigli robusti e affilati che possono ridurne la Difesa.", + }, + blastBurn: { + name: "Incendio", + effect: "Potente esplosione che danneggia il nemico, ma fa saltare il turno successivo a chi la provoca.", + }, + hydroCannon: { + name: "Idrocannone", + effect: "Colpisce il nemico con un potente getto d'acqua. Chi la usa salta il turno successivo.", + }, + meteorMash: { + name: "Meteorpugno", + effect: "Colpisce il nemico con un pugno veloce come una meteora. Può far pure salire l'Attacco di chi la usa.", + }, + astonish: { + name: "Sgomento", + effect: "Chi la usa attacca il bersaglio emettendo un verso terrificante. Può anche farlo tentennare.", + }, + weatherBall: { + name: "Palla Clima", + effect: "Mossa d'attacco che varia tipo e forza in base alle condizioni atmosferiche.", + }, + aromatherapy: { + name: "Aromaterapia", + effect: "Chi la usa rilascia un dolce profumo che cura tutti problemi di stato propri e degli alleati.", + }, + fakeTears: { + name: "Falselacrime", + effect: "Chi la usa inscena un pianto teatrale per commuovere il nemico. Ne riduce di molto la Difesa Speciale.", + }, + airCutter: { + name: "Aerasoio", + effect: "Chi la usa provoca un vento tagliente che sferza i nemici. Probabile brutto colpo.", + }, + overheat: { + name: "Vampata", + effect: "Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.", + }, + odorSleuth: { + name: "Segugio", + effect: "Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.", + }, + rockTomb: { + name: "Rocciotomba", + effect: "Colpisce il nemico con rocce. Inoltre, lo rallenta riducendone la Velocità.", + }, + silverWind: { + name: "Ventargenteo", + effect: "Attacca con un forte vento di polvere di squame. Tutte le statistiche di chi la usa possono salire.", + }, + metalSound: { + name: "Ferrostrido", + effect: "Orribile stridio, simile a quello prodotto dal metallo, che riduce di molto la Difesa Speciale del nemico.", + }, + grassWhistle: { + name: "Meloderba", + effect: "Una dolce melodia culla il bersaglio e lo costringe ad addormentarsi.", + }, + tickle: { + name: "Solletico", + effect: "Chi la usa solletica il nemico e lo fa ridere, riducendo il suo Attacco e la sua Difesa.", + }, + cosmicPower: { + name: "Cosmoforza", + effect: "Chi la usa assorbe una forza mistica dallo spazio che aumenta la Difesa e la Difesa Speciale.", + }, + waterSpout: { + name: "Zampillo", + effect: "Lancia un getto d'acqua contro il nemico che ha davanti e quelli adiacenti. La potenza è proporzionale al numero di PS di chi la usa.", + }, + signalBeam: { + name: "Segnoraggio", + effect: "Chi la usa attacca con uno strano raggio di luce che può anche confondere il Pokémon colpito.", + }, + shadowPunch: { + name: "Pugnodombra", + effect: "Il nemico riceve un pugno proveniente dalle tenebre. Questa mossa è infallibile.", + }, + extrasensory: { + name: "Extrasenso", + effect: "Chi la usa attacca con una misteriosa forza invisibile. Può far tentennare il nemico.", + }, + skyUppercut: { + name: "Stramontante", + effect: "Chi la usa attacca il nemico con un montante che può arrivare fino in cielo.", + }, + sandTomb: { + name: "Sabbiotomba", + effect: "Chi la usa intrappola il nemico in un turbine di sabbia per quattro o cinque turni.", + }, + sheerCold: { + name: "Purogelo", + effect: "Ondata di freddo penetrante che, se va a segno, fa andare KO il nemico.", + }, + muddyWater: { + name: "Fanghiglia", + effect: "Chi la usa attacca con un getto di fango che può anche ridurre la precisione dei nemici.", + }, + bulletSeed: { + name: "Semitraglia", + effect: "Chi la usa spara da due a cinque raffiche di semi contro il bersaglio in successione.", + }, + aerialAce: { + name: "Aeroassalto", + effect: "Chi la usa attacca il nemico a grande velocità. Questa mossa è infallibile.", + }, + icicleSpear: { + name: "Gelolancia", + effect: "Chi la usa spara ghiaccioli affilati contro il nemico da due a cinque volte di fila.", + }, + ironDefense: { + name: "Ferroscudo", + effect: "Il corpo di chi la usa si indurisce come il ferro, facendone salire di molto la Difesa.", + }, + block: { + name: "Blocco", + effect: "Chi la usa sbarra la strada al nemico impedendone la fuga o la sostituzione.", + }, + howl: { + name: "Gridodilotta", + effect: "Chi la usa emette un verso molto forte per darsi coraggio e aumentare l'Attacco.", + }, + dragonClaw: { + name: "Dragartigli", + effect: "Chi la usa attacca con artigli affilati che graffiano il nemico rapidamente e con grande forza.", + }, + frenzyPlant: { + name: "Radicalbero", + effect: "Un groviglio di radici colpisce il nemico. Chi la usa salta il turno successivo.", + }, + bulkUp: { + name: "Granfisico", + effect: "Chi la usa tende i muscoli per gonfiare il corpo, aumentando Difesa e Attacco.", + }, + bounce: { + name: "Rimbalzo", + effect: "Chi la usa balza in alto e ricade sul nemico dopo un turno. Può anche paralizzare.", + }, + mudShot: { + name: "Colpodifango", + effect: "Chi la usa attacca lanciando fango sul nemico. Riduce anche la Velocità.", + }, + poisonTail: { + name: "Velenocoda", + effect: "Chi la usa colpisce con la coda e può avvelenare il nemico. Probabile brutto colpo.", + }, + covet: { + name: "Supplica", + effect: "Chi la usa attacca il bersaglio sorridendo e gli ruba lo strumento che tiene.", + }, + voltTackle: { + name: "Locomovolt", + effect: "Chi la usa si carica di elettricità e poi attacca. Può paralizzare il nemico. Il contraccolpo causa seri danni.", + }, + magicalLeaf: { + name: "Fogliamagica", + effect: "Chi la usa sparpaglia strane foglie che inseguono il bersaglio. Questa mossa è infallibile.", + }, + waterSport: { + name: "Docciascudo", + effect: "Chi la usa s'impregna d'acqua indebolendo le mosse di tipo Fuoco finché resta in campo.", + }, + calmMind: { + name: "Calmamente", + effect: "Chi la usa, meditando, placa il proprio spirito per aumentare l'Attacco Speciale e la Difesa Speciale.", + }, + leafBlade: { + name: "Fendifoglia", + effect: "Colpisce il nemico usando una foglia affilata come una spada. Probabile brutto colpo.", + }, + dragonDance: { + name: "Dragodanza", + effect: "Danza mistica e vigorosa che aumenta l'Attacco e la Velocità di chi la usa.", + }, + rockBlast: { + name: "Cadutamassi", + effect: "Colpisce il nemico con dei massi pesanti lanciati in rapida successione. Il numero di massi varia da due a cinque.", + }, + shockWave: { + name: "Ondashock", + effect: "Chi la usa colpisce il nemico con una scossa di elettricità. È impossibile eludere questa mossa.", + }, + waterPulse: { + name: "Idropulsar", + effect: "Il nemico viene colpito da un getto d'acqua potentissimo che può anche confonderlo.", + }, + doomDesire: { + name: "Desiderio Fatale", + effect: "Intensa luce solare che colpisce il nemico dopo due turni dall'uso della mossa.", + }, + psychoBoost: { + name: "Psicoslancio", + effect: "Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.", + }, + roost: { + name: "Trespolo", + effect: "Chi la usa sta fermo e riposa, recuperando metà dei propri PS massimi.", + }, + gravity: { + name: "Gravità", + effect: "Intensifica la gravità per cinque turni. Le mosse che fanno volare e Levitazione sono inutilizzabili.", + }, + miracleEye: { + name: "Miracolvista", + effect: "Chi la usa rende i Pokémon di tipo Buio vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.", + }, + wakeUpSlap: { + name: "Svegliopacca", + effect: "Un attacco che infligge doppi danni se il nemico è Addormentato. Inoltre, lo sveglierà dal sonno.", + }, + hammerArm: { + name: "Martelpugno", + effect: "Chi la usa colpisce il nemico con il suo pugno forte e pesante, ma perde Velocità.", + }, + gyroBall: { + name: "Vortexpalla", + effect: "Chi la usa colpisce il nemico con un vortice rapidissimo. Più lento è chi la usa, maggiore è il danno.", + }, + healingWish: { + name: "Curardore", + effect: "Chi la usa va KO, ma il Pokémon che lo sostituisce recupera tutti i PS e risolve i problemi di stato.", + }, + brine: { + name: "Acquadisale", + effect: "Se i PS del nemico sono scesi a metà o meno, questa mossa colpirà con il doppio della potenza.", + }, + naturalGift: { + name: "Dononaturale", + effect: "Chi la usa trae forza dalla Bacca che tiene. Da questa dipendono il tipo e la forza dell'attacco.", + }, + feint: { + name: "Fintoattacco", + effect: "Un attacco che colpisce un nemico che ha usato Protezione od Individua. Ne rimuoverà inoltre gli effetti.", + }, + pluck: { + name: "Spennata", + effect: "Chi la usa becca il bersaglio. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.", + }, + tailwind: { + name: "Ventoincoda", + effect: "Chi la usa crea turbolente raffiche di vento che aumentano la sua Velocità e quella di tutti i Pokémon della squadra.", + }, + acupressure: { + name: "Acupressione", + effect: "Chi la usa esercita pressione su alcuni punti nevralgici e aumenta di molto una statistica a caso.", + }, + metalBurst: { + name: "Metalscoppio", + effect: "Chi la usa si vendica sul nemico che l'ha appena ferito con una mossa anche più potente.", + }, + uTurn: { + name: "Retromarcia", + effect: "Dopo aver selezionato questo attacco, chi la usa colpisce il nemico per poi essere sostituito con un altro Pokémon della squadra.", + }, + closeCombat: { + name: "Zuffa", + effect: "Chi la usa attacca abbassando la guardia. La propria Difesa e la Difesa Speciale si riducono.", + }, + payback: { + name: "Rivincita", + effect: "Chi la usa accumula forza, poi attacca. La potenza raddoppia se agisce dopo il Pokémon nemico.", + }, + assurance: { + name: "Garanzia", + effect: "Se il nemico ha già subito dei danni nello stesso turno, la potenza di questa mossa raddoppia.", + }, + embargo: { + name: "Divieto", + effect: "Impedisce al nemico di usare lo strumento che tiene e al suo Allenatore di usarne altri sul Pokémon.", + }, + fling: { + name: "Lancio", + effect: "Chi la usa lancia sul nemico lo strumento che tiene. La forza e l'effetto dipendono dallo strumento.", + }, + psychoShift: { + name: "Psicotrasfer", + effect: "Con la forza psichica e la suggestione, chi la usa può trasferire i suoi problemi di stato al Pokémon colpito.", + }, + trumpCard: { + name: "Asso", + effect: "Minori PP rimangono a questa mossa, e maggiori danni apporterà al nemico.", + }, + healBlock: { + name: "Anticura", + effect: "Chi la usa impedisce al nemico di utilizzare mosse o abilità recupera-PS per cinque turni.", + }, + wringOut: { + name: "Strizzata", + effect: "Chi la usa stritola con forza il nemico. Più PS ha il nemico, maggiore è la potenza della mossa.", + }, + powerTrick: { + name: "Ingannoforza", + effect: "Mossa psichica che permette a chi la usa di scambiare i valori delle sue statistiche di Attacco e Difesa.", + }, + gastroAcid: { + name: "Gastroacido", + effect: "Chi la usa lancia acidi gastrici sul nemico. Il fluido annulla l'abilità del nemico.", + }, + luckyChant: { + name: "Fortuncanto", + effect: "Chi la usa rivolge un incantesimo al cielo, impedendo al nemico di sferrare brutti colpi alla squadra.", + }, + meFirst: { + name: "Precedenza", + effect: "Se chi la usa è più veloce del nemico, gli ruba la mossa e gliela ritorce contro con potenza persino maggiore.", + }, + copycat: { + name: "Copione", + effect: "Chi la usa imita l'ultima mossa usata dal nemico. La mossa fallisce se questo non ha selezionato alcuna mossa.", + }, + powerSwap: { + name: "Barattoforza", + effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche ad Attacco e Attacco Speciale con il bersaglio.", + }, + guardSwap: { + name: "Barattoscudo", + effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche a Difesa e a Difesa Speciale con il bersaglio.", + }, + punishment: { + name: "Punizione", + effect: "Questa mossa diventa più potente ogni volta che il nemico aumenta le proprie statistiche.", + }, + lastResort: { + name: "Ultimascelta", + effect: "Per usare questa mossa, bisogna prima avvalersi in lotta di tutte le altre mosse conosciute.", + }, + worrySeed: { + name: "Affannoseme", + effect: "Un seme che causa ansia viene piantato sul bersaglio. Ne muta l'abilità in Insonnia e ne previene o rimuove il sonno.", + }, + suckerPunch: { + name: "Sbigoattacco", + effect: "Chi la usa può attaccare per primo. Fallisce se il nemico non sta preparando un attacco.", + }, + toxicSpikes: { + name: "Fielepunte", + effect: "Chi la usa piazza ai piedi del nemico delle punte avvelenate. Avvelena ogni nemico che entra in lotta.", + }, + heartSwap: { + name: "Cuorbaratto", + effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche alle statistiche con il bersaglio.", + }, + aquaRing: { + name: "Acquanello", + effect: "Chi la usa si avvolge in un velo d'acqua. Recupera alcuni PS ad ogni turno.", + }, + magnetRise: { + name: "Magnetascesa", + effect: "Chi la usa si solleva in aria per cinque turni grazie a un campo elettromagnetico.", + }, + flareBlitz: { + name: "Fuococarica", + effect: "Chi la usa si ricopre di fuoco e carica il bersaglio, ma subisce il contraccolpo. Può anche scottare.", + }, + forcePalm: { + name: "Palmoforza", + effect: "Chi la usa attacca con un'onda d'urto che può anche paralizzare il bersaglio.", + }, + auraSphere: { + name: "Sferapulsar", + effect: "Chi la usa rilascia una forza eterea dal profondo del corpo. La mossa è infallibile.", + }, + rockPolish: { + name: "Lucidatura", + effect: "Chi la usa leviga il proprio corpo per ridurne l'attrito. Aumenta di molto la Velocità.", + }, + poisonJab: { + name: "Velenpuntura", + effect: "Il nemico viene colpito con un tentacolo od un braccio intriso di veleno. Può anche avvelenarlo.", + }, + darkPulse: { + name: "Neropulsar", + effect: "Chi la usa emana un'aura impregnata di oscuri pensieri. Può anche far tentennare il Pokémon colpito.", + }, + nightSlash: { + name: "Nottesferza", + effect: "Chi la usa colpisce il nemico appena si presenta l'occasione. Probabile brutto colpo.", + }, + aquaTail: { + name: "Idrondata", + effect: "Chi la usa attacca agitando la coda come se fosse una violenta ondata in una tempesta furiosa.", + }, + seedBomb: { + name: "Semebomba", + effect: "Chi la usa emette una raffica di semi dal guscio duro che colpiscono il bersaglio dall'alto.", + }, + airSlash: { + name: "Eterelama", + effect: "Chi la usa attacca con un vento tagliente che squarcia il cielo. Può anche far tentennare il Pokémon colpito.", + }, + xScissor: { + name: "Forbice X", + effect: "Chi la usa colpisce il nemico usando le sue falci o artigli come se fossero un paio di forbici.", + }, + bugBuzz: { + name: "Ronzio", + effect: "Chi la usa muove le ali per creare un suono che danneggia il nemico. Può anche ridurne la Difesa Speciale.", + }, + dragonPulse: { + name: "Dragopulsar", + effect: "Chi la usa attacca un'onda d'urto generata spalancando la bocca.", + }, + dragonRush: { + name: "Dragofuria", + effect: "Chi la usa attacca con fare minaccioso e in questo modo può anche far tentennare il nemico.", + }, + powerGem: { + name: "Gemmoforza", + effect: "Chi la usa attacca con un raggio di luce che brilla come se fosse fatto di pietre preziose.", + }, + drainPunch: { + name: "Assorbipugno", + effect: "Pugno che assorbe energia. Fa recuperare una quantità di PS pari alla metà del danno inferto.", + }, + vacuumWave: { + name: "Vuotonda", + effect: "Chi la usa rotea i pugni per lanciare un'onda di vuoto assoluto verso il nemico. Attacca per primo.", + }, + focusBlast: { + name: "Focalcolpo", + effect: "Chi la usa incrementa la sua concentrazione mentale per scatenare il suo potere. Può ridurre la Difesa Speciale del nemico.", + }, + energyBall: { + name: "Energipalla", + effect: "Chi la usa attinge energia dalla natura e la scaglia contro il bersaglio. Può anche ridurne la Difesa Speciale.", + }, + braveBird: { + name: "Baldeali", + effect: "Chi la usa si nasconde sotto le ali e carica da bassa quota. Tuttavia, subisce considerevoli danni.", + }, + earthPower: { + name: "Geoforza", + effect: "Dal terreno sotto il nemico si sprigiona una forza devastante. Può anche ridurne la Difesa Speciale.", + }, + switcheroo: { + name: "Rapidscambio", + effect: "Chi la usa scambia in maniera fulminea il proprio oggetto con quello del nemico.", + }, + gigaImpact: { + name: "Gigaimpatto", + effect: "Chi la usa carica il nemico usando tutta la sua forza, ma al turno successivo deve riposare.", + }, + nastyPlot: { + name: "Congiura", + effect: "Chi la usa stimola il cervello pensando a cose cattive. Aumenta di molto l'Attacco Speciale.", + }, + bulletPunch: { + name: "Pugnoscarica", + effect: "Chi la usa attacca con una scarica di pugni veloci come proiettili. Con questa mossa si colpisce per primi.", + }, + avalanche: { + name: "Slavina", + effect: "Un attacco che infligge doppi danni se l'utilizzatore ha subito un attacco nello stesso turno.", + }, + iceShard: { + name: "Geloscheggia", + effect: "Chi la usa crea dei pezzi di ghiaccio e li lancia. Con questa mossa si colpisce per primi.", + }, + shadowClaw: { + name: "Ombrartigli", + effect: "Chi la usa attacca con artigli d'ombra che colpiscono con gran forza. Probabile brutto colpo.", + }, + thunderFang: { + name: "Fulmindenti", + effect: "Chi la usa morde con denti elettrificati che possono anche paralizzare o far tentennare il nemico.", + }, + iceFang: { + name: "Gelodenti", + effect: "Chi la usa morde il nemico con denti di ghiaccio. Può causare congelamento e tentennamento.", + }, + fireFang: { + name: "Rogodenti", + effect: "Chi la usa morde il nemico con denti infuocati. Può causare scottatura e tentennamento.", + }, + shadowSneak: { + name: "Furtivombra", + effect: "Chi la usa estende la sua ombra e attacca il nemico alle spalle. Con questa mossa si colpisce per primi.", + }, + mudBomb: { + name: "Pantanobomba", + effect: "Chi la usa lancia dure palle di fango sul nemico. Può anche ridurne la Precisione.", + }, + psychoCut: { + name: "Psicotaglio", + effect: "Chi la usa colpisce il nemico con lame fatte di forza psichica. Probabile brutto colpo.", + }, + zenHeadbutt: { + name: "Cozzata Zen", + effect: "Chi la usa concentra la forza nella testa e si lancia contro il nemico. Può anche farlo tentennare.", + }, + mirrorShot: { + name: "Cristalcolpo", + effect: "Chi la usa colpisce il nemico lanciando fasci d'energia dal suo corpo. Può ridurne la precisione.", + }, + flashCannon: { + name: "Cannonflash", + effect: "Chi la usa attacca raccogliendo e rilasciando energia luminosa. Può ridurre la Difesa Speciale del nemico.", + }, + rockClimb: { + name: "Scalaroccia", + effect: "Chi la usa carica con impeto incredibile. Il colpo può confondere il nemico.", + }, + defog: { + name: "Scacciabruma", + effect: "Chi la usa spazza via barriere come Riflesso e Schermoluce con un forte vento e riduce la capacità d'elusione del nemico.", + }, + trickRoom: { + name: "Distortozona", + effect: "Chi la usa crea una dimensione in cui i Pokémon più lenti si muovono per primi per cinque turni.", + }, + dracoMeteor: { + name: "Dragobolide", + effect: "Attacca con meteore che cadono dal cielo. Il contraccolpo fa calare di molto l'Attacco Speciale di chi la usa.", + }, + discharge: { + name: "Scarica", + effect: "Chi la usa colpisce i Pokémon che ha intorno con un bagliore elettrico. Può anche causare paralisi.", + }, + lavaPlume: { + name: "Lavasbuffo", + effect: "Chi la usa lancia fiamme scarlatte sugli altri Pokémon in campo. Può anche scottare.", + }, + leafStorm: { + name: "Verdebufera", + effect: "Si forma una tempesta di foglie affilate. Il contraccolpo riduce di molto l'Attacco Speciale di chi la usa.", + }, + powerWhip: { + name: "Vigorcolpo", + effect: "Chi la usa agita violentemente liane o tentacoli per sferzare il bersaglio.", + }, + rockWrecker: { + name: "Devastomasso", + effect: "Chi la usa attacca il nemico con un enorme masso, ma si deve riposare al turno successivo.", + }, + crossPoison: { + name: "Velenocroce", + effect: "Attacco con zanne avvelenate che può anche avvelenare il Pokémon colpito. Probabile brutto colpo.", + }, + gunkShot: { + name: "Sporcolancio", + effect: "Chi la usa attacca il nemico con rifiuti sudici che possono anche avvelenarlo.", + }, + ironHead: { + name: "Metaltestata", + effect: "Chi la usa colpisce il nemico con la sua testa dura come l'acciaio. Può anche farlo tentennare.", + }, + magnetBomb: { + name: "Bombagnete", + effect: "Chi la usa lancia bombe d'acciaio che si attaccano al nemico. Una mossa infallibile.", + }, + stoneEdge: { + name: "Pietrataglio", + effect: "Chi la usa colpisce il nemico dal basso con pietre affilate. Probabile brutto colpo.", + }, + captivate: { + name: "Incanto", + effect: "Se il nemico è del sesso opposto di chi la usa, sarà ammaliato e il suo Attacco Speciale diminuirà di molto.", + }, + stealthRock: { + name: "Levitoroccia", + effect: "Chi la usa piazza una trappola di rocce sospese che danneggia i nemici che entrano in lotta.", + }, + grassKnot: { + name: "Laccioerboso", + effect: "Chi la usa intrappola il bersaglio con l'erba e lo fa cadere. Danneggia maggiormente i Pokémon più pesanti.", + }, + chatter: { + name: "Schiamazzo", + effect: "Chi la usa attacca creando un'onda sonora con le parole imparate. Può anche confondere il nemico.", + }, + judgment: { + name: "Giudizio", + effect: "Chi la usa rilascia numerosi colpi di luce. Il tipo varia a seconda della Lastra tenuta.", + }, + bugBite: { + name: "Coleomorso", + effect: "Chi la usa morde il nemico. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.", + }, + chargeBeam: { + name: "Raggioscossa", + effect: "Chi la usa lancia un fascio di elettricità molto intensa. Può anche aumentare il suo Attacco Speciale.", + }, + woodHammer: { + name: "Mazzuolegno", + effect: "Chi la usa si lancia con tutto il corpo contro il bersaglio, ma subisce anche considerevoli danni.", + }, + aquaJet: { + name: "Acquagetto", + effect: "Chi la usa colpisce sempre per primo e a una tale velocità da rendersi quasi invisibile.", + }, + attackOrder: { + name: "Comandourto", + effect: "Chi la usa raduna i suoi sgherri per colpire il nemico. Probabile brutto colpo.", + }, + defendOrder: { + name: "Comandoscudo", + effect: "Chi la usa raduna i suoi sgherri per creare uno scudo, aumentando Difesa e Difesa Speciale.", + }, + healOrder: { + name: "Comandocura", + effect: "Chi la usa raduna i propri sgherri per farsi curare. Recupera metà dei PS massimi.", + }, + headSmash: { + name: "Zuccata", + effect: "Chi la usa attacca con tutta la potenza di cui dispone, ma subisce danni considerevoli.", + }, + doubleHit: { + name: "Doppiosmash", + effect: "Chi la usa colpisce il nemico con la coda due volte di fila.", + }, + roarOfTime: { + name: "Fragortempo", + effect: "Chi la usa colpisce il nemico con una forza capace di alterare il tempo, ma deve stare fermo il turno dopo.", + }, + spacialRend: { + name: "Fendispazio", + effect: "Chi la usa lacera il nemico e lo spazio che lo circonda. Probabile brutto colpo.", + }, + lunarDance: { + name: "Lunardanza", + effect: "Chi la usa va KO. Il Pokémon che lo sostituisce risolve i propri problemi di stato e recupera PS e PP.", + }, + crushGrip: { + name: "Sbriciolmano", + effect: "Colpisce il nemico con grande forza. Più PS ha il nemico, maggiore è la potenza della mossa.", + }, + magmaStorm: { + name: "Magmaclisma", + effect: "Intrappola il nemico in un turbine di fuoco che dura per quattro o cinque turni.", + }, + darkVoid: { + name: "Vuototetro", + effect: "Trascina i nemici in un mondo di totale oscurità e li fa addormentare.", + }, + seedFlare: { + name: "Infuriaseme", + effect: "Chi la usa genera un'onda d'urto dal suo corpo. Può anche ridurre di molto la Difesa Speciale del bersaglio.", + }, + ominousWind: { + name: "Funestovento", + effect: "Chi la usa crea una raffica di vento ripugnante. Può aumentare tutte le statistiche di chi la usa.", + }, + shadowForce: { + name: "Oscurotuffo", + effect: "Chi la usa sparisce e poi colpisce il nemico al turno successivo. Evita pure Protezione o Individua.", + }, + honeClaws: { + name: "Unghiaguzze", + effect: "Chi la usa affila i propri artigli, aumentando Attacco e precisione.", + }, + wideGuard: { + name: "Bodyguard", + effect: "Chi la usa para tutti i colpi diretti alla intera squadra per un turno. Se usata in successione può fallire.", + }, + guardSplit: { + name: "Paridifesa", + effect: "Chi la usa sfrutta la sua forza psichica per sommare Difesa e Difesa Speciale a quelle del bersaglio e dividerle equamente.", + }, + powerSplit: { + name: "Pariattacco", + effect: "Chi la usa sfrutta la sua forza psichica per sommare Attacco e Attacco Speciale a quelli del bersaglio e dividerli equamente.", + }, + wonderRoom: { + name: "Mirabilzona", + effect: "Chi la usa crea una dimensione in cui Difesa e Difesa Speciale di tutti i Pokémon vengono scambiate per cinque turni.", + }, + psyshock: { + name: "Psicoshock", + effect: "Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.", + }, + venoshock: { + name: "Velenoshock", + effect: "Lancia uno speciale liquido tossico sul bersaglio. Se questi è avvelenato, il danno provocato raddoppia.", + }, + autotomize: { + name: "Sganciapesi", + effect: "Chi la usa si libera di tutti i pesi in eccesso, alleggerendosi e aumentando di molto la propria Velocità.", + }, + ragePowder: { + name: "Polverabbia", + effect: "Chi la usa attira l'attenzione dei nemici cospargendosi di una polvere irritante e diventando bersaglio di tutti gli attacchi.", + }, + telekinesis: { + name: "Telecinesi", + effect: "Chi la usa fa fluttuare in aria il bersaglio, rendendolo facile da colpire per tre turni.", + }, + magicRoom: { + name: "Magicozona", + effect: "Chi la usa crea una dimensione in cui l'effetto degli strumenti tenuti da tutti i Pokémon è annullato per cinque turni.", + }, + smackDown: { + name: "Abbattimento", + effect: "Chi la usa lancia una pietra o un proiettile. Può colpire anche un bersaglio in volo e farlo cadere.", + }, + stormThrow: { + name: "Tempestretta", + effect: "Chi la usa sferra un colpo micidiale al bersaglio, stritolandolo. Brutto colpo assicurato.", + }, + flameBurst: { + name: "Pirolancio", + effect: "Chi la usa emana una fiammata che colpisce il bersaglio e si propaga fino a raggiungere i Pokémon accanto.", + }, + sludgeWave: { + name: "Fangonda", + effect: "Lancia un'onda di fango che attacca tutti i Pokémon nelle vicinanze. Può anche avvelenare.", + }, + quiverDance: { + name: "Eledanza", + effect: "Danza leggiadra ed elegante che aumenta l'Attacco Speciale, la Difesa Speciale e la Velocità di chi la usa.", + }, + heavySlam: { + name: "Pesobomba", + effect: "Chi la usa si lancia contro il bersaglio con tutto il proprio peso. Più è pesante rispetto ad esso e più danni causa.", + }, + synchronoise: { + name: "Sincrumore", + effect: "Chi la usa infligge danni a tutti i Pokémon del suo stesso tipo che ha vicino usando misteriose onde elettromagnetiche.", + }, + electroBall: { + name: "Energisfera", + effect: "Chi la usa attacca con una sfera d'energia elettrica. Più è rapido rispetto al bersaglio e più danni arreca.", + }, + soak: { + name: "Inondazione", + effect: "Chi la usa proietta un lungo getto d'acqua contro il bersaglio e lo rende un Pokémon di tipo Acqua.", + }, + flameCharge: { + name: "Nitrocarica", + effect: "Chi la usa si copre di fuoco e attacca il bersaglio. Concentrandosi aumenta, inoltre, la propria Velocità.", + }, + coil: { + name: "Arrotola", + effect: "Chi la usa si concentra, aumentando Attacco, Difesa e precisione.", + }, + lowSweep: { + name: "Calciobasso", + effect: "Chi la usa colpisce con un attacco fulmineo la parte inferiore del corpo del bersaglio, riducendone la Velocità.", + }, + acidSpray: { + name: "Acidobomba", + effect: "Chi la usa attacca il bersaglio con un acido altamente corrosivo. Il fluido riduce di molto la Difesa Speciale del bersaglio.", + }, + foulPlay: { + name: "Ripicca", + effect: "Chi la usa sfrutta la forza del bersaglio. Il danno inflitto è proporzionale all'Attacco dell'avversario.", + }, + simpleBeam: { + name: "Ondisinvolta", + effect: "Chi la usa emette un misterioso raggio psichico che trasforma l'abilità del Pokémon colpito in Disinvoltura.", + }, + entrainment: { + name: "Saltamicizia", + effect: "Chi la usa saltella con un buffo ritmo, invitando il bersaglio a imitarlo e rendendo la sua abilità identica alla propria.", + }, + afterYou: { + name: "Cortesia", + effect: "Chi la usa aiuta un bersaglio più lento permettendogli di agire subito dopo.", + }, + round: { + name: "Coro", + effect: "Attacca il bersaglio con una melodia. Se usata ripetutamente da uno o più Pokémon i danni inflitti aumentano.", + }, + echoedVoice: { + name: "Echeggiavoce", + effect: "Attacca il bersaglio con la propria voce echeggiante. Se usata a ripetizione da uno o più Pokémon il danno aumenta.", + }, + chipAway: { + name: "Insidia", + effect: "Chi la usa attacca non appena il bersaglio abbassa la guardia. Il danno inflitto prescinde dalle modifiche alle statistiche.", + }, + clearSmog: { + name: "Pulifumo", + effect: "Attacca il bersaglio lanciandogli contro una nuvola di fumo speciale, che annulla ogni modifica alle statistiche.", + }, + storedPower: { + name: "Veicolaforza", + effect: "Attacca il bersaglio con l'energia accumulata. Più sono state aumentate le statistiche, maggiore è il danno inflitto.", + }, + quickGuard: { + name: "Anticipo", + effect: "Chi la usa protegge tutta la squadra dalle mosse dei nemici che fanno colpire per primi. Se usata in successione può fallire.", + }, + allySwitch: { + name: "Cambiaposto", + effect: "Chi la usa si teletrasporta al posto di un compagno in campo, grazie ad un misterioso potere.", + }, + scald: { + name: "Idrovampata", + effect: "Chi la usa attacca il bersaglio con un getto d'acqua bollente che può anche scottarlo.", + }, + shellSmash: { + name: "Gettaguscio", + effect: "Chi la usa si disfa del guscio. Difesa e Dif. Sp. calano, ma aumentano di molto Attacco, Att. Sp. e Velocità.", + }, + healPulse: { + name: "Curapulsar", + effect: "Chi la usa lancia un'onda rilassante che fa recuperare al bersaglio metà dei suoi PS massimi.", + }, + hex: { + name: "Sciagura", + effect: "Attacco che causa un danno enorme se il bersaglio ha problemi di stato.", + }, + skyDrop: { + name: "Cadutalibera", + effect: "Porta il bersaglio in cielo e lo scaglia a terra al turno successivo. Il bersaglio catturato non può muoversi.", + }, + shiftGear: { + name: "Cambiomarcia", + effect: "Facendo ruotare gli ingranaggi, chi la usa aumenta non solo il proprio Attacco, ma anche di molto la propria Velocità.", + }, + circleThrow: { + name: "Ribaltiro", + effect: "Il bersaglio è scaraventato via ed è costretto a lasciare il posto a un altro. Se è selvatico, la lotta finisce.", + }, + incinerate: { + name: "Bruciatutto", + effect: "Attacca il nemico con una fiammata. Se il nemico ha una Bacca, viene divorata dalle fiamme.", + }, + quash: { + name: "Spintone", + effect: "Chi la usa trattiene il bersaglio, costringendolo ad agire per ultimo.", + }, + acrobatics: { + name: "Acrobazia", + effect: "Attacca rapidamente il bersaglio. Se chi la usa non ha uno strumento, infligge al nemico grossi danni.", + }, + reflectType: { + name: "Riflettipo", + effect: "Chi la usa cambia il proprio tipo in quello del bersaglio.", + }, + retaliate: { + name: "Nemesi", + effect: "Vendica un compagno messo KO. Se ciò è accaduto al turno precedente, il danno è maggiore.", + }, + finalGambit: { + name: "Azzardo", + effect: "Chi la usa attacca con tutta la potenza di cui dispone e va KO, ma infligge al bersaglio un danno pari ai PS che ha perso.", + }, + bestow: { + name: "Cediregalo", + effect: "Chi la usa consegna il proprio strumento al bersaglio se ne è sprovvisto.", + }, + inferno: { + name: "Marchiatura", + effect: "Il bersaglio viene avvolto da intense fiammate che causano scottature.", + }, + waterPledge: { + name: "Acquapatto", + effect: "Attacca il nemico con una colonna d'acqua. Se usata con Fiammapatto, aumentano gli effetti e un arcobaleno appare in cielo.", + }, + firePledge: { + name: "Fiammapatto", + effect: "Attacca il nemico con una colonna di fuoco. Se usata con Erbapatto, aumentano gli effetti e il campo diventa un mare di fuoco.", + }, + grassPledge: { + name: "Erbapatto", + effect: "Attacca il bersaglio con una colonna d'erba. Se usata con Acquapatto, gli effetti aumentano e il campo diventa una palude.", + }, + voltSwitch: { + name: "Invertivolt", + effect: "Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l'attacco.", + }, + struggleBug: { + name: "Entomoblocco", + effect: "Colpisce i nemici opponendo resistenza e riducendo il loro Attacco Speciale.", + }, + bulldoze: { + name: "Battiterra", + effect: "Chi la usa calpesta il terreno e scatena un terremoto che danneggia tutti i Pokémon nei paraggi e ne riduce anche la Velocità.", + }, + frostBreath: { + name: "Alitogelido", + effect: "Chi la usa attacca il bersaglio con un soffio d'aria gelida. Brutto colpo assicurato.", + }, + dragonTail: { + name: "Codadrago", + effect: "Chi la usa fa volar via il bersaglio in modo che venga sostituito. Se il bersaglio è un Pokémon selvatico, la lotta finisce.", + }, + workUp: { + name: "Cuordileone", + effect: "Chi la usa si tira su di morale, aumentando il proprio Attacco e l'Attacco Speciale.", + }, + electroweb: { + name: "Elettrotela", + effect: "Chi la usa attacca i nemici catturandoli con una ragnatela elettrica e riducendone la Velocità.", + }, + wildCharge: { + name: "Sprizzalampo", + effect: "Chi la usa si carica di elettricità per poi scagliarsi sul bersaglio, ma subisce dei danni per il contraccolpo.", + }, + drillRun: { + name: "Giravvita", + effect: "Chi la usa si scaglia sul bersaglio ruotando su se stesso come un trapano perforante. Probabile brutto colpo.", + }, + dualChop: { + name: "Doppiocolpo", + effect: "Chi la usa attacca due volte il bersaglio con dei colpi estremamente forti.", + }, + heartStamp: { + name: "Cuorestampo", + effect: "Chi la usa distrae il nemico con un faccino innocente per poi sferrargli un colpo devastante che può farlo tentennare.", + }, + hornLeech: { + name: "Legnicorno", + effect: "Chi la usa infilza il bersaglio con le corna e assorbe una quantità di PS pari a metà del danno inferto.", + }, + sacredSword: { + name: "Spadasolenne", + effect: "Chi la usa taglia il nemico con una spada magica. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.", + }, + razorShell: { + name: "Conchilama", + effect: "Chi la usa colpisce il bersaglio con il suo guscio affilato. Il colpo può anche ridurre la Difesa del bersaglio.", + }, + heatCrash: { + name: "Marchiafuoco", + effect: "Chi la usa carica con il suo corpo rovente. Più è pesante rispetto al bersaglio e più danni causa.", + }, + leafTornado: { + name: "Vorticerba", + effect: "Chi la usa avvolge e attacca il bersaglio con foglie affilate che possono anche ridurne la precisione.", + }, + steamroller: { + name: "Rulloduro", + effect: "Chi la usa ruota su se stesso ad alta velocità e schiaccia il bersaglio. Può anche farlo tentennare.", + }, + cottonGuard: { + name: "Cotonscudo", + effect: "Chi la usa avvolge il proprio corpo con del cotone molto morbido, proteggendosi e aumentando moltissimo la propria Difesa.", + }, + nightDaze: { + name: "Urtoscuro", + effect: "Chi la usa attacca il bersaglio con un'onda d'urto oscura che può ridurne la precisione.", + }, + psystrike: { + name: "Psicobotta", + effect: "Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.", + }, + tailSlap: { + name: "Spazzasberla", + effect: "Chi la usa colpisce il bersaglio con la sua coda dura da due a cinque volte di fila.", + }, + hurricane: { + name: "Tifone", + effect: "Chi la usa attacca il bersaglio avvolgendolo con un vento fortissimo. Può anche confonderlo.", + }, + headCharge: { + name: "Ricciolata", + effect: "Chi la usa carica il bersaglio con la sua testa in stile afro, ma subisce un po' di danni per il contraccolpo.", + }, + gearGrind: { + name: "Ingracolpo", + effect: "Chi la usa colpisce il bersaglio due volte di fila lanciandogli contro dei dischi d'acciaio.", + }, + searingShot: { + name: "Sparafuoco", + effect: "Chi la usa lancia fiamme scarlatte sui Pokémon intorno a sé. Può anche scottare.", + }, + technoBlast: { + name: "Tecnobotto", + effect: "Chi la usa rilascia un colpo di luce contro il bersaglio. Il tipo varia a seconda del modulo che ha.", + }, + relicSong: { + name: "Cantoantico", + effect: "Chi la usa attacca i nemici intonando un'antica melodia che colpisce il loro spirito. Può anche farli addormentare.", + }, + secretSword: { + name: "Spadamistica", + effect: "Chi la usa attacca il bersaglio tagliandolo con una spada mistica. La misteriosa energia sprigionata provoca danni fisici.", + }, + glaciate: { + name: "Gelamondo", + effect: "Chi la usa attacca i nemici con una folata d'aria gelida e ne riduce anche la Velocità.", + }, + boltStrike: { + name: "Lucesiluro", + effect: "Colpisce il bersaglio con una possente carica elettrica e può anche paralizzarlo.", + }, + blueFlare: { + name: "Fuocoblu", + effect: "Chi la usa attacca il bersaglio avvolgendolo con magnifiche e intense fiamme blu che possono anche scottarlo.", + }, + fieryDance: { + name: "Voldifuoco", + effect: "Chi la usa avvolge il bersaglio tra le fiamme. Può anche aumentare l'Attacco Speciale.", + }, + freezeShock: { + name: "Elettrogelo", + effect: "Chi la usa lancia contro il nemico al turno successivo una sfera di ghiaccio ricoperta di elettricità. Può anche paralizzarlo.", + }, + iceBurn: { + name: "Vampagelida", + effect: "Chi la usa attacca il bersaglio al turno successivo e lo avvolge in un soffio d'aria congelata. Può anche scottarlo.", + }, + snarl: { + name: "Urlorabbia", + effect: "Chi la usa si mette a urlare per un po', riducendo l'Attacco Speciale dei nemici.", + }, + icicleCrash: { + name: "Scagliagelo", + effect: "Chi la usa attacca violentemente il nemico con grosse stalattiti di ghiaccio che possono anche farlo tentennare.", + }, + vCreate: { + name: "Generatore V", + effect: "Chi la usa carica emettendo fiamme ardenti dalla fronte, a costo di una riduzione di Difesa, Difesa Speciale e Velocità.", + }, + fusionFlare: { + name: "Incrofiamma", + effect: "Chi la usa lancia una fiammata enorme. Se usata in combinazione con Incrotuono, il danno provocato dalla mossa aumenta.", + }, + fusionBolt: { + name: "Incrotuono", + effect: "Chi la usa lancia un fulmine enorme. Se usata in combinazione con Incrofiamma, il danno provocato dalla mossa aumenta.", + }, + flyingPress: { + name: "Schiacciatuffo", + effect: "Chi la usa si tuffa sul bersaglio dall'alto. È una mossa di tipo Lotta e Volante allo stesso tempo.", + }, + matBlock: { + name: "Ribaltappeto", + effect: "Chi la usa protegge se stesso e i propri alleati dai danni di mosse nemiche, adoperando un tappetino come scudo. Non è efficace contro mosse di stato.", + }, + belch: { + name: "Rutto", + effect: "Chi la usa attacca il bersaglio con un rutto potente. Per utilizzare questa mossa, il Pokémon deve mangiare la bacca che possiede.", + }, + rototiller: { + name: "Aracampo", + effect: "Chi la usa dissoda la terra per far crescere meglio l'erba. Questa mossa aumenta l'attacco e l'attacco speciale dei Pokémon di tipo Erba.", + }, + stickyWeb: { + name: "Rete Vischiosa", + effect: "Chi la usa intreccia una rete appiccicosa attorno alla squadra avversaria, diminuendo la Velocità dei Pokémon nemici che entreranno in campo.", + }, + fellStinger: { + name: "Pungiglione", + effect: "L'Attacco di chi la usa aumenta notevolmente se grazie alla mossa il bersaglio va KO.", + }, + phantomForce: { + name: "Spettrotuffo", + effect: "Chi la usa scompare improvvisamente per attaccare poi nel turno seguente. Questa mossa neutralizza le difese del bersaglio.", + }, + trickOrTreat: { + name: "Halloween", + effect: "Il bersaglio viene invitato a festeggiare Halloween e aggiunge così al proprio tipo anche il tipo Spettro.", + }, + nobleRoar: { + name: "Urlo", + effect: "Chi la usa emette un urlo potente che intimidisce il bersaglio, riducendone l'Attacco e l'Attacco Speciale.", + }, + ionDeluge: { + name: "Pioggiaplasma", + effect: "Chi la usa disperde delle particelle elettrizzate che trasformano le mosse di tipo Normale in mosse di tipo Elettro.", + }, + parabolicCharge: { + name: "Caricaparabola", + effect: "Chi la usa attacca tutto ciò che lo circonda e recupera PS pari alla metà del danno inflitto.", + }, + forestsCurse: { + name: "Boscomalocchio", + effect: "Il Pokémon invoca la maledizione del bosco sul bersaglio, che acquisisce così anche il tipo Erba.", + }, + petalBlizzard: { + name: "Fiortempesta", + effect: "Infligge danni ai Pokémon che ha intorno attaccandoli con una tempesta di fiori.", + }, + freezeDry: { + name: "Liofilizzazione", + effect: "Chi la usa raffredda rapidamente il bersaglio. Può anche congelarlo. Questa mossa è superefficace contro i Pokémon Acqua.", + }, + disarmingVoice: { + name: "Incantavoce", + effect: "Chi la usa infligge un danno spirituale ai nemici nei paraggi con una voce suadente. L'attacco andrà immancabilmente a segno.", + }, + partingShot: { + name: "Monito", + effect: "Nessuna descrizione disponibile.", + }, + topsyTurvy: { + name: "Sottosopra", + effect: "Inverte tutte le modifiche alle statistiche del Pokémon bersaglio.", + }, + drainingKiss: { + name: "Assorbibacio", + effect: "Un bacio fatato che assorbe le energie al nemico.", + }, + craftyShield: { + name: "Truccodifesa", + effect: "Chi la usa protegge se stesso e i suoi alleati usando un potere misterioso. Non blocca le mosse che infliggono danno.", + }, + flowerShield: { + name: "Fiordifesa", + effect: "Grazie a un misterioso potere, aumenta la Difesa di tutti i Pokémon di tipo Erba presenti in campo.", + }, + grassyTerrain: { + name: "Campo Erboso", + effect: "Per cinque turni trasforma il terreno di lotta in un campo erboso, facendo recuperare PS ai Pokémon a terra in ogni turno.", + }, + mistyTerrain: { + name: "Campo Nebbioso", + effect: "Per cinque turni trasforma il terreno di lotta in un campo nebbioso, impedendo ai Pokémon a terra di essere colpiti da problemi di stato.", + }, + electrify: { + name: "Elettrocontagio", + effect: "Se si contagia il bersaglio prima che usi la sua mossa, per quel turno le sue mosse saranno di tipo Elettro.", + }, + playRough: { + name: "Carineria", + effect: "Chi la usa attacca il bersaglio con delle carinerie. Può anche ridurne l'attacco.", + }, + fairyWind: { + name: "Vento di Fata", + effect: "Attacca con un forte vento fatato.", + }, + moonblast: { + name: "Forza Lunare", + effect: "Accumula la forza proveniente dalla luna e la libera sul nemico. Può ridurre l'Attacco Speciale.", + }, + boomburst: { + name: "Ondaboato", + effect: "Colpisce i Pokémon che ha intorno con la forza di un boato distruttivo.", + }, + fairyLock: { + name: "Blocco Fatato", + effect: "Bloccando il campo di battaglia, chi la usa impedisce a tutti i Pokémon di fuggire durante il prossimo turno.", + }, + kingsShield: { + name: "Scudo Reale", + effect: "L'utilizzatore assume una posizione difensiva mentre si difende. Riduce inoltre l'Attacco di ogni utilizzatore di mosse da contatto.", + }, + playNice: { + name: "Simpatia", + effect: "Chi la usa diventa amico del bersaglio, rabbonendolo e riducendone così l'Attacco.", + }, + confide: { + name: "Confidenza", + effect: "Chi la usa svela dei segreti al bersaglio, distraendolo e riducendone l'Attacco Speciale.", + }, + diamondStorm: { + name: "Diamantempesta", + effect: "Colpisce i nemici che ha intorno con una tempesta di diamanti. Può anche aumentare la Difesa di chi la usa.", + }, + steamEruption: { + name: "Vaporscoppio", + effect: "Travolge il bersaglio con un'ondata di vapore rovente che può anche scottarlo.", + }, + hyperspaceHole: { + name: "Forodimensionale", + effect: "Chi la usa, sfrutta un passaggio interdimensionale per comparire a fianco del bersaglio e colpirlo, eludendo mosse come Protezione e Individua.", + }, + waterShuriken: { + name: "Acqualame", + effect: "Chi la usa attacca sempre per primo, colpendo il bersaglio con uno shuriken di muco da due a cinque volte di fila.", + }, + mysticalFire: { + name: "Magifiamma", + effect: "Colpisce il bersaglio soffiandogli contro delle fiammate incredibilmente roventi, riducendone l'Attacco Speciale.", + }, + spikyShield: { + name: "Agodifesa", + effect: "Protegge dagli attacchi, riducendo inoltre i PS dei Pokémon che entrano in contatto con chi la usa.", + }, + aromaticMist: { + name: "Nebularoma", + effect: "Aumenta la Difesa Speciale di un alleato tramite un misterioso aroma.", + }, + eerieImpulse: { + name: "Elettromistero", + effect: "Il corpo dell'utilizzatore genera un impulso misterioso. Esponendovi il bersaglio, ne riduce di molto l'Attacco Speciale.", + }, + venomDrench: { + name: "Velenotrappola", + effect: "Emette un liquido particolare che riduce l'Attacco, l'Attacco Speciale e la Velocità dei nemici avvelenati intorno a chi la usa.", + }, + powder: { + name: "Pulviscoppio", + effect: "Il bersaglio viene coperto da un pulviscolo che esplode danneggiandolo se questi utilizza una mossa di tipo Fuoco nello stesso turno.", + }, + geomancy: { + name: "Geocontrollo", + effect: "Un'energia pura forza della natura si sprigiona per tutto il campo.", + }, + magneticFlux: { + name: "Controllo Polare", + effect: "Tramite il controllo dei campi magnetici, aumenta la Difesa e la Difesa Speciale dei Pokémon alleati dotati dell'abilità Più o Meno.", + }, + happyHour: { + name: "Cuccagna", + effect: "Questa mossa raddoppia la ricompensa ricevuta dopo aver vinto una lotta.", + }, + electricTerrain: { + name: "Campo Elettrico", + effect: "Per cinque turni trasforma il terreno di lotta in un campo elettrico, impedendo ai Pokémon a terra di addormentarsi.", + }, + dazzlingGleam: { + name: "Magibrillio", + effect: "Emette una luce potentissima che infligge danni al bersaglio.", + }, + celebrate: { + name: "Auguri", + effect: "Il Pokémon ti fa gli auguri nel tuo giorno speciale", + }, + holdHands: { + name: "Mano nella mano", + effect: "Il Pokémon che la usa e un alleato si prendono per mano e fanno salti di gioia.", + }, + babyDollEyes: { + name: "Occhioni Teneri", + effect: "Chi la usa rivolge i propri occhioni languidi al bersaglio, riducendone l'Attacco. Colpisce sempre per primo.", + }, + nuzzle: { + name: "Elettrococcola", + effect: "Nonostante il tenero nome è una mossa piuttosto pericolosa.", + }, + holdBack: { + name: "Riguardo", + effect: "Chi la usa attacca il bersaglio, modulando il colpo in modo da lasciargli almeno un PS.", + }, + infestation: { + name: "Assillo", + effect: "Chi la usa lancia un attacco che tormenta il bersaglio per quattro o cinque turni, durante i quali gli impedisce di fuggire.", + }, + powerUpPunch: { + name: "Crescipugno", + effect: "Rende i pugni più duri a ogni colpo inferto. Se i pugni vanno a segno, aumenta l'Attacco.", + }, + oblivionWing: { + name: "Ali del Fato", + effect: "Chi la usa assorbe energia dal bersaglio recuperando una quantità di PS pari a più della metà del danno inferto.", + }, + thousandArrows: { + name: "Mille Frecce", + effect: "Colpisce anche i Pokémon che fluttuano in aria. I nemici nei paraggi vengono scaraventati a terra.", + }, + thousandWaves: { + name: "Mille Onde", + effect: "Un’onda strisciante investe i nemici intorno impedendo loro di fuggire.", + }, + landsWrath: { + name: "Forza Tellurica", + effect: "Chi la usa raccoglie energia tellurica e ne concentra il potere sui nemici che ha intorno danneggiandoli.", + }, + lightOfRuin: { + name: "Luce Nefasta", + effect: "Traendo potere dal Fiore Eterno, chi lo utilizza spara un potente raggio di luce. Ciò danneggia parecchio anche chi la usa.", + }, + originPulse: { + name: "Primopulsar", + effect: "Attacca i nemici intorno colpendoli con miriadi di raggi di luce blu.", + }, + precipiceBlades: { + name: "Spade Telluriche", + effect: "Attacca i nemici intorno trasformando la potenza della terra in lame affilate.", + }, + dragonAscent: { + name: "Ascesa del Drago", + effect: "Permette di proiettarsi in aria e fiondarsi sul bersaglio attaccando ad altissima velocità. Riduce la Difesa e la Difesa Speciale di chi la usa.", + }, + hyperspaceFury: { + name: "Urtodimensionale", + effect: "Permette di attaccare ripetutamente grazie ai molti arti, ignorando mosse come Protezione o Individua. Riduce la Difesa di chi la usa.", + }, + breakneckBlitzPhysical: { + name: "Carica Travolgente", + effect: "Grazie al Potere Z, chi la usa accumula energia e si lancia a tutta forza contro il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + breakneckBlitzSpecial: { + name: "Carica Travolgente", + effect: "Dati Mancanti", + }, + allOutPummelingPhysical: { + name: "Iperscarica Furiosa", + effect: "Chi la usa scaglia sul bersaglio una scarica di colpi carichi di Potere Z. La potenza varia a seconda della mossa su cui si basa.", + }, + allOutPummelingSpecial: { + name: "Iperscarica Furiosa", + effect: "Dati Mancanti", + }, + supersonicSkystrikePhysical: { + name: "Picchiata Devastante", + effect: "Chi la usa si serve del Potere Z per alzarsi in volo e attaccare il bersaglio piombandogli addosso. La potenza varia a seconda della mossa su cui si basa.", + }, + supersonicSkystrikeSpecial: { + name: "Picchiata Devastante", + effect: "Dati Mancanti", + }, + acidDownpourPhysical: { + name: "Acidiluvio Corrosivo", + effect: "Chi la usa sfrutta il Potere Z per creare una palude velenosa che sommerge il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + acidDownpourSpecial: { + name: "Acidiluvio Corrosivo", + effect: "Dati Mancanti", + }, + tectonicRagePhysical: { + name: "Furore della Terra", + effect: "Grazie al Potere Z, chi la usa si tuffa nelle viscere della terra e colpisce con violenza il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + tectonicRageSpecial: { + name: "Furore della Terra", + effect: "Dati Mancanti", + }, + continentalCrushPhysical: { + name: "Gigamacigno Polverizzante", + effect: "Grazie al Potere Z, chi la usa crea un masso enorme e lo lancia sul bersaglio schiacciandolo. La potenza varia a seconda della mossa su cui si basa.", + }, + continentalCrushSpecial: { + name: "Gigamacigno Polverizzante", + effect: "Dati Mancanti", + }, + savageSpinOutPhysical: { + name: "Bozzolo Fatale", + effect: "Chi la usa sfrutta il potere Z per creare dei filamenti che intrappolano il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + savageSpinOutSpecial: { + name: "Bozzolo Fatale", + effect: "Dati Mancanti", + }, + neverEndingNightmarePhysical: { + name: "Abbraccio Spettrale", + effect: "Grazie al Potere Z, chi la usa intrappola il bersaglio in una morsa generata dal proprio rancore. La potenza varia a seconda della mossa su cui si basa.", + }, + neverEndingNightmareSpecial: { + name: "Abbraccio Spettrale", + effect: "Dati Mancanti", + }, + corkscrewCrashPhysical: { + name: "Spirale Perforante", + effect: "Grazie al Potere Z, chi la usa vortica su se stesso e si scaglia sul bersaglio con tutte le sue forze. La potenza varia a seconda della mossa su cui si basa", + }, + corkscrewCrashSpecial: { + name: "Spirale Perforante", + effect: "Dati Mancanti", + }, + infernoOverdrivePhysical: { + name: "Fiammobomba Detonante", + effect: "Chi la usa sfrutta il Potere Z per emettere fiamme incandescenti che inceneriscono il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + infernoOverdriveSpecial: { + name: "Fiammobomba Detonante", + effect: "Dati Mancanti", + }, + hydroVortexPhysical: { + name: "Idrovortice Abissale", + effect: "Grazie al Potere Z, chi la usa crea un enorme vortice che inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + hydroVortexSpecial: { + name: "Idrovortice Abissale", + effect: "Dati Mancanti", + }, + bloomDoomPhysical: { + name: "Floriscoppio Sfolgorante", + effect: "Grazie al Potere Z, chi la usa concentra l'energia delle piante per scatenare un potente attacco. La potenza varia a seconda della mossa su cui si basa.", + }, + bloomDoomSpecial: { + name: "Floriscoppio Sfolgorante", + effect: "Dati Mancanti", + }, + gigavoltHavocPhysical: { + name: "Gigascarica Folgorante", + effect: "Grazie al Potere Z, chi la usa genera una fortissima scarica elettrica che colpisce il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + gigavoltHavocSpecial: { + name: "Gigascarica Folgorante", + effect: "Dati Mancanti", + }, + shatteredPsychePhysical: { + name: "Impatto Psicocinetico", + effect: "Chi la usa si serve del Potere Z per manipolare la mente del bersaglio causando ingenti danni. La potenza varia a seconda della mossa su cui si basa.", + }, + shatteredPsycheSpecial: { + name: "Impatto Psicocinetico", + effect: "Dati Mancanti", + }, + subzeroSlammerPhysical: { + name: "Criodistruzione Polare", + effect: "Chi la usa sfrutta il Potere Z per far calare di colpo la temperatura e congelare il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + subzeroSlammerSpecial: { + name: "Criodistruzione Polare", + effect: "Dati Mancanti", + }, + devastatingDrakePhysical: { + name: "Dragoschianto Finale", + effect: "Grazie al Potere Z, chi la usa materializza la propria aura per colpire con forza il nemico. La potenza varia a seconda della mossa su cui si basa.", + }, + devastatingDrakeSpecial: { + name: "Dragoschianto Finale", + effect: "Dati Mancanti", + }, + blackHoleEclipsePhysical: { + name: "Buco Nero del Non Ritorno", + effect: "Chi la usa si serve del Potere Z per concentrare energia negativa con cui inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + blackHoleEclipseSpecial: { + name: "Buco Nero del Non Ritorno", + effect: "Dati Mancanti", + }, + twinkleTacklePhysical: { + name: "Astroimpatto Fatato", + effect: "Grazie al Potere Z, chi la usa crea una dimensione fatata in cui fa ciò che vuole del proprio bersaglio. La potenza varia a seconda della mossa su cui si basa.", + }, + twinkleTackleSpecial: { + name: "Astroimpatto Fatato", + effect: "Dati Mancanti", + }, + catastropika: { + name: "Super Pikaboom", + effect: "Grazie al Potere Z, Pikachu accumula un'enorme quantità di energia elettrica e si lancia contro il bersaglio a tutta forza.", + }, + shoreUp: { + name: "Sabbiaccumulo", + effect: "Chi la usa recupera metà dei propri PS massimi. Durante le tempeste di sabbia ne recupera di più.", + }, + firstImpression: { + name: "Schermaglia", + effect: "È una mossa molto potente, ma funziona solo appena scesi in campo.", + }, + banefulBunker: { + name: "Fortino", + effect: "L'utilizzatore si protegge e se l'avversario attacca con una mossa da contatto viene avvelenato.", + }, + spiritShackle: { + name: "Cucitura d'Ombra", + effect: "Chi la usa attacca il bersaglio e fissa la sua ombra a terra impedendogli di fuggire.", + }, + darkestLariat: { + name: "Braccioteso", + effect: "Chi la usa attacca il bersaglio mulinando gli arti. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.", + }, + sparklingAria: { + name: "Canto Effimero", + effect: "Chi la usa si mette a cantare emettendo tanti palloncini d’acqua. I Pokémon che subiscono danni da questa mossa guariscono dalle scottature.", + }, + iceHammer: { + name: "Martelgelo", + effect: "Infligge danni al bersaglio colpendolo con un pugno molto potente. Riduce la velocità di chi la usa.", + }, + floralHealing: { + name: "Cura Floreale", + effect: "Fa recuperare metà dei PS massimi al bersaglio. È più efficace quando il terreno di lotta è nello stato di Campo Erboso.", + }, + highHorsepower: { + name: "Forza Equina", + effect: "Il Pokémon travolge il bersaglio con un attacco possente.", + }, + strengthSap: { + name: "Assorbiforza", + effect: "Fa recuperare una quantità di PS pari all'Attacco del bersaglio, che vedrà diminuire questa statistica.", + }, + solarBlade: { + name: "Lama Solare", + effect: "Il Pokémon assorbe la luce al primo turno per poi condensarla in una lama e attaccare al turno successivo.", + }, + leafage: { + name: "Fogliame", + effect: "Attacca il bersaglio con delle foglie.", + }, + spotlight: { + name: "Riflettore", + effect: "Nessuna descrizione disponibile.", + }, + toxicThread: { + name: "Velenotela", + effect: "Avvelena il bersaglio avvolgendolo con filamenti tossici e ne riduce la Velocità.", + }, + laserFocus: { + name: "Concentrazione", + effect: "Chi la usa si concentra e nel turno successivo metterà sicuramente a segno un brutto colpo.", + }, + gearUp: { + name: "Marciainpiù", + effect: "Dà una marcia in più agli alleati con le abilità Meno o Più aumentandone l’Attacco e l’Attacco Speciale.", + }, + throatChop: { + name: "Colpo Infernale", + effect: "Chi viene colpito da questa mossa prova un dolore lancinante e non può più usare mosse basate sul suono per due turni.", + }, + pollenPuff: { + name: "Sferapolline", + effect: "Chi la usa attacca il nemico con una sfera esplosiva. Se colpisce degli alleati, fa recuperare loro dei PS.", + }, + anchorShot: { + name: "Colpo d'Ancora", + effect: "Chi la usa colpisce il nemico con un'ancora e lo intrappola nella catena impedendogli di fuggire.", + }, + psychicTerrain: { + name: "Campo Psichico", + effect: "Per cinque turni il terreno entra nello stato di Campo Psichico: i Pokémon a terra non subiscono mosse ad alta priorità e la potenza delle mosse di tipo Psico aumenta.", + }, + lunge: { + name: "Assalto", + effect: "Chi la usa si lancia con tutte le sue forze sul bersaglio e ne riduce l'Attacco.", + }, + fireLash: { + name: "Frusta di Fuoco", + effect: "Colpisce il bersaglio con una frusta infuocata e ne riduce la Difesa.", + }, + powerTrip: { + name: "Tracotanza", + effect: "Chi la usa attacca il bersaglio sfoggiando la propria forza. Più le sue statistiche sono state aumentate, più la mossa è potente.", + }, + burnUp: { + name: "Ultima Fiamma", + effect: "Chi la usa attacca sfruttando tutta la sua potenza incendiaria per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Fuoco.", + }, + speedSwap: { + name: "Velociscambio", + effect: "Chi la usa scambia la propria Velocità con quella del bersaglio.", + }, + smartStrike: { + name: "Sottilcorno", + effect: "Chi la usa colpisce il bersaglio con un corno appuntito. Questa mossa va sempre a segno.", + }, + purify: { + name: "Purificazione", + effect: "Il bersaglio della mossa viene curato dalle alterazioni di stato inoltre l'utilizzatore ripristina i propri PS se la mossa va a segno.", + }, + revelationDance: { + name: "Mutadanza", + effect: "Chi la usa si lancia in una danza e attacca il nemico con tutte le sue forze. Il tipo della mossa corrisponde al tipo del Pokémon che la usa.", + }, + coreEnforcer: { + name: "Nucleocastigo", + effect: "Il bersaglio subisce dei danni e, se ha già agito nel turno, perde la sua abilità.", + }, + tropKick: { + name: "Tropicalcio", + effect: "Chi la usa colpisce il bersaglio con un potente calcio sfruttando una tecnica originaria dei paesi tropicali e ne riduce l'Attacco.", + }, + instruct: { + name: "Imposizione", + effect: "Nessuna descrizione disponibile.", + }, + beakBlast: { + name: "Cannonbecco", + effect: "Chi la usa arroventa il proprio becco e poi attacca. Se un Pokémon lo colpisce con un attacco diretto mentre sta accumulando calore, resta scottato.", + }, + clangingScales: { + name: "Clamorsquame", + effect: "Chi la usa attacca il bersaglio con un suono fortissimo che genera sfregando le scaglie del corpo. Dopo aver attaccato, la sua Difesa diminuisce.", + }, + dragonHammer: { + name: "Marteldrago", + effect: "Chi la usa infligge danni al bersaglio usando il proprio corpo come se fosse un martello.", + }, + brutalSwing: { + name: "Vorticolpo", + effect: "Chi la usa infligge danni intorno a sé facendo ruotare una parte del suo corpo.", + }, + auroraVeil: { + name: "Velaurora", + effect: "Questa mossa riduce i danni provocati dalle mosse fisiche e speciali per 5 turni. Può essere usata solo mentre grandina.", + }, + sinisterArrowRaid: { + name: "Dardoassalto Spettrale", + effect: "Grazie al Potere Z, Decidueye crea una formazione di frecce che colpisce il bersaglio a gran velocità.", + }, + maliciousMoonsault: { + name: "Iperschianto delle Tenebre", + effect: "Grazie al Potere Z, Incineroar richiama tutta la sua forza e si lancia impetuosamente sul bersaglio.", + }, + oceanicOperetta: { + name: "Sinfonia del Mare", + effect: "Grazie al Potere Z, Primarina concentra un’enorme quantità d’acqua e attacca il bersaglio con una potenza smisurata.", + }, + guardianOfAlola: { + name: "Collera del Guardiano", + effect: "Grazie al Potere Z, il Nume Locale evoca l’energia di Alola e attacca con grande potenza, facendo perdere al bersaglio la maggior parte dei suoi PS.", + }, + soulStealing7StarStrike: { + name: "Colpo Eptastellare Rubanima", + effect: "Grazie al Potere Z, Marshadow fa appello a tutte le sue forze e colpisce il bersaglio con una scarica di calci e pugni potentissimi.", + }, + stokedSparksurfer: { + name: "Elettrosurf Folgorante", + effect: "Grazie al Potere Z, il Raichu di Alola attacca con tutta la sua potenza e paralizza il bersaglio.", + }, + pulverizingPancake: { + name: "Adesso Faccio sul Serio", + effect: "Grazie al Potere Z, Snorlax tira fuori la grinta e, muovendo energicamente il suo enorme corpo, attacca il bersaglio con tutta la sua forza.", + }, + extremeEvoboost: { + name: "Potenziamento Eevolutivo", + effect: "Grazie al Potere Z, Eevee evoca a sé tutta l’energia delle sue possibili evoluzioni e aumenta di molto le sue statistiche", + }, + genesisSupernova: { + name: "Supernova delle Origini", + effect: "Grazie al Potere Z, Mew attacca il bersaglio con tutta la sua forza e genera un Campo Psichico a terra.", + }, + shellTrap: { + name: "Gusciotrappola", + effect: "Il guscio del Pokémon diventa una trappola. Se un nemico lo colpisce con una mossa fisica, innesca un'esplosione e subisce dei danni.", + }, + fleurCannon: { + name: "Cannonfiore", + effect: "Colpisce il bersaglio con un potente raggio, ma riduce di molto l'Attacco Speciale di chi la usa.", + }, + psychicFangs: { + name: "Psicozanna", + effect: "L'utilizzatore morde il bersaglio, rompendo barriere come Schermoluce e Riflesso.", + }, + stompingTantrum: { + name: "Battipiedi", + effect: "Chi la usa attacca battendo i piedi per la rabbia. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.", + }, + shadowBone: { + name: "Ossotetro", + effect: "Chi la usa colpisce il bersaglio con un osso in cui alberga uno spirito. Può anche ridurne la Difesa.", + }, + accelerock: { + name: "Rocciarapida", + effect: "Chi la usa attacca il bersaglio colpendolo a tutta velocità. Questa mossa ha priorità alta.", + }, + liquidation: { + name: "Idrobreccia", + effect: "Chi la usa colpisce il bersaglio con la forza dell'acqua. Può anche ridurne la Difesa.", + }, + prismaticLaser: { + name: "Prismalaser", + effect: "Chi la usa proietta dei potenti raggi di luce grazie alla potenza del suo prisma, ma non può agire nel turno successivo.", + }, + spectralThief: { + name: "Ombrafurto", + effect: "Chi la usa ruba gli aumenti delle statistiche del bersaglio, poi si nasconde nella sua ombra e lo attacca.", + }, + sunsteelStrike: { + name: "Astrocarica", + effect: "Chi la usa travolge il bersaglio con la potenza di una meteora. Questo attacco ignora l'abilità del bersaglio.", + }, + moongeistBeam: { + name: "Raggio d'Ombra", + effect: "Chi la usa proietta sul bersaglio un misterioso raggio di luce. Questo attacco ignora l'abilità del bersaglio.", + }, + tearfulLook: { + name: "Occhionilucidi", + effect: "Chi la usa guarda il bersaglio con gli occhi pieni di lacrime e gli fa perdere lo spirito combattivo, riducendone l'Attacco e l'Attacco Speciale", + }, + zingZap: { + name: "Elettropizzico", + effect: "Chi la usa colpisce il bersaglio investendolo con una potente scarica elettrica che può anche farlo tentennare.", + }, + naturesMadness: { + name: "Ira della Natura", + effect: "Scatena l’ira della natura sul bersaglio e ne dimezza i PS.", + }, + multiAttack: { + name: "Multiattacco", + effect: "Chi la usa si avvolge in un potente campo energetico e colpisce il bersaglio. Il tipo della mossa varia in base alla ROM installata.", + }, + tenMillionVoltThunderbolt: { + name: "Iperfulmine", + effect: "Grazie al Potere Z, Pikachu con il berretto scatena una potentissima scarica elettrica. Probabile brutto colpo.", + }, + mindBlown: { + name: "Sbalorditesta", + effect: "Chi la usa fa esplodere la propria testa per attaccare tutti i Pokémon che ha intorno, ma subisce danni.", + }, + plasmaFists: { + name: "Pugni Plasma", + effect: "Chi la usa attacca con pugni carichi di elettricità. Trasforma le mosse di tipo Normale in mosse di tipo Elettro.", + }, + photonGeyser: { + name: "Geyser Fotonico", + effect: "Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.", + }, + lightThatBurnsTheSky: { + name: "Fotodistruzione Apocalittica", + effect: "Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.", + }, + searingSunrazeSmash: { + name: "Supercollisione Solare", + effect: "Grazie al Potere Z, Solgaleo attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.", + }, + menacingMoonrazeMaelstrom: { + name: "Deflagrazione Lunare", + effect: "Grazie al Potere Z, Lunala attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.", + }, + letsSnuggleForever: { + name: "Dolcesacco di Botte", + effect: "Grazie al Potere Z, Mimikyu fa appello a tutte le sue forze e attacca il bersaglio tempestandolo di colpi.", + }, + splinteredStormshards: { + name: "Litotempesta Radiale", + effect: "Grazie al Potere Z, Lycanroc attacca il bersaglio con tutta la sua forza. Questa mossa annulla anche gli eventuali campi attivi.", + }, + clangorousSoulblaze: { + name: "Dracofonia Divampante", + effect: "Grazie al Potere Z, Kommo-o attacca i nemici con tutta la sua forza. Inoltre, aumenta le proprie statistiche.", + }, + zippyZap: { + name: "Sprintaboom", + effect: "Un attacco elettrico ad altissima velocità. Questa mossa ha priorità alta e infligge sicuramente un brutto colpo.", + }, + splishySplash: { + name: "Surfasplash", + effect: "Colpisce il bersaglio con un'enorme onda caricata di elettricità che può anche paralizzarlo.", + }, + floatyFall: { + name: "Piombaflap", + effect: "Chi la usa si libra in aria per poi piombare addosso al bersaglio. Può anche far tentennare il Pokémon colpito.", + }, + pikaPapow: { + name: "Pikasaetta", + effect: "Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Pikachu e l'Allenatore.", + }, + bouncyBubble: { + name: "Bollaslurp", + effect: "Chi la usa colpisce il bersaglio con una raffica di bolle, per poi assorbirle e recuperare una quantità di PS pari alla metà del danno inferto.", + }, + buzzyBuzz: { + name: "Elettrozap", + effect: "Colpisce il bersaglio con una scarica elettrica che lo paralizza.", + }, + sizzlySlide: { + name: "Fiammabam", + effect: "Chi la usa viene avvolto dalle fiamme e colpisce il bersaglio con forza, scottandolo.", + }, + glitzyGlow: { + name: "Auraswoosh", + effect: "Colpisce il bersaglio ripetutamente con onde di forza psicocinetica e innalza una barriera fantastica che riduce i danni degli attacchi speciali nemici.", + }, + baddyBad: { + name: "Zona Buiabuia", + effect: "Chi la usa scatena l’oscurità che ha dentro, colpendo il bersaglio e innalzando una barriera fantastica che riduce i danni degli attacchi fisici nemici.", + }, + sappySeed: { + name: "Bombafrush", + effect: "Fa crescere un'enorme pianta che colpisce il bersaglio con una pioggia di semi. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.", + }, + freezyFrost: { + name: "Scricchiagelo", + effect: "Chi la usa attacca il bersaglio con un cristallo formato da una nube nera congelata, che annulla ogni modifica alle statistiche di tutti i Pokémon.", + }, + sparklySwirl: { + name: "Sbrilluccibufera", + effect: "Chi la usa attacca il bersaglio avvolgendolo in un turbine di profumi soffocanti e cura i problemi di stato propri e degli alleati.", + }, + veeveeVolley: { + name: "Eeveempatto", + effect: "Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Eevee e l'Allenatore.", + }, + doubleIronBash: { + name: "Pugni Corazzati", + effect: "L'utilizzatore ruota, centrando il dado esagonale nel petto, quindi colpisce con le braccia due volte di seguito. Ciò potrebbe anche far tentennare il bersaglio.", + }, + maxGuard: { + name: "Dynabarriera", + effect: "Questa mossa permette di eludere tutti gli attacchi. Se usata in successione può fallire.", + }, + dynamaxCannon: { + name: "Cannone Dynamax", + effect: "Il Pokémon attacca emettendo dal suo nucleo l'energia concentrata nel corpo.", + }, + snipeShot: { + name: "Tiromirato", + effect: "Permette di attaccare il bersaglio ignorando gli effetti di mosse e abilità che alterano le mosse", + }, + jawLock: { + name: "Morsostretto", + effect: "Impedisce a chi la usa e al bersaglio di essere sostituiti finché non vanno KO. L'effetto svanisce se uno dei due lascia il campo.", + }, + stuffCheeks: { + name: "Riempiguance", + effect: "Se chi la usa ha con sé una bacca, la mangia e la sua Difesa aumenta di molto.", + }, + noRetreat: { + name: "Spalle al Muro", + effect: "Il Pokémon aumenta tutte le sue statistiche ma non può più fuggire o essere sostituito.", + }, + tarShot: { + name: "Colpocatrame", + effect: "Chi la usa getta catrame appiccicoso sul bersaglio abbassandone la Velocità e rendendolo vulnerabile al tipo Fuoco.", + }, + magicPowder: { + name: "Magipolvere", + effect: "Chi la usa getta addosso al bersaglio una polvere magica che lo rende di tipo Psico.", + }, + dragonDarts: { + name: "Dragofrecce", + effect: "L'utilizzatore attacca due volte usando Dreepy. Se ci sono due obiettivi, questa mossa colpisce una volta ogni obiettivo.", + }, + teatime: { + name: "Ora del Tè", + effect: "Chi la usa invita tutti i Pokémon in campo a prendere il tè. Quelli che hanno con sé una bacca la mangiano.", + }, + octolock: { + name: "Tentacolock", + effect: "Chi la usa immobilizza il bersaglio impedendogli di fuggire e ne diminuisce la Difesa e la Difesa Speciale a ogni turno.", + }, + boltBeak: { + name: "Beccoshock", + effect: "Chi la usa attacca il bersaglio con il becco appuntito carico d'elettricità. Se attacca per primo, la potenza della mossa raddoppia.", + }, + fishiousRend: { + name: "Branchiomorso", + effect: "Chi la usa morde il bersaglio con le dure branchie. Se attacca per primo, la potenza della mossa raddoppia.", + }, + courtChange: { + name: "Cambiocampo", + effect: "Una forza misteriosa inverte gli effetti attivi sul campo alleato e sul campo avversario.", + }, + maxFlare: { + name: "Dynafiammata", + effect: "Un attacco di tipo Fuoco che può essere eseguito dai Pokémon dynamaxizzati. Intensifica i raggi solari per cinque turni.", + }, + maxFlutterby: { + name: "Dynainsetto", + effect: "Un attacco di tipo Coleottero che può essere eseguito dai Pokémon dynamaxizzati. Riduce l'Attacco Speciale degli avversari.", + }, + maxLightning: { + name: "Dynasaetta", + effect: "Un attacco di tipo Elettro che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Elettrico.", + }, + maxStrike: { + name: "Dynattacco", + effect: "Un attacco di tipo Normale che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Velocità degli avversari.", + }, + maxKnuckle: { + name: "Dynapugno", + effect: "Un attacco di tipo Lotta che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l'Attacco degli alleati.", + }, + maxPhantasm: { + name: "Dynavuoto", + effect: "Un attacco di tipo Spettro che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa degli avversari.", + }, + maxHailstorm: { + name: "Dynagelo", + effect: "Un attacco di tipo Ghiaccio che può essere eseguito dai Pokémon dynamaxizzati. Causa una nevicata che dura per cinque turni.", + }, + maxOoze: { + name: "Dynacorrosione", + effect: "Un attacco di tipo Veleno che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l'Attacco Speciale degli alleati.", + }, + maxGeyser: { + name: "Dynaflusso", + effect: "Un attacco di tipo Acqua che può essere eseguito dai Pokémon dynamaxizzati. Provoca una forte pioggia per cinque turni.", + }, + maxAirstream: { + name: "Dynajet", + effect: "Un attacco di tipo Volante che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Velocità degli alleati.", + }, + maxStarfall: { + name: "Dynafata", + effect: "Un attacco di tipo Folletto che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Nebbioso.", + }, + maxWyrmwind: { + name: "Dynadragone", + effect: "Un attacco di tipo Drago che può essere eseguito dai Pokémon dynamaxizzati. Riduce l'Attacco degli avversari.", + }, + maxMindstorm: { + name: "Dynapsiche", + effect: "Un attacco di tipo Psico che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Psichico.", + }, + maxRockfall: { + name: "Dynamacigno", + effect: "Un attacco di tipo Roccia che può essere eseguito dai Pokémon dynamaxizzati. Causa una tempesta di sabbia per cinque turni.", + }, + maxQuake: { + name: "Dynasisma", + effect: "Un attacco di tipo Terra che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa Speciale degli alleati.", + }, + maxDarkness: { + name: "Dynatenebre", + effect: "Un attacco di tipo Buio che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa Speciale degli avversari.", + }, + maxOvergrowth: { + name: "Dynaflora", + effect: "Un attacco di tipo Erba che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Erboso.", + }, + maxSteelspike: { + name: "Dynametallo", + effect: "Un attacco di tipo Acciaio che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa degli alleati.", + }, + clangorousSoul: { + name: "Dracofonia", + effect: "Chi la usa sacrifica un po' dei suoi PS per aumentare tutte le sue statistiche.", + }, + bodyPress: { + name: "Schiacciacorpo", + effect: "Chi la usa schiaccia il bersaglio con il suo corpo. Più la sua Difesa è alta, maggiori sono i danni inflitti.", + }, + decorate: { + name: "Decorazione", + effect: "Chi la usa agghinda il bersaglio con delle decorazioni aumentandone di molto l'Attacco e l'Attacco Speciale.", + }, + drumBeating: { + name: "Tamburattacco", + effect: "Chi la usa percuote il proprio tamburo per controllarne le radici e attaccare il bersaglio, riducendone la Velocità.", + }, + snapTrap: { + name: "Tagliola", + effect: "Chi la usa intrappola il bersaglio in una tagliola e lo attacca per quattro o cinque turni.", + }, + pyroBall: { + name: "Palla Infuocata", + effect: "l Pokémon attacca con una palla creata incendiando una piccola pietra. Può anche scottare il bersaglio.", + }, + behemothBlade: { + name: "Taglio Maestoso", + effect: "Il Pokémon brandisce un'enorme spada e attacca vibrando un poderoso fendente.", + }, + behemothBash: { + name: "Colpo Maestoso", + effect: "Il Pokémon trasforma il suo corpo in un robusto scudo e attacca caricando con forza.", + }, + auraWheel: { + name: "Ruota d'Aura", + effect: "Il Pokémon emette l'energia accumulata nelle guance per attaccare e aumentare la Velocità. Il tipo della mossa cambia in base alla forma assunta da Morpeko.", + }, + breakingSwipe: { + name: "Vastoimpatto", + effect: "Chi la usa attacca i nemici intorno con la sua robusta coda riducendone l'Attacco.", + }, + branchPoke: { + name: "Ramostoccata", + effect: "Chi la usa attacca il bersaglio con un ramo incredibilmente appuntito.", + }, + overdrive: { + name: "Overdrive", + effect: "Chi la usa suona la chitarra o il basso creando un'onda sonora potentissima con cui attacca il bersaglio.", + }, + appleAcid: { + name: "Acido Malico", + effect: "Il Pokémon attacca il bersaglio con un liquido acido ricavato da mele aspre riducendone la Difesa Speciale.", + }, + gravApple: { + name: "Forza G", + effect: "Il Pokémon fa cadere una mela sul bersaglio da una grande altezza, infliggendogli danni e riducendone la Difesa.", + }, + spiritBreak: { + name: "Frantumanima", + effect: "Chi la usa attacca il bersaglio con un tale impeto da fargli perdere la voglia di lottare e ne riduce l'Attacco Speciale", + }, + strangeSteam: { + name: "Vapore Incantato", + effect: "Il Pokémon attacca il bersaglio con getti di vapore che possono anche confonderlo.", + }, + lifeDew: { + name: "Goccia Vitale", + effect: "Il Pokémon sparge tutt'intorno dell'acqua misteriosa che fa recuperare PS a sé e agli alleati in campo.", + }, + obstruct: { + name: "Sbarramento", + effect: "Permette di eludere tutti gli attacchi. Se usata in successione può fallire. Se un Pokémon tocca chi la usa, la sua Difesa diminuisce di molto.", + }, + falseSurrender: { + name: "Supplicolpo", + effect: "Chi la usa finge di abbassare la testa a mo' di supplica e attacca il bersaglio con i suoi capelli scarmigliati. Questa mossa va sempre a segno.", + }, + meteorAssault: { + name: "Sfolgorassalto", + effect: "Chi la usa attacca il bersaglio brandendo un grosso gambo, ma perde l'equilibrio e nel turno successivo non può agire.", + }, + eternabeam: { + name: "Raggio Infinito", + effect: "È l'attacco più potente di Eternatus quando assume la sua forma originale. Nel turno successivo non può agire.", + }, + steelBeam: { + name: "Raggio d'Acciaio", + effect: "Il Pokémon utilizza l'acciaio del proprio corpo per sparare un violento raggio, ma subisce danni.", + }, + expandingForce: { + name: "Vastenergia", + effect: "Chi la usa attacca il bersaglio con energia psichica. Se utilizzata quando è attivo un Campo Psichico, la mossa aumenta di potenza e danneggia tutti i nemici.", + }, + steelRoller: { + name: "Ferrorullo", + effect: "Chi la usa attacca eliminando lo stato del terreno di lotta. La mossa fallisce se nel terreno non è attivo alcuno stato.", + }, + scaleShot: { + name: "Squamacolpo", + effect: "Il Pokémon attacca lanciando delle squame da due a cinque volte di fila. Aumenta la Velocità di chi la usa, ma ne riduce la Difesa.", + }, + meteorBeam: { + name: "Raggiometeora", + effect: "Chi la usa accumula l'energia dello spazio nel primo turno per aumentare l'Attacco Speciale, quindi attacca nel turno successivo.", + }, + shellSideArm: { + name: "Armaguscio", + effect: "Il Pokémon esegue un attacco fisico o speciale, in base a quale causa danni maggiori. Può anche avvelenare il bersaglio.", + }, + mistyExplosion: { + name: "Nebbioscoppio", + effect: "Chi la usa attacca tutti i Pokémon che ha intorno, ma poi va KO. La potenza delle mosse aumenta quando è attivo un Campo Nebbioso.", + }, + grassyGlide: { + name: "Erboscivolata", + effect: "Chi la usa attacca il bersaglio scivolando sul terreno. Se utilizzata quando è attivo un Campo Erboso, ha priorità alta.", + }, + risingVoltage: { + name: "Elettroimpennata", + effect: "Chi la usa attacca con dell'elettricità che si alza dal suolo. La potenza della mossa raddoppia quando l'avversario si trova in un Campo Elettrico.", + }, + terrainPulse: { + name: "Campopulsar", + effect: "Chi la usa attacca sfruttando l'energia del terreno di lotta. Il tipo e la potenza della mossa variano a seconda dello stato del terreno stesso.", + }, + skitterSmack: { + name: "Strisciacolpo", + effect: "Chi la usa attacca il bersaglio strisciandogli alle spalle e riducendo il suo Attacco Speciale.", + }, + burningJealousy: { + name: "Fiamminvidia", + effect: "Chi la usa attacca con la forza dell'invidia, causando una scottatura a tutti i Pokémon le cui statistiche sono aumentate durante quel turno.", + }, + lashOut: { + name: "Sfogarabbia", + effect: "Chi la usa attacca il bersaglio con tutta la propria ira. Se ha subito riduzioni delle statistiche durante quel turno, la potenza della mossa raddoppia.", + }, + poltergeist: { + name: "Poltergeist", + effect: "Chi la usa attacca utilizzando lo strumento del bersaglio. La mossa fallisce se quest'ultimo non ha uno strumento.", + }, + corrosiveGas: { + name: "Gas Corrosivo", + effect: "Chi la usa avvolge gli altri Pokémon attorno in un gas altamente acido, dissolvendo i loro strumenti.", + }, + coaching: { + name: "Coaching", + effect: "Chi la usa aumenta l'Attacco e la Difesa di tutti gli alleati dando loro indicazioni precise.", + }, + flipTurn: { + name: "Virata", + effect: "Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l'attacco.", + }, + tripleAxel: { + name: "Triplo Axel", + effect: "Il Pokémon attacca sferrando fino a tre calci consecutivi. Ogni volta che la mossa va a segno, la sua potenza aumenta.", + }, + dualWingbeat: { + name: "Doppia Ala", + effect: "Il Pokémon attacca il bersaglio urtandolo con le ali e infliggendogli danni due volte di fila.", + }, + scorchingSands: { + name: "Sabbiardente", + effect: "Chi la usa attacca il bersaglio scagliandogli addosso della sabbia incandescente. Può anche scottarlo.", + }, + jungleHealing: { + name: "Giunglacura", + effect: "Il Pokémon diventa tutt'uno con la giungla, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.", + }, + wickedBlow: { + name: "Pugnotenebra", + effect: "Il Pokémon sferra un singolo colpo potentissimo, massima espressione dello stile di tipo Buio. Brutto colpo assicurato.", + }, + surgingStrikes: { + name: "Idroraffica", + effect: "Il Pokémon sferra una fluida serie di tre attacchi, massima espressione dello stile di tipo Acqua. Brutto colpo assicurato.", + }, + thunderCage: { + name: "Elettrogabbia", + effect: "Il Pokémon attacca il bersaglio imprigionandolo in una gabbia di elettricità, che sprigiona corrente per quattro o cinque turni.", + }, + dragonEnergy: { + name: "Dragoenergia", + effect: " Il Pokémon attacca il bersaglio convertendo la propria forza vitale in energia. Più i suoi PS sono bassi, più la potenza della mossa diminuisce.", + }, + freezingGlare: { + name: "Sguardo Gelido", + effect: "Il Pokémon attacca rilasciando energia psichica dagli occhi. Può congelare il bersaglio.", + }, + fieryWrath: { + name: "Furia Ardente", + effect: "ERR Il Pokémon attacca trasformando la sua rabbia in un'aura simile a fiamme. Può anche far tentennare il bersaglio.ORE", + }, + thunderousKick: { + name: "Calcio Tonante", + effect: "Il Pokémon sferra calci al bersaglio dopo averlo distratto con movimenti fulminei, riducendone la Difesa.", + }, + glacialLance: { + name: "Lancia Glaciale", + effect: "Il Pokémon attacca il bersaglio scagliando una lancia di ghiaccio accompagnata da una tormenta di neve.", + }, + astralBarrage: { + name: "Schegge Astrali", + effect: "Il Pokémon attacca il bersaglio scatenandogli contro una miriade di piccoli spettri.", + }, + eerieSpell: { + name: "Inquietantesimo", + effect: "Il Pokémon attacca con i suoi potenti poteri psichici. Sottrae 3 PP all'ultima mossa usata dall'avversario.", + }, + direClaw: { + name: "Artigli Fatali", + effect: "Il Pokémon attacca il bersaglio con artigli distruttori. Può anche causargli avvelenamento, paralisi o sonno.", + }, + psyshieldBash: { + name: "Barrierassalto", + effect: "Il Pokémon si carica di energia psichica per poi schiantarsi sul bersaglio. Inoltre, aumenta la propria Difesa.", + }, + powerShift: { + name: "Scambioforza", + effect: "Il Pokémon scambia il suo Attacco con la Difesa.", + }, + stoneAxe: { + name: "Rocciascure", + effect: "Il Pokémon attacca il bersaglio con delle scuri di roccia. I frammenti rocciosi dispersi dall'attacco restano sospesi intorno al bersaglio.", + }, + springtideStorm: { + name: "Tempesta Zefirea", + effect: "Il Pokémon attacca il bersaglio avvolgendolo con un vento fortissimo di odio e amore. Può anche ridurne l'Attacco.", + }, + mysticalPower: { + name: "Forza Mistica", + effect: "Il Pokémon attacca emettendo un misterioso potere. Inoltre, aumenta il proprio Attacco Speciale.", + }, + ragingFury: { + name: "Ira Furente", + effect: "Il Pokémon s'infuria e sputa fiammate per due o tre turni, ma rimane confuso.", + }, + waveCrash: { + name: "Ondaschianto", + effect: "Il Pokémon si avvolge in uno strato d'acqua e si lancia sul bersaglio, ma subisce seri danni.", + }, + chloroblast: { + name: "Clorofillaser", + effect: "Il Pokémon attacca concentrando la clorofilla nel proprio corpo per poi lanciarla, ma subisce danni.", + }, + mountainGale: { + name: "Soffio d'Iceberg", + effect: " Il Pokémon attacca colpendo il bersaglio con un blocco di ghiaccio grande come un iceberg. Può anche far tentennare il bersaglio.", + }, + victoryDance: { + name: "Danzavittoria", + effect: "Il Pokémon si lancia in una danza sfrenata per invocare la vittoria e aumenta l'Attacco, la Difesa e la Velocità.", + }, + headlongRush: { + name: "Scontro Frontale", + effect: "Il Pokémon si schianta sul bersaglio con tutte le forze. La sua Difesa e la sua Difesa Speciale diminuiscono.", + }, + barbBarrage: { + name: "Mille Fielespine", + effect: "Il bersaglio viene colpito da una miriade di spine tossiche che possono anche avvelenarlo. Se il bersaglio è già avvelenato, la potenza della mossa raddoppia.", + }, + esperWing: { + name: "Ali d'Aura", + effect: "Il Pokémon falcia il bersaglio con ali rafforzate da un'aura. Probabile brutto colpo. Inoltre, la Velocità aumenta.", + }, + bitterMalice: { + name: "Livore", + effect: "Il Pokémon attacca con una furia che fa raggelare il sangue nelle vene del bersaglio, riducendone l'Attacco.", + }, + shelter: { + name: "Barricata", + effect: "Il Pokémon indurisce la propria pelle come uno scudo di ferro, aumentando di molto la Difesa.", + }, + tripleArrows: { + name: "Triplodardo", + effect: "Il Pokémon sferra un calcio per poi scoccare tre dardi insieme. Può ridurre la Difesa del bersaglio o farlo tentennare. Probabile brutto colpo.", + }, + infernalParade: { + name: "Corteo Spettrale", + effect: "Il Pokémon attacca con innumerevoli sfere di fuoco che possono anche scottare il bersaglio. Se questo è affetto da problemi di stato, la potenza della mossa raddoppia.", + }, + ceaselessEdge: { + name: "Lama Milleflutti", + effect: "Il Pokémon attacca il bersaglio con la spada conchiglia. I frammenti di conchiglie formano una trappola di punte ai piedi del bersaglio.", + }, + bleakwindStorm: { + name: "Tempesta Boreale", + effect: "Il Pokémon attacca il bersaglio con venti gelidi e sferzanti che lo fanno tremare anima e corpo. Può anche ridurne la Velocità.", + }, + wildboltStorm: { + name: "Tempesta Tonante", + effect: "Il Pokémon chiama a sé una tempesta di fulmini e raffiche di vento con cui attacca violentemente il bersaglio. Può anche paralizzarlo.", + }, + sandsearStorm: { + name: "Tempesta Ardente", + effect: "Il Pokémon attacca il bersaglio avvolgendolo con sabbia ardente e un vento fortissimo che possono scottarlo.", + }, + lunarBlessing: { + name: "Invocaluna", + effect: " Il Pokémon rivolge una preghiera alla luna crescente, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.", + }, + takeHeart: { + name: "Baldimpulso", + effect: "Il Pokémon prende coraggio e guarisce dai problemi di stato. Inoltre, aumenta l'Attacco Speciale e la Difesa Speciale.", + }, + gMaxWildfire: { + name: "Gigavampa", + effect: "Attacco di tipo Fuoco eseguito da Charizard Gigamax. Infligge danni per quattro turni.", + }, + gMaxBefuddle: { + name: "Gigastupore", + effect: "Attacco di tipo Coleottero eseguito da Butterfree Gigamax. Avvelena, paralizza o addormenta i nemici.", + }, + gMaxVoltCrash: { + name: "Gigapikafolgori", + effect: "Attacco di tipo Elettro eseguito da Pikachu Gigamax. Paralizza i nemici.", + }, + gMaxGoldRush: { + name: "Gigamonete", + effect: "Attacco di tipo Normale eseguito da Meowth Gigamax. Confonde i nemici e permette anche di ricevere una ricompensa maggiore.", + }, + gMaxChiStrike: { + name: "Gigapugnointuito", + effect: "Attacco di tipo Lotta eseguito da Machamp Gigamax. Aumenta la probabilità di sferrare brutti colpi.", + }, + gMaxTerror: { + name: "Gigaillusione", + effect: "Attacco di tipo Spettro eseguito da Gengar Gigamax. Il Pokémon calpesta l'ombra del nemico impedendogli la fuga o la sostituzione.", + }, + gMaxResonance: { + name: "Gigamelodia", + effect: "Attacco di tipo Ghiaccio eseguito da Lapras Gigamax. Riduce i danni subiti per cinque turni.", + }, + gMaxCuddle: { + name: "Gigabbraccio", + effect: "Attacco di tipo Normale eseguito da Eevee Gigamax. Fa infatuare i nemici.", + }, + gMaxReplenish: { + name: "Gigarinnovamento", + effect: "Attacco di tipo Normale eseguito da Snorlax Gigamax. Rigenera le bacche mangiate.", + }, + gMaxMalodor: { + name: "Gigafetore", + effect: "Attacco di tipo Veleno eseguito da Garbodor Gigamax. Avvelena i nemici.", + }, + gMaxStonesurge: { + name: "Gigarocciagetto", + effect: "Attacco di tipo Acqua eseguito da Drednaw Gigamax. Sparge rocce aguzze sul campo di lotta.", + }, + gMaxWindRage: { + name: "Gigaciclone", + effect: "Attacco di tipo Volante eseguito da Corviknight Gigamax. Annulla l'effetto di mosse come Riflesso e Schermoluce.", + }, + gMaxStunShock: { + name: "Gigatoxiscossa", + effect: "Attacco di tipo Elettro eseguito da Toxtricity Gigamax. Avvelena o paralizza i nemici.", + }, + gMaxFinale: { + name: "Gigagranfinale", + effect: "Attacco di tipo Folletto eseguito da Alcremie Gigamax. Fa recuperare PS agli alleati.", + }, + gMaxDepletion: { + name: "Gigalogoramento", + effect: "Attacco di tipo Drago eseguito da Duraludon Gigamax. Toglie PP all'ultima mossa usata dai nemici.", + }, + gMaxGravitas: { + name: "Gigagravitoforza", + effect: "Attacco di tipo Psico eseguito da Orbeetle Gigamax. Cambia la gravità per cinque turni.", + }, + gMaxVolcalith: { + name: "Gigalapilli", + effect: "Attacco di tipo Roccia eseguito da Coalossal Gigamax. Infligge danni per quattro turni.", + }, + gMaxSandblast: { + name: "Gigavortisabbia", + effect: "Attacco di tipo Terra eseguito da Sandaconda Gigamax. Scatena un turbine di sabbia per quattro o cinque turni.", + }, + gMaxSnooze: { + name: "Gigatorpore", + effect: "Attacco di tipo Buio eseguito da Grimmsnarl Gigamax. Chi la usa fa un grande sbadiglio che fa addormentare il nemico al turno successivo.", + }, + gMaxTartness: { + name: "Gigattaccoacido", + effect: "Attacco di tipo Erba eseguito da Flapple Gigamax. Riduce l’elusione dei nemici.", + }, + gMaxSweetness: { + name: "Gigambrosia", + effect: "Attacco di tipo Erba eseguito da Appletun Gigamax. Cura i problemi di stato degli alleati.", + }, + gMaxSmite: { + name: "Gigacastigo", + effect: "Attacco di tipo Folletto eseguito da Hatterene Gigamax. Confonde i nemici.", + }, + gMaxSteelsurge: { + name: "Gigaferroaculei", + effect: "Attacco di tipo Acciaio eseguito da Copperajah Gigamax. Sparge pezzi di metallo acuminati sul campo di lotta.", + }, + gMaxMeltdown: { + name: "Gigaliquefazione", + effect: "ERAttacco di tipo Acciaio eseguito da Melmetal Gigamax. Impedisce ai nemici di usare la stessa mossa due volte di seguito.RORE", + }, + gMaxFoamBurst: { + name: "Gigaschiuma", + effect: "Attacco di tipo Acqua eseguito da Kingler Gigamax. Riduce di molto la Velocità dei nemici.", + }, + gMaxCentiferno: { + name: "Gigamillefiamme", + effect: "Attacco di tipo Fuoco eseguito da Centiskorch Gigamax. Intrappola i nemici nelle fiamme per quattro o cinque turni.", + }, + gMaxVineLash: { + name: "Gigasferzata", + effect: "Attacco di tipo Erba eseguito da Venusaur Gigamax. Infligge danni per quattro turni.", + }, + gMaxCannonade: { + name: "Gigacannonata", + effect: "Attacco di tipo Acqua eseguito da Blastoise Gigamax. Infligge danni per quattro turni.", + }, + gMaxDrumSolo: { + name: "Gigarullio", + effect: "Attacco di tipo Erba eseguito da Rillaboom Gigamax. Ignora le abilità dei nemici.", + }, + gMaxFireball: { + name: "Gigafiammopalla", + effect: "Attacco di tipo Fuoco eseguito da Cinderace Gigamax. Ignora le abilità dei nemici.", + }, + gMaxHydrosnipe: { + name: "Gigasparomirato", + effect: "Attacco di tipo Acqua eseguito da Inteleon Gigamax. Ignora le abilità dei nemici.", + }, + gMaxOneBlow: { + name: "Gigasingolcolpo", + effect: "Attacco di tipo Buio eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.", + }, + gMaxRapidFlow: { + name: "Gigapluricolpo", + effect: " Attacco di tipo Acqua eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.", + }, + teraBlast: { + name: "Terascoppio", + effect: "Se il Pokémon è teracristallizzato, attacca con l'energia del suo teratipo. Infligge danni in base all'Attacco o all'Attacco Speciale scegliendo il più alto tra i due.", + }, + silkTrap: { + name: "Telatrappola", + effect: "Il Pokémon tesse una trappola di tela che lo protegge dagli attacchi e riduce la Velocità di chi entra in contatto con lui.", + }, + axeKick: { + name: "Calcio ad Ascia", + effect: "Il Pokémon attacca sferrando un calcio dall'alto verso il basso che può confondere il bersaglio. Se la mossa fallisce, il Pokémon subisce dei danni.", + }, + lastRespects: { + name: "Omaggio ai KO", + effect: "Il Pokémon attacca per placare il risentimento dei suoi compagni di squadra. Più sono quelli andati KO, più la potenza della mossa aumenta.", + }, + luminaCrash: { + name: "Fotocollisione", + effect: "Il Pokémon attacca sparando una luce bizzarra che agisce anche sulla psiche. Riduce di molto la Difesa Speciale del bersaglio.", + }, + orderUp: { + name: "Alta Cucina", + effect: "Il Pokémon attacca con deliziose movenze. Se ha in bocca un Tatsugiri, una sua statistica aumenta in base alla forma di quest'ultimo.", + }, + jetPunch: { + name: "Pugnojet", + effect: "Il Pokémon avvolge il pugno in una corrente impetuosa e sferra un colpo a una tale velocità da rendersi quasi invisibile. Questo attacco ha priorità alta.", + }, + spicyExtract: { + name: "Essenza Piccante", + effect: "Il Pokémon secerne un'essenza straordinariamente piccante. Aumenta di molto l'Attacco del bersaglio ma ne diminuisce di molto la Difesa.", + }, + spinOut: { + name: "Slittaruote", + effect: "Il Pokémon infligge danni caricando le estremità e ruotandole vorticosamente. La sua Velocità diminuisce di molto.", + }, + populationBomb: { + name: "Infestazione", + effect: "Il Pokémon si riunisce con i suoi simili in un gruppo brulicante che collabora per attaccare e colpisce da una a dieci volte di fila.", + }, + iceSpinner: { + name: "Vortighiaccio", + effect: "Il Pokémon avvolge gli arti inferiori in un sottile strato di ghiaccio e si scontra con il bersaglio piroettando. Il movimento rotatorio distrugge il terreno di lotta.", + }, + glaiveRush: { + name: "Spadoncarica", + effect: "Il Pokémon si lancia in una carica avventata. Fino al suo prossimo turno, il Pokémon riceverà il doppio dei danni dagli attacchi altrui, che andranno sempre a segno.", + }, + revivalBlessing: { + name: "Preghiera Vitale", + effect: "Il Pokémon intona una preghiera compassionevole, rianimando un Pokémon della squadra esausto e restituendogli metà dei suoi PS.", + }, + saltCure: { + name: "Sotto Sale", + effect: "Il Pokémon mette sotto sale il bersaglio, infliggendogli danni a ogni turno. I Pokémon di tipo Acciaio e di tipo Acqua sono particolarmente vulnerabili a questa mossa.", + }, + tripleDive: { + name: "Triplo Tuffo", + effect: "Il Pokémon si lancia in un triplo tuffo perfettamente coordinato, colpendo il bersaglio con degli schizzi d'acqua e infliggendogli danni tre volte di fila.", + }, + mortalSpin: { + name: "Glitturbine", + effect: "Attacco rotante che elimina gli effetti di mosse come Legatutto, Avvolgibotta e Parassiseme. Aumenta anche la Velocità di chi la usa.", + }, + doodle: { + name: "Ricalco", + effect: "Il Pokémon cattura l'essenza del bersaglio con un ricalco, copiandone l'abilità e applicandola a se stesso e ai suoi alleati.", + }, + filletAway: { + name: "Alleggerimento", + effect: "Il Pokémon sacrifica dei PS per far aumentare di molto l'Attacco, l'Attacco Speciale e la Velocità.", + }, + kowtowCleave: { + name: "Genufendente", + effect: "Il Pokémon si genuflette per far abbassare la guardia al bersaglio e poi fenderlo. Questo attacco va sempre a segno.", + }, + flowerTrick: { + name: "Prestigiafiore", + effect: " Il Pokémon attacca il bersaglio lanciandogli addosso un mazzo di fiori truccato. Questo attacco va sempre a segno, infliggendo anche un brutto colpo.", + }, + torchSong: { + name: "Canzone Ardente", + effect: "Il Pokémon abbrustolisce il bersaglio soffiandogli addosso fiamme ardenti come se intonasse una canzone. Inoltre, il suo Attacco Speciale aumenta.", + }, + aquaStep: { + name: "Idroballetto", + effect: "Il Pokémon si prende gioco del bersaglio con passi di danza leggiadri e fluidi come l’acqua, infliggendogli danni. Inoltre, la sua Velocità aumenta.", + }, + ragingBull: { + name: "Scatenatoro", + effect: "Il Pokémon carica il bersaglio con furia cieca, rompendo barriere come Schermoluce e Riflesso. Il tipo di questa mossa dipende dalla forma di chi la usa.", + }, + makeItRain: { + name: "Corsa all'Oro", + effect: "Il Pokémon attacca lanciando una gran quantità di monete recuperabili dopo la lotta, ma riduce il proprio Attacco Speciale.", + }, + psyblade: { + name: "Psicolama", + effect: "Il Pokémon falcia il bersaglio con una lama eterea. La potenza della mossa aumenta del 50% quando è attivo un Campo Elettrico.", + }, + hydroSteam: { + name: "Idrovapore", + effect: "Il Pokémon ricopre con forza il bersaglio di acqua bollente. Con la luce solare intensa, la potenza di questa mossa aumenta del 50% anziché diminuire.", + }, + ruination: { + name: "Catastrofe", + effect: "Il Pokémon invoca una terribile disgrazia, dimezzando i PS del bersaglio.", + }, + collisionCourse: { + name: "Turboschianto", + effect: "Il Pokémon si schianta al suolo mentre si trasforma, causando un'esplosione primordiale. La potenza della mossa aumenta se questa è superefficace sul bersaglio.", + }, + electroDrift: { + name: "Fulmiscatto", + effect: "Il Pokémon saetta mentre si trasforma, trafiggendo il bersaglio con una scossa futuristica. La potenza della mossa aumenta se questa è superefficace sul bersaglio.", + }, + shedTail: { + name: "Tagliacoda", + effect: "Chi la usa crea una copia di se stesso usando parte dei suoi PS e si fa sostituire da un altro Pokémon della squadra.", + }, + chillyReception: { + name: "Freddura", + effect: "Chi la usa dice una freddura che fa raggelare i presenti per poi farsi sostituire da un altro Pokémon della squadra. Causa una nevicata che dura per cinque turni.", + }, + tidyUp: { + name: "Pulizie", + effect: "Il Pokémon fa le pulizie, annullando gli effetti di Punte, Levitoroccia, Rete Vischiosa, Fielepunte e Sostituto. Inoltre, aumenta il suo Attacco e la sua Velocità.", + }, + snowscape: { + name: "Vista Innevata", + effect: "Il Pokémon causa una nevicata che dura per cinque turni e aumenta la Difesa dei Pokémon di tipo Ghiaccio.", + }, + pounce: { + name: "Balzo", + effect: "Il Pokémon fa un balzo e attacca il bersaglio, riducendone inoltre la Velocità.", + }, + trailblaze: { + name: "Apripista", + effect: "Il Pokémon attacca come se saltasse fuori dall'erba alta e si muove con passo leggiadro, aumentando la propria Velocità.", + }, + chillingWater: { + name: "Doccia Fredda", + effect: "Il Pokémon attacca il bersaglio con una doccia d'acqua talmente fredda da farlo demoralizzare, riducendone l'Attacco.", + }, + hyperDrill: { + name: "Ipertrapano", + effect: "Il Pokémon fa roteare rapidamente la parte appuntita del suo corpo, perforando il bersaglio ed eludendo mosse come Protezione e Individua.", + }, + twinBeam: { + name: "Doppioraggio", + effect: "Il Pokémon attacca il bersaglio con misteriosi raggi di luce emessi dagli occhi che infliggono danni due volte di fila.", + }, + rageFist: { + name: "Pugno Furibondo", + effect: "Il Pokémon trasforma la sua furia in energia e la utilizza per attaccare. Più attacchi ha subito il Pokémon, più la potenza della mossa aumenta.", + }, + armorCannon: { + name: "Corazza Cannone", + effect: "Il Pokémon si libera della sua corazza, scagliandola sul bersaglio come una raffica di proiettili incandescenti. La sua Difesa e la sua Difesa Speciale diminuiscono.", + }, + bitterBlade: { + name: "Lama del Rimorso", + effect: "Il Pokémon concentra nelle lame tutti i rimorsi accumulati nel mondo dei vivi e assale il bersaglio, recuperando una quantità di PS pari a metà del danno inflitto.", + }, + doubleShock: { + name: "Doppiolampo", + effect: "Il Pokémon libera tutta la sua potenza elettrica per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Elettro.", + }, + gigatonHammer: { + name: "Granmartello", + effect: "Chi la usa attacca il bersaglio brandendo un enorme martello. La mossa non può essere usata per due volte di fila.", + }, + comeuppance: { + name: "Ritorsione", + effect: "Il Pokémon restituisce con gli interessi i danni subiti all'ultimo avversario che l'ha colpito.", + }, + aquaCutter: { + name: "Idrotaglio", + effect: " Il Pokémon espelle acqua ad alta pressione e falcia il bersaglio con un fendente tagliente quanto una lama. Probabile brutto colpo.", + }, + blazingTorque: { + name: "Turboustione", + effect: "L'utilizzatore accende il suo motore ardente verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio con una bruciatura.", + }, + wickedTorque: { + name: "Turbotenebra", + effect: "L'utente accende il proprio motore nel bersaglio con intenti dannosi. Ciò potrebbe addormentare il bersaglio.", + }, + noxiousTorque: { + name: "Turbotossina", + effect: "L'utilizzatore fa girare il suo motore velenoso verso il bersaglio. Ciò potrebbe anche avvelenare il bersaglio.", + }, + combatTorque: { + name: "Turborissa", + effect: "L'utente accelera con forza il proprio motore verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio paralizzato.", + }, + magicalTorque: { + name: "Turboincanto", + effect: "L'utilizzatore fa girare il proprio motore fatato verso il bersaglio. Ciò potrebbe anche confondere l'obiettivo.", + }, + bloodMoon: { + name: "Luna Rossa", + effect: "Il Pokémon attacca rilasciando tutta la sua energia, confluita in una luna piena rossa come il sangue. Questa mossa non può essere usata due volte di fila.", + }, + matchaGotcha: { + name: "Spruzzatè", + effect: "Il Pokémon attacca mescolando del tè e spruzzandolo, recuperando una quantità di PS pari alla metà del danno inflitto. Può anche scottare il bersaglio.", + }, + syrupBomb: { + name: "Bomba Sciroppata", + effect: " Il Pokémon fa esplodere dello sciroppo viscoso sul bersaglio, ricoprendolo e facendogli diminuire la Velocità per tre turni.", + }, + ivyCudgel: { + name: "Clava di Liane", + effect: "Il Pokémon colpisce con una clava avvolta da liane. Il tipo della mossa varia in base alla maschera indossata. Probabile brutto colpo.", + }, + electroShot: { + name: "Elettroraggio", + effect: "Il Pokémon accumula elettricità e aumenta l'Attacco Speciale al primo turno, per poi rilasciare una potente scarica al turno successivo o, se piove, immediatamente.", + }, + teraStarstorm: { + name: "Teracluster", + effect: "Il Pokémon elimina il bersaglio irradiando il potere dei cristalli. Se Terapagos assume la Forma Astrale, la mossa infligge danni a tutti gli avversari.", + }, + fickleBeam: { + name: "Irregolaser", + effect: "Il Pokémon attacca rilasciando raggi di luce. Talvolta i laser vengono emessi da tutte le teste, contribuendo a raddoppiare la potenza della mossa.", + }, + burningBulwark: { + name: "Egida Ignea", + effect: "Il Pokémon blocca gli attacchi avversari con la pelliccia incandescente che scotta chi entra in contatto con lui.", + }, + thunderclap: { + name: "Saetta", + effect: "Il Pokémon abbatte una scarica elettrica sul bersaglio prima che questi possa attaccare. La mossa fallisce se il bersaglio sferra una mossa che non è di attacco.", + }, + mightyCleave: { + name: "Taglio Poderoso", + effect: "Il Pokémon fende il bersaglio con la luce immagazzinata nella testa, ignorando gli effetti delle mosse protettive.", + }, + tachyonCutter: { + name: "Tachiontaglio", + effect: "Il Pokémon emette delle lame particellari in successione, infliggendo danni due volte di fila. Questo attacco va sempre a segno.", + }, + hardPress: { + name: "Pressa d'Acciaio", + effect: "Il Pokémon schiaccia il bersaglio usando i propri arti. Più PS rimangono al bersaglio, maggiore è la potenza della mossa.", + }, + dragonCheer: { + name: "Grido del Drago", + effect: "Il Pokémon incita gli alleati con un inno ai draghi, aumentando la probabilità che sferrino brutti colpi. Particolarmente efficace con alleati di tipo Drago.", + }, + alluringVoice: { + name: "Ammaliavoce", + effect: "Il Pokémon attacca sfruttando il suo canto angelico, confondendo il bersaglio se le sue statistiche sono aumentate nello stesso turno.", + }, + temperFlare: { + name: "Rabbia Bruciante", + effect: "Il Pokémon attacca con l'impeto di chi è pronto a tutto. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.", + }, + supercellSlam: { + name: "Elettrotuffo", + effect: "Il Pokémon si schianta sul bersaglio dopo essersi elettrificato. Se la mossa fallisce, il Pokémon subisce dei danni.", + }, + psychicNoise: { + name: "Psicorumore", + effect: " l Pokémon investe il bersaglio con insopportabili onde sonore che gli impediscono di recuperare PS con mosse, abilità o strumenti che ha con sé per due turni.", + }, + upperHand: { + name: "Colpo di Mano", + effect: "Il Pokémon reagisce al movimento del bersaglio e, colpendo con il palmo, lo fa tentennare. Se il bersaglio non sferra un attacco ad alta priorità, la mossa fallisce.", + }, + malignantChain: { + name: "Intossicatena", + effect: "Il Pokémon logora il bersaglio avvolgendolo con le sue catene fatte di veleno e iniettandogli delle tossine che possono anche iperavvelenarlo.", + }, +} as const; \ No newline at end of file diff --git a/src/locales/it/pokeball.ts b/src/locales/it/pokeball.ts new file mode 100644 index 000000000..4b4c2be4d --- /dev/null +++ b/src/locales/it/pokeball.ts @@ -0,0 +1,10 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const pokeball: SimpleTranslationEntries = { + "pokeBall": "Poké Ball", + "greatBall": "Mega Ball", + "ultraBall": "Ultra Ball", + "rogueBall": "Rogue Ball", + "masterBall": "Master Ball", + "luxuryBall": "Chich Ball", +} as const; \ No newline at end of file diff --git a/src/locales/it/pokemon-stat.ts b/src/locales/it/pokemon-stat.ts index 7a209461b..b2c023aa3 100644 --- a/src/locales/it/pokemon-stat.ts +++ b/src/locales/it/pokemon-stat.ts @@ -1,16 +1,16 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; export const pokemonStat: SimpleTranslationEntries = { - "HP": "Max. HP", - "HPshortened": "MaxHP", - "ATK": "Attack", - "ATKshortened": "Atk", - "DEF": "Defense", - "DEFshortened": "Def", - "SPATK": "Sp. Atk", - "SPATKshortened": "SpAtk", - "SPDEF": "Sp. Def", - "SPDEFshortened": "SpDef", - "SPD": "Speed", - "SPDshortened": "Spd" -} as const; \ No newline at end of file + "HP": "PS Max", + "HPshortened": "PS", + "ATK": "Attacco", + "ATKshortened": "Att", + "DEF": "Difesa", + "DEFshortened": "Dif", + "SPATK": "Att. Sp.", + "SPATKshortened": "AttSp", + "SPDEF": "Dif. Sp.", + "SPDEFshortened": "DifSp", + "SPD": "Velocità", + "SPDshortened": "Vel" +} as const; diff --git a/src/locales/it/pokemon.ts b/src/locales/it/pokemon.ts new file mode 100644 index 000000000..ddc2b2c91 --- /dev/null +++ b/src/locales/it/pokemon.ts @@ -0,0 +1,1086 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const pokemon: SimpleTranslationEntries = { + "bulbasaur": "Bulbasaur", + "ivysaur": "Ivysaur", + "venusaur": "Venusaur", + "charmander": "Charmander", + "charmeleon": "Charmeleon", + "charizard": "Charizard", + "squirtle": "Squirtle", + "wartortle": "Wartortle", + "blastoise": "Blastoise", + "caterpie": "Caterpie", + "metapod": "Metapod", + "butterfree": "Butterfree", + "weedle": "Weedle", + "kakuna": "Kakuna", + "beedrill": "Beedrill", + "pidgey": "Pidgey", + "pidgeotto": "Pidgeotto", + "pidgeot": "Pidgeot", + "rattata": "Rattata", + "raticate": "Raticate", + "spearow": "Spearow", + "fearow": "Fearow", + "ekans": "Ekans", + "arbok": "Arbok", + "pikachu": "Pikachu", + "raichu": "Raichu", + "sandshrew": "Sandshrew", + "sandslash": "Sandslash", + "nidoran_f": "Nidoran♀", + "nidorina": "Nidorina", + "nidoqueen": "Nidoqueen", + "nidoran_m": "Nidoran♂", + "nidorino": "Nidorino", + "nidoking": "Nidoking", + "clefairy": "Clefairy", + "clefable": "Clefable", + "vulpix": "Vulpix", + "ninetales": "Ninetales", + "jigglypuff": "Jigglypuff", + "wigglytuff": "Wigglytuff", + "zubat": "Zubat", + "golbat": "Golbat", + "oddish": "Oddish", + "gloom": "Gloom", + "vileplume": "Vileplume", + "paras": "Paras", + "parasect": "Parasect", + "venonat": "Venonat", + "venomoth": "Venomoth", + "diglett": "Diglett", + "dugtrio": "Dugtrio", + "meowth": "Meowth", + "persian": "Persian", + "psyduck": "Psyduck", + "golduck": "Golduck", + "mankey": "Mankey", + "primeape": "Primeape", + "growlithe": "Growlithe", + "arcanine": "Arcanine", + "poliwag": "Poliwag", + "poliwhirl": "Poliwhirl", + "poliwrath": "Poliwrath", + "abra": "Abra", + "kadabra": "Kadabra", + "alakazam": "Alakazam", + "machop": "Machop", + "machoke": "Machoke", + "machamp": "Machamp", + "bellsprout": "Bellsprout", + "weepinbell": "Weepinbell", + "victreebel": "Victreebel", + "tentacool": "Tentacool", + "tentacruel": "Tentacruel", + "geodude": "Geodude", + "graveler": "Graveler", + "golem": "Golem", + "ponyta": "Ponyta", + "rapidash": "Rapidash", + "slowpoke": "Slowpoke", + "slowbro": "Slowbro", + "magnemite": "Magnemite", + "magneton": "Magneton", + "farfetchd": "Farfetch'd", + "doduo": "Doduo", + "dodrio": "Dodrio", + "seel": "Seel", + "dewgong": "Dewgong", + "grimer": "Grimer", + "muk": "Muk", + "shellder": "Shellder", + "cloyster": "Cloyster", + "gastly": "Gastly", + "haunter": "Haunter", + "gengar": "Gengar", + "onix": "Onix", + "drowzee": "Drowzee", + "hypno": "Hypno", + "krabby": "Krabby", + "kingler": "Kingler", + "voltorb": "Voltorb", + "electrode": "Electrode", + "exeggcute": "Exeggcute", + "exeggutor": "Exeggutor", + "cubone": "Cubone", + "marowak": "Marowak", + "hitmonlee": "Hitmonlee", + "hitmonchan": "Hitmonchan", + "lickitung": "Lickitung", + "koffing": "Koffing", + "weezing": "Weezing", + "rhyhorn": "Rhyhorn", + "rhydon": "Rhydon", + "chansey": "Chansey", + "tangela": "Tangela", + "kangaskhan": "Kangaskhan", + "horsea": "Horsea", + "seadra": "Seadra", + "goldeen": "Goldeen", + "seaking": "Seaking", + "staryu": "Staryu", + "starmie": "Starmie", + "mr_mime": "Mr. Mime", + "scyther": "Scyther", + "jynx": "Jynx", + "electabuzz": "Electabuzz", + "magmar": "Magmar", + "pinsir": "Pinsir", + "tauros": "Tauros", + "magikarp": "Magikarp", + "gyarados": "Gyarados", + "lapras": "Lapras", + "ditto": "Ditto", + "eevee": "Eevee", + "vaporeon": "Vaporeon", + "jolteon": "Jolteon", + "flareon": "Flareon", + "porygon": "Porygon", + "omanyte": "Omanyte", + "omastar": "Omastar", + "kabuto": "Kabuto", + "kabutops": "Kabutops", + "aerodactyl": "Aerodactyl", + "snorlax": "Snorlax", + "articuno": "Articuno", + "zapdos": "Zapdos", + "moltres": "Moltres", + "dratini": "Dratini", + "dragonair": "Dragonair", + "dragonite": "Dragonite", + "mewtwo": "Mewtwo", + "mew": "Mew", + "chikorita": "Chikorita", + "bayleef": "Bayleef", + "meganium": "Meganium", + "cyndaquil": "Cyndaquil", + "quilava": "Quilava", + "typhlosion": "Typhlosion", + "totodile": "Totodile", + "croconaw": "Croconaw", + "feraligatr": "Feraligatr", + "sentret": "Sentret", + "furret": "Furret", + "hoothoot": "Hoothoot", + "noctowl": "Noctowl", + "ledyba": "Ledyba", + "ledian": "Ledian", + "spinarak": "Spinarak", + "ariados": "Ariados", + "crobat": "Crobat", + "chinchou": "Chinchou", + "lanturn": "Lanturn", + "pichu": "Pichu", + "cleffa": "Cleffa", + "igglybuff": "Igglybuff", + "togepi": "Togepi", + "togetic": "Togetic", + "natu": "Natu", + "xatu": "Xatu", + "mareep": "Mareep", + "flaaffy": "Flaaffy", + "ampharos": "Ampharos", + "bellossom": "Bellossom", + "marill": "Marill", + "azumarill": "Azumarill", + "sudowoodo": "Sudowoodo", + "politoed": "Politoed", + "hoppip": "Hoppip", + "skiploom": "Skiploom", + "jumpluff": "Jumpluff", + "aipom": "Aipom", + "sunkern": "Sunkern", + "sunflora": "Sunflora", + "yanma": "Yanma", + "wooper": "Wooper", + "quagsire": "Quagsire", + "espeon": "Espeon", + "umbreon": "Umbreon", + "murkrow": "Murkrow", + "slowking": "Slowking", + "misdreavus": "Misdreavus", + "unown": "Unown", + "wobbuffet": "Wobbuffet", + "girafarig": "Girafarig", + "pineco": "Pineco", + "forretress": "Forretress", + "dunsparce": "Dunsparce", + "gligar": "Gligar", + "steelix": "Steelix", + "snubbull": "Snubbull", + "granbull": "Granbull", + "qwilfish": "Qwilfish", + "scizor": "Scizor", + "shuckle": "Shuckle", + "heracross": "Heracross", + "sneasel": "Sneasel", + "teddiursa": "Teddiursa", + "ursaring": "Ursaring", + "slugma": "Slugma", + "magcargo": "Magcargo", + "swinub": "Swinub", + "piloswine": "Piloswine", + "corsola": "Corsola", + "remoraid": "Remoraid", + "octillery": "Octillery", + "delibird": "Delibird", + "mantine": "Mantine", + "skarmory": "Skarmory", + "houndour": "Houndour", + "houndoom": "Houndoom", + "kingdra": "Kingdra", + "phanpy": "Phanpy", + "donphan": "Donphan", + "porygon2": "Porygon2", + "stantler": "Stantler", + "smeargle": "Smeargle", + "tyrogue": "Tyrogue", + "hitmontop": "Hitmontop", + "smoochum": "Smoochum", + "elekid": "Elekid", + "magby": "Magby", + "miltank": "Miltank", + "blissey": "Blissey", + "raikou": "Raikou", + "entei": "Entei", + "suicune": "Suicune", + "larvitar": "Larvitar", + "pupitar": "Pupitar", + "tyranitar": "Tyranitar", + "lugia": "Lugia", + "ho_oh": "Ho-Oh", + "celebi": "Celebi", + "treecko": "Treecko", + "grovyle": "Grovyle", + "sceptile": "Sceptile", + "torchic": "Torchic", + "combusken": "Combusken", + "blaziken": "Blaziken", + "mudkip": "Mudkip", + "marshtomp": "Marshtomp", + "swampert": "Swampert", + "poochyena": "Poochyena", + "mightyena": "Mightyena", + "zigzagoon": "Zigzagoon", + "linoone": "Linoone", + "wurmple": "Wurmple", + "silcoon": "Silcoon", + "beautifly": "Beautifly", + "cascoon": "Cascoon", + "dustox": "Dustox", + "lotad": "Lotad", + "lombre": "Lombre", + "ludicolo": "Ludicolo", + "seedot": "Seedot", + "nuzleaf": "Nuzleaf", + "shiftry": "Shiftry", + "taillow": "Taillow", + "swellow": "Swellow", + "wingull": "Wingull", + "pelipper": "Pelipper", + "ralts": "Ralts", + "kirlia": "Kirlia", + "gardevoir": "Gardevoir", + "surskit": "Surskit", + "masquerain": "Masquerain", + "shroomish": "Shroomish", + "breloom": "Breloom", + "slakoth": "Slakoth", + "vigoroth": "Vigoroth", + "slaking": "Slaking", + "nincada": "Nincada", + "ninjask": "Ninjask", + "shedinja": "Shedinja", + "whismur": "Whismur", + "loudred": "Loudred", + "exploud": "Exploud", + "makuhita": "Makuhita", + "hariyama": "Hariyama", + "azurill": "Azurill", + "nosepass": "Nosepass", + "skitty": "Skitty", + "delcatty": "Delcatty", + "sableye": "Sableye", + "mawile": "Mawile", + "aron": "Aron", + "lairon": "Lairon", + "aggron": "Aggron", + "meditite": "Meditite", + "medicham": "Medicham", + "electrike": "Electrike", + "manectric": "Manectric", + "plusle": "Plusle", + "minun": "Minun", + "volbeat": "Volbeat", + "illumise": "Illumise", + "roselia": "Roselia", + "gulpin": "Gulpin", + "swalot": "Swalot", + "carvanha": "Carvanha", + "sharpedo": "Sharpedo", + "wailmer": "Wailmer", + "wailord": "Wailord", + "numel": "Numel", + "camerupt": "Camerupt", + "torkoal": "Torkoal", + "spoink": "Spoink", + "grumpig": "Grumpig", + "spinda": "Spinda", + "trapinch": "Trapinch", + "vibrava": "Vibrava", + "flygon": "Flygon", + "cacnea": "Cacnea", + "cacturne": "Cacturne", + "swablu": "Swablu", + "altaria": "Altaria", + "zangoose": "Zangoose", + "seviper": "Seviper", + "lunatone": "Lunatone", + "solrock": "Solrock", + "barboach": "Barboach", + "whiscash": "Whiscash", + "corphish": "Corphish", + "crawdaunt": "Crawdaunt", + "baltoy": "Baltoy", + "claydol": "Claydol", + "lileep": "Lileep", + "cradily": "Cradily", + "anorith": "Anorith", + "armaldo": "Armaldo", + "feebas": "Feebas", + "milotic": "Milotic", + "castform": "Castform", + "kecleon": "Kecleon", + "shuppet": "Shuppet", + "banette": "Banette", + "duskull": "Duskull", + "dusclops": "Dusclops", + "tropius": "Tropius", + "chimecho": "Chimecho", + "absol": "Absol", + "wynaut": "Wynaut", + "snorunt": "Snorunt", + "glalie": "Glalie", + "spheal": "Spheal", + "sealeo": "Sealeo", + "walrein": "Walrein", + "clamperl": "Clamperl", + "huntail": "Huntail", + "gorebyss": "Gorebyss", + "relicanth": "Relicanth", + "luvdisc": "Luvdisc", + "bagon": "Bagon", + "shelgon": "Shelgon", + "salamence": "Salamence", + "beldum": "Beldum", + "metang": "Metang", + "metagross": "Metagross", + "regirock": "Regirock", + "regice": "Regice", + "registeel": "Registeel", + "latias": "Latias", + "latios": "Latios", + "kyogre": "Kyogre", + "groudon": "Groudon", + "rayquaza": "Rayquaza", + "jirachi": "Jirachi", + "deoxys": "Deoxys", + "turtwig": "Turtwig", + "grotle": "Grotle", + "torterra": "Torterra", + "chimchar": "Chimchar", + "monferno": "Monferno", + "infernape": "Infernape", + "piplup": "Piplup", + "prinplup": "Prinplup", + "empoleon": "Empoleon", + "starly": "Starly", + "staravia": "Staravia", + "staraptor": "Staraptor", + "bidoof": "Bidoof", + "bibarel": "Bibarel", + "kricketot": "Kricketot", + "kricketune": "Kricketune", + "shinx": "Shinx", + "luxio": "Luxio", + "luxray": "Luxray", + "budew": "Budew", + "roserade": "Roserade", + "cranidos": "Cranidos", + "rampardos": "Rampardos", + "shieldon": "Shieldon", + "bastiodon": "Bastiodon", + "burmy": "Burmy", + "wormadam": "Wormadam", + "mothim": "Mothim", + "combee": "Combee", + "vespiquen": "Vespiquen", + "pachirisu": "Pachirisu", + "buizel": "Buizel", + "floatzel": "Floatzel", + "cherubi": "Cherubi", + "cherrim": "Cherrim", + "shellos": "Shellos", + "gastrodon": "Gastrodon", + "ambipom": "Ambipom", + "drifloon": "Drifloon", + "drifblim": "Drifblim", + "buneary": "Buneary", + "lopunny": "Lopunny", + "mismagius": "Mismagius", + "honchkrow": "Honchkrow", + "glameow": "Glameow", + "purugly": "Purugly", + "chingling": "Chingling", + "stunky": "Stunky", + "skuntank": "Skuntank", + "bronzor": "Bronzor", + "bronzong": "Bronzong", + "bonsly": "Bonsly", + "mime_jr": "Mime Jr.", + "happiny": "Happiny", + "chatot": "Chatot", + "spiritomb": "Spiritomb", + "gible": "Gible", + "gabite": "Gabite", + "garchomp": "Garchomp", + "munchlax": "Munchlax", + "riolu": "Riolu", + "lucario": "Lucario", + "hippopotas": "Hippopotas", + "hippowdon": "Hippowdon", + "skorupi": "Skorupi", + "drapion": "Drapion", + "croagunk": "Croagunk", + "toxicroak": "Toxicroak", + "carnivine": "Carnivine", + "finneon": "Finneon", + "lumineon": "Lumineon", + "mantyke": "Mantyke", + "snover": "Snover", + "abomasnow": "Abomasnow", + "weavile": "Weavile", + "magnezone": "Magnezone", + "lickilicky": "Lickilicky", + "rhyperior": "Rhyperior", + "tangrowth": "Tangrowth", + "electivire": "Electivire", + "magmortar": "Magmortar", + "togekiss": "Togekiss", + "yanmega": "Yanmega", + "leafeon": "Leafeon", + "glaceon": "Glaceon", + "gliscor": "Gliscor", + "mamoswine": "Mamoswine", + "porygon_z": "Porygon-Z", + "gallade": "Gallade", + "probopass": "Probopass", + "dusknoir": "Dusknoir", + "froslass": "Froslass", + "rotom": "Rotom", + "uxie": "Uxie", + "mesprit": "Mesprit", + "azelf": "Azelf", + "dialga": "Dialga", + "palkia": "Palkia", + "heatran": "Heatran", + "regigigas": "Regigigas", + "giratina": "Giratina", + "cresselia": "Cresselia", + "phione": "Phione", + "manaphy": "Manaphy", + "darkrai": "Darkrai", + "shaymin": "Shaymin", + "arceus": "Arceus", + "victini": "Victini", + "snivy": "Snivy", + "servine": "Servine", + "serperior": "Serperior", + "tepig": "Tepig", + "pignite": "Pignite", + "emboar": "Emboar", + "oshawott": "Oshawott", + "dewott": "Dewott", + "samurott": "Samurott", + "patrat": "Patrat", + "watchog": "Watchog", + "lillipup": "Lillipup", + "herdier": "Herdier", + "stoutland": "Stoutland", + "purrloin": "Purrloin", + "liepard": "Liepard", + "pansage": "Pansage", + "simisage": "Simisage", + "pansear": "Pansear", + "simisear": "Simisear", + "panpour": "Panpour", + "simipour": "Simipour", + "munna": "Munna", + "musharna": "Musharna", + "pidove": "Pidove", + "tranquill": "Tranquill", + "unfezant": "Unfezant", + "blitzle": "Blitzle", + "zebstrika": "Zebstrika", + "roggenrola": "Roggenrola", + "boldore": "Boldore", + "gigalith": "Gigalith", + "woobat": "Woobat", + "swoobat": "Swoobat", + "drilbur": "Drilbur", + "excadrill": "Excadrill", + "audino": "Audino", + "timburr": "Timburr", + "gurdurr": "Gurdurr", + "conkeldurr": "Conkeldurr", + "tympole": "Tympole", + "palpitoad": "Palpitoad", + "seismitoad": "Seismitoad", + "throh": "Throh", + "sawk": "Sawk", + "sewaddle": "Sewaddle", + "swadloon": "Swadloon", + "leavanny": "Leavanny", + "venipede": "Venipede", + "whirlipede": "Whirlipede", + "scolipede": "Scolipede", + "cottonee": "Cottonee", + "whimsicott": "Whimsicott", + "petilil": "Petilil", + "lilligant": "Lilligant", + "basculin": "Basculin", + "sandile": "Sandile", + "krokorok": "Krokorok", + "krookodile": "Krookodile", + "darumaka": "Darumaka", + "darmanitan": "Darmanitan", + "maractus": "Maractus", + "dwebble": "Dwebble", + "crustle": "Crustle", + "scraggy": "Scraggy", + "scrafty": "Scrafty", + "sigilyph": "Sigilyph", + "yamask": "Yamask", + "cofagrigus": "Cofagrigus", + "tirtouga": "Tirtouga", + "carracosta": "Carracosta", + "archen": "Archen", + "archeops": "Archeops", + "trubbish": "Trubbish", + "garbodor": "Garbodor", + "zorua": "Zorua", + "zoroark": "Zoroark", + "minccino": "Minccino", + "cinccino": "Cinccino", + "gothita": "Gothita", + "gothorita": "Gothorita", + "gothitelle": "Gothitelle", + "solosis": "Solosis", + "duosion": "Duosion", + "reuniclus": "Reuniclus", + "ducklett": "Ducklett", + "swanna": "Swanna", + "vanillite": "Vanillite", + "vanillish": "Vanillish", + "vanilluxe": "Vanilluxe", + "deerling": "Deerling", + "sawsbuck": "Sawsbuck", + "emolga": "Emolga", + "karrablast": "Karrablast", + "escavalier": "Escavalier", + "foongus": "Foongus", + "amoonguss": "Amoonguss", + "frillish": "Frillish", + "jellicent": "Jellicent", + "alomomola": "Alomomola", + "joltik": "Joltik", + "galvantula": "Galvantula", + "ferroseed": "Ferroseed", + "ferrothorn": "Ferrothorn", + "klink": "Klink", + "klang": "Klang", + "klinklang": "Klinklang", + "tynamo": "Tynamo", + "eelektrik": "Eelektrik", + "eelektross": "Eelektross", + "elgyem": "Elgyem", + "beheeyem": "Beheeyem", + "litwick": "Litwick", + "lampent": "Lampent", + "chandelure": "Chandelure", + "axew": "Axew", + "fraxure": "Fraxure", + "haxorus": "Haxorus", + "cubchoo": "Cubchoo", + "beartic": "Beartic", + "cryogonal": "Cryogonal", + "shelmet": "Shelmet", + "accelgor": "Accelgor", + "stunfisk": "Stunfisk", + "mienfoo": "Mienfoo", + "mienshao": "Mienshao", + "druddigon": "Druddigon", + "golett": "Golett", + "golurk": "Golurk", + "pawniard": "Pawniard", + "bisharp": "Bisharp", + "bouffalant": "Bouffalant", + "rufflet": "Rufflet", + "braviary": "Braviary", + "vullaby": "Vullaby", + "mandibuzz": "Mandibuzz", + "heatmor": "Heatmor", + "durant": "Durant", + "deino": "Deino", + "zweilous": "Zweilous", + "hydreigon": "Hydreigon", + "larvesta": "Larvesta", + "volcarona": "Volcarona", + "cobalion": "Cobalion", + "terrakion": "Terrakion", + "virizion": "Virizion", + "tornadus": "Tornadus", + "thundurus": "Thundurus", + "reshiram": "Reshiram", + "zekrom": "Zekrom", + "landorus": "Landorus", + "kyurem": "Kyurem", + "keldeo": "Keldeo", + "meloetta": "Meloetta", + "genesect": "Genesect", + "chespin": "Chespin", + "quilladin": "Quilladin", + "chesnaught": "Chesnaught", + "fennekin": "Fennekin", + "braixen": "Braixen", + "delphox": "Delphox", + "froakie": "Froakie", + "frogadier": "Frogadier", + "greninja": "Greninja", + "bunnelby": "Bunnelby", + "diggersby": "Diggersby", + "fletchling": "Fletchling", + "fletchinder": "Fletchinder", + "talonflame": "Talonflame", + "scatterbug": "Scatterbug", + "spewpa": "Spewpa", + "vivillon": "Vivillon", + "litleo": "Litleo", + "pyroar": "Pyroar", + "flabebe": "Flabébé", + "floette": "Floette", + "florges": "Florges", + "skiddo": "Skiddo", + "gogoat": "Gogoat", + "pancham": "Pancham", + "pangoro": "Pangoro", + "furfrou": "Furfrou", + "espurr": "Espurr", + "meowstic": "Meowstic", + "honedge": "Honedge", + "doublade": "Doublade", + "aegislash": "Aegislash", + "spritzee": "Spritzee", + "aromatisse": "Aromatisse", + "swirlix": "Swirlix", + "slurpuff": "Slurpuff", + "inkay": "Inkay", + "malamar": "Malamar", + "binacle": "Binacle", + "barbaracle": "Barbaracle", + "skrelp": "Skrelp", + "dragalge": "Dragalge", + "clauncher": "Clauncher", + "clawitzer": "Clawitzer", + "helioptile": "Helioptile", + "heliolisk": "Heliolisk", + "tyrunt": "Tyrunt", + "tyrantrum": "Tyrantrum", + "amaura": "Amaura", + "aurorus": "Aurorus", + "sylveon": "Sylveon", + "hawlucha": "Hawlucha", + "dedenne": "Dedenne", + "carbink": "Carbink", + "goomy": "Goomy", + "sliggoo": "Sliggoo", + "goodra": "Goodra", + "klefki": "Klefki", + "phantump": "Phantump", + "trevenant": "Trevenant", + "pumpkaboo": "Pumpkaboo", + "gourgeist": "Gourgeist", + "bergmite": "Bergmite", + "avalugg": "Avalugg", + "noibat": "Noibat", + "noivern": "Noivern", + "xerneas": "Xerneas", + "yveltal": "Yveltal", + "zygarde": "Zygarde", + "diancie": "Diancie", + "hoopa": "Hoopa", + "volcanion": "Volcanion", + "rowlet": "Rowlet", + "dartrix": "Dartrix", + "decidueye": "Decidueye", + "litten": "Litten", + "torracat": "Torracat", + "incineroar": "Incineroar", + "popplio": "Popplio", + "brionne": "Brionne", + "primarina": "Primarina", + "pikipek": "Pikipek", + "trumbeak": "Trumbeak", + "toucannon": "Toucannon", + "yungoos": "Yungoos", + "gumshoos": "Gumshoos", + "grubbin": "Grubbin", + "charjabug": "Charjabug", + "vikavolt": "Vikavolt", + "crabrawler": "Crabrawler", + "crabominable": "Crabominable", + "oricorio": "Oricorio", + "cutiefly": "Cutiefly", + "ribombee": "Ribombee", + "rockruff": "Rockruff", + "lycanroc": "Lycanroc", + "wishiwashi": "Wishiwashi", + "mareanie": "Mareanie", + "toxapex": "Toxapex", + "mudbray": "Mudbray", + "mudsdale": "Mudsdale", + "dewpider": "Dewpider", + "araquanid": "Araquanid", + "fomantis": "Fomantis", + "lurantis": "Lurantis", + "morelull": "Morelull", + "shiinotic": "Shiinotic", + "salandit": "Salandit", + "salazzle": "Salazzle", + "stufful": "Stufful", + "bewear": "Bewear", + "bounsweet": "Bounsweet", + "steenee": "Steenee", + "tsareena": "Tsareena", + "comfey": "Comfey", + "oranguru": "Oranguru", + "passimian": "Passimian", + "wimpod": "Wimpod", + "golisopod": "Golisopod", + "sandygast": "Sandygast", + "palossand": "Palossand", + "pyukumuku": "Pyukumuku", + "type_null": "Tipo Zero", + "silvally": "Silvally", + "minior": "Minior", + "komala": "Komala", + "turtonator": "Turtonator", + "togedemaru": "Togedemaru", + "mimikyu": "Mimikyu", + "bruxish": "Bruxish", + "drampa": "Drampa", + "dhelmise": "Dhelmise", + "jangmo_o": "Jangmo-o", + "hakamo_o": "Hakamo-o", + "kommo_o": "Kommo-o", + "tapu_koko": "Tapu Koko", + "tapu_lele": "Tapu Lele", + "tapu_bulu": "Tapu Bulu", + "tapu_fini": "Tapu Fini", + "cosmog": "Cosmog", + "cosmoem": "Cosmoem", + "solgaleo": "Solgaleo", + "lunala": "Lunala", + "nihilego": "Nihilego", + "buzzwole": "Buzzwole", + "pheromosa": "Pheromosa", + "xurkitree": "Xurkitree", + "celesteela": "Celesteela", + "kartana": "Kartana", + "guzzlord": "Guzzlord", + "necrozma": "Necrozma", + "magearna": "Magearna", + "marshadow": "Marshadow", + "poipole": "Poipole", + "naganadel": "Naganadel", + "stakataka": "Stakataka", + "blacephalon": "Blacephalon", + "zeraora": "Zeraora", + "meltan": "Meltan", + "melmetal": "Melmetal", + "grookey": "Grookey", + "thwackey": "Thwackey", + "rillaboom": "Rillaboom", + "scorbunny": "Scorbunny", + "raboot": "Raboot", + "cinderace": "Cinderace", + "sobble": "Sobble", + "drizzile": "Drizzile", + "inteleon": "Inteleon", + "skwovet": "Skwovet", + "greedent": "Greedent", + "rookidee": "Rookidee", + "corvisquire": "Corvisquire", + "corviknight": "Corviknight", + "blipbug": "Blipbug", + "dottler": "Dottler", + "orbeetle": "Orbeetle", + "nickit": "Nickit", + "thievul": "Thievul", + "gossifleur": "Gossifleur", + "eldegoss": "Eldegoss", + "wooloo": "Wooloo", + "dubwool": "Dubwool", + "chewtle": "Chewtle", + "drednaw": "Drednaw", + "yamper": "Yamper", + "boltund": "Boltund", + "rolycoly": "Rolycoly", + "carkol": "Carkol", + "coalossal": "Coalossal", + "applin": "Applin", + "flapple": "Flapple", + "appletun": "Appletun", + "silicobra": "Silicobra", + "sandaconda": "Sandaconda", + "cramorant": "Cramorant", + "arrokuda": "Arrokuda", + "barraskewda": "Barraskewda", + "toxel": "Toxel", + "toxtricity": "Toxtricity", + "sizzlipede": "Sizzlipede", + "centiskorch": "Centiskorch", + "clobbopus": "Clobbopus", + "grapploct": "Grapploct", + "sinistea": "Sinistea", + "polteageist": "Polteageist", + "hatenna": "Hatenna", + "hattrem": "Hattrem", + "hatterene": "Hatterene", + "impidimp": "Impidimp", + "morgrem": "Morgrem", + "grimmsnarl": "Grimmsnarl", + "obstagoon": "Obstagoon", + "perrserker": "Perrserker", + "cursola": "Cursola", + "sirfetchd": "Sirfetch'd", + "mr_rime": "Mr. Rime", + "runerigus": "Runerigus", + "milcery": "Milcery", + "alcremie": "Alcremie", + "falinks": "Falinks", + "pincurchin": "Pincurchin", + "snom": "Snom", + "frosmoth": "Frosmoth", + "stonjourner": "Stonjourner", + "eiscue": "Eiscue", + "indeedee": "Indeedee", + "morpeko": "Morpeko", + "cufant": "Cufant", + "copperajah": "Copperajah", + "dracozolt": "Dracozolt", + "arctozolt": "Arctozolt", + "dracovish": "Dracovish", + "arctovish": "Arctovish", + "duraludon": "Duraludon", + "dreepy": "Dreepy", + "drakloak": "Drakloak", + "dragapult": "Dragapult", + "zacian": "Zacian", + "zamazenta": "Zamazenta", + "eternatus": "Eternatus", + "kubfu": "Kubfu", + "urshifu": "Urshifu", + "zarude": "Zarude", + "regieleki": "Regieleki", + "regidrago": "Regidrago", + "glastrier": "Glastrier", + "spectrier": "Spectrier", + "calyrex": "Calyrex", + "wyrdeer": "Wyrdeer", + "kleavor": "Kleavor", + "ursaluna": "Ursaluna", + "basculegion": "Basculegion", + "sneasler": "Sneasler", + "overqwil": "Overqwil", + "enamorus": "Enamorus", + "sprigatito": "Sprigatito", + "floragato": "Floragato", + "meowscarada": "Meowscarada", + "fuecoco": "Fuecoco", + "crocalor": "Crocalor", + "skeledirge": "Skeledirge", + "quaxly": "Quaxly", + "quaxwell": "Quaxwell", + "quaquaval": "Quaquaval", + "lechonk": "Lechonk", + "oinkologne": "Oinkologne", + "tarountula": "Tarountula", + "spidops": "Spidops", + "nymble": "Nymble", + "lokix": "Lokix", + "pawmi": "Pawmi", + "pawmo": "Pawmo", + "pawmot": "Pawmot", + "tandemaus": "Tandemaus", + "maushold": "Maushold", + "fidough": "Fidough", + "dachsbun": "Dachsbun", + "smoliv": "Smoliv", + "dolliv": "Dolliv", + "arboliva": "Arboliva", + "squawkabilly": "Squawkabilly", + "nacli": "Nacli", + "naclstack": "Naclstack", + "garganacl": "Garganacl", + "charcadet": "Charcadet", + "armarouge": "Armarouge", + "ceruledge": "Ceruledge", + "tadbulb": "Tadbulb", + "bellibolt": "Bellibolt", + "wattrel": "Wattrel", + "kilowattrel": "Kilowattrel", + "maschiff": "Maschiff", + "mabosstiff": "Mabosstiff", + "shroodle": "Shroodle", + "grafaiai": "Grafaiai", + "bramblin": "Bramblin", + "brambleghast": "Brambleghast", + "toedscool": "Toedscool", + "toedscruel": "Toedscruel", + "klawf": "Klawf", + "capsakid": "Capsakid", + "scovillain": "Scovillain", + "rellor": "Rellor", + "rabsca": "Rabsca", + "flittle": "Flittle", + "espathra": "Espathra", + "tinkatink": "Tinkatink", + "tinkatuff": "Tinkatuff", + "tinkaton": "Tinkaton", + "wiglett": "Wiglett", + "wugtrio": "Wugtrio", + "bombirdier": "Bombirdier", + "finizen": "Finizen", + "palafin": "Palafin", + "varoom": "Varoom", + "revavroom": "Revavroom", + "cyclizar": "Cyclizar", + "orthworm": "Orthworm", + "glimmet": "Glimmet", + "glimmora": "Glimmora", + "greavard": "Greavard", + "houndstone": "Houndstone", + "flamigo": "Flamigo", + "cetoddle": "Cetoddle", + "cetitan": "Cetitan", + "veluza": "Veluza", + "dondozo": "Dondozo", + "tatsugiri": "Tatsugiri", + "annihilape": "Annihilape", + "clodsire": "Clodsire", + "farigiraf": "Farigiraf", + "dudunsparce": "Dudunsparce", + "kingambit": "Kingambit", + "great_tusk": "Grandizanne", + "scream_tail": "Codaurlante", + "brute_bonnet": "Fungofurioso", + "flutter_mane": "Crinealato", + "slither_wing": "Alirasenti", + "sandy_shocks": "Peldisabbia", + "iron_treads": "Solcoferreo", + "iron_bundle": "Saccoferreo", + "iron_hands": "Manoferrea", + "iron_jugulis": "Colloferreo", + "iron_moth": "Falenaferrea", + "iron_thorns": "Spineferree", + "frigibax": "Frigibax", + "arctibax": "Arctibax", + "baxcalibur": "Baxcalibur", + "gimmighoul": "Gimmighoul", + "gholdengo": "Gholdengo", + "wo_chien": "Wo-Chien", + "chien_pao": "Chien-Pao", + "ting_lu": "Ting-Lu", + "chi_yu": "Chi-Yu", + "roaring_moon": "Lunaruggente", + "iron_valiant": "Eroeferreo", + "koraidon": "Koraidon", + "miraidon": "Miraidon", + "walking_wake": "Acquecrespe", + "iron_leaves": "Fogliaferrea", + "dipplin": "Dipplin", + "poltchageist": "Poltchageist", + "sinistcha": "Sinistcha", + "okidogi": "Okidogi", + "munkidori": "Munkidori", + "fezandipiti": "Fezandipiti", + "ogerpon": "Ogerpon", + "archaludon": "Archaludon", + "hydrapple": "Hydrapple", + "gouging_fire": "Vampeaguzze", + "raging_bolt": "Furiatonante", + "iron_boulder": "Massoferreo", + "iron_crown": "Capoferreo", + "terapagos": "Terapagos", + "pecharunt": "Pecharunt", + "alola_rattata": "Rattata", + "alola_raticate": "Raticate", + "alola_raichu": "Raichu", + "alola_sandshrew": "Sandshrew", + "alola_sandslash": "Sandslash", + "alola_vulpix": "Vulpix", + "alola_ninetales": "Ninetales", + "alola_diglett": "Diglett", + "alola_dugtrio": "Dugtrio", + "alola_meowth": "Meowth", + "alola_persian": "Persian", + "alola_geodude": "Geodude", + "alola_graveler": "Graveler", + "alola_golem": "Golem", + "alola_grimer": "Grimer", + "alola_muk": "Muk", + "alola_exeggutor": "Exeggutor", + "alola_marowak": "Marowak", + "eternal_floette": "Floette", + "galar_meowth": "Meowth", + "galar_ponyta": "Ponyta", + "galar_rapidash": "Rapidash", + "galar_slowpoke": "Slowpoke", + "galar_slowbro": "Slowbro", + "galar_farfetchd": "Farfetch'd", + "galar_weezing": "Weezing", + "galar_mr_mime": "Mr. Mime", + "galar_articuno": "Articuno", + "galar_zapdos": "Zapdos", + "galar_moltres": "Moltres", + "galar_slowking": "Slowking", + "galar_corsola": "Corsola", + "galar_zigzagoon": "Zigzagoon", + "galar_linoone": "Linoone", + "galar_darumaka": "Darumaka", + "galar_darmanitan": "Darmanitan", + "galar_yamask": "Yamask", + "galar_stunfisk": "Stunfisk", + "hisui_growlithe": "Growlithe", + "hisui_arcanine": "Arcanine", + "hisui_voltorb": "Voltorb", + "hisui_electrode": "Electrode", + "hisui_typhlosion": "Typhlosion", + "hisui_qwilfish": "Qwilfish", + "hisui_sneasel": "Sneasel", + "hisui_samurott": "Samurott", + "hisui_lilligant": "Lilligant", + "hisui_zorua": "Zorua", + "hisui_zoroark": "Zoroark", + "hisui_braviary": "Braviary", + "hisui_sliggoo": "Sliggoo", + "hisui_goodra": "Goodra", + "hisui_avalugg": "Avalugg", + "hisui_decidueye": "Decidueye", + "paldea_tauros": "Tauros", + "paldea_wooper": "Wooper", + "bloodmoon_ursaluna": "Ursaluna", +} as const; diff --git a/src/locales/it/starter-select-ui-handler.ts b/src/locales/it/starter-select-ui-handler.ts new file mode 100644 index 000000000..b9dc4ccac --- /dev/null +++ b/src/locales/it/starter-select-ui-handler.ts @@ -0,0 +1,32 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +/** + * The menu namespace holds most miscellaneous text that isn't directly part of the game's + * contents or directly related to Pokemon data. This includes menu navigation, settings, + * account interactions, descriptive text, etc. + */ +export const starterSelectUiHandler: SimpleTranslationEntries = { + "confirmStartTeam":'Vuoi iniziare con questi Pokémon?', + "growthRate": "Growth Rate:", + "ability": "Ability:", + "passive": "Passive:", + "nature": "Nature:", + "eggMoves": 'Egg Moves', + "start": "Start", + "addToParty": "Add to Party", + "toggleIVs": 'Toggle IVs', + "manageMoves": 'Manage Moves', + "useCandies": 'Use Candies', + "selectMoveSwapOut": "Select a move to swap out.", + "selectMoveSwapWith": "Select a move to swap with", + "unlockPassive": "Unlock Passive", + "reduceCost": "Reduce Cost", + "cycleShiny": "R: Cycle Shiny", + "cycleForm": 'F: Cycle Form', + "cycleGender": 'G: Cycle Gender', + "cycleAbility": 'E: Cycle Ability', + "cycleNature": 'N: Cycle Nature', + "cycleVariant": 'V: Cycle Variant', + "enablePassive": "Enable Passive", + "disablePassive": "Disable Passive" +} \ No newline at end of file diff --git a/src/locales/it/tutorial.ts b/src/locales/it/tutorial.ts new file mode 100644 index 000000000..898dcead8 --- /dev/null +++ b/src/locales/it/tutorial.ts @@ -0,0 +1,42 @@ +import { SimpleTranslationEntries } from "#app/plugins/i18n"; + +export const tutorial: SimpleTranslationEntries = { + "intro": `Benvenuto in PokéRogue! Questo gioco si concentra sulle battaglie, con elementi roguelite. + $Questo gioco non è monetizzato e non siamo proprietari di Pokemon e Assets presenti nel gioco. + $Il gioco è work-in-progress ma giocabile al 100%.\nPer reportare eventuali bugs è possibile discuterne sul nostro Discord. + $Se il game risulta 'lento', assicurati di aver abilitato l'Accelerazione Hardware nelle impostazioni del tuo Browser`, + + "accessMenu": `Per accedere al menù, press M o Esc.\nDal menù puoi cambiare impostazioni, controllare la wiki e accedere a varie features.`, + + "menu": `Da questo menù puoi accedere alle impostazioni. + $Dalle impostazioni puoi cambiare velocità di gioco, stile di finestra e altre opzioni. + $Ci sono varie funzionalità, controlla bene e non perderti nulla!`, + + "starterSelect": `Da questa schermata puoi selezionare il tuo starter.\nQuesti sono i membri iniziali del tuo parti. + $Ogni starter ha un valore. Puoi avere fino a \n6 Pokèmon, avendo a disposizione un massimo di 10 punti. + $Puoi anche selezionare Sesso, Abilità, e Forma a seconda delle\nvarianti che hai catturato o schiuso. + $Le IVs di una specie sono le migliori rispetto a tutte quelle che hai\ncatturato o schiuso, quindi prova a catturarne il piu possibile!`, + + "pokerus": `Giornalmente 3 Starter casuali disponibili avranno il bordo viola. + $Se possiedi uno di questi starter,\nprova ad aggiungerlo al party. Ricorda di controllare le info!`, + + "statChange": `I cambiamenti alle statistiche persistono fintanto che i tuoi pokèmon resteranno in campo. + $I tuoi pokemon verranno richiamati quando incontrerai un allenatore o al cambiamento di bioma. + $Puoi anche vedere i cambiamenti alle statistiche in corso tenendo premuto C o Shift`, + + "selectItem": `Dopo ogni battaglia avrai disponibili tre item.\nPotrai prenderne solo uno. + $Questi spaziano tra consumabili, item tenuti da Pokèmon o con un effetto passivo permanente. + $La maggior parte degli Item non Consumabili possono stackare in diversi modi. + $Alcuni Item risulteranno disponibili solo se possono essere usati, come Item Evolutivi. + $Puoi anche passare un Item tenuto da un Pokèmon ad un altro attraverso l'opzione 'trasferisci strumento'. + $L'opzione 'trasferisci strumento' sarà disponibile solo dopo aver assegnato uno strumento ad un Pokèmon. + $Puoi acquistare consumabili con le monete, progredendo saranno poi disponibili ulteriori oggetti. + $Assicurati di fare un acquisto prima di selezionare un item casuale, poichè passerai subito alla lotta successiva.`, + + "eggGacha": `Da questa schermata, puoi riscattare i tuoi vouchers in cambio di\nuova Pokèmon. + $Le uova vanno schiuse e saranno sempre più vicine alla schiusura dopo\nogni battaglia. Le uova più rare impiegheranno più battaglie per la schiusura. + $I Pokémon schiusi non verranno aggiunti alla tua squadra, saranno\naggiunti ai tuoi starters. + $I Pokémon schiusi generalmente hanno IVs migliori rispetto ai\n Pokémon selvatici. + $Alcuni Pokémon possono essere ottenuti solo tramite uova. + $Ci sono 3 diversi macchinari con differenti\nbonus, scegli quello che preferisci!`, +} as const; \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 6a00693fc..b3b4d5f3c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,6 +9,23 @@ import BBCodeText from 'phaser3-rex-plugins/plugins/bbcodetext'; import TransitionImagePackPlugin from 'phaser3-rex-plugins/templates/transitionimagepack/transitionimagepack-plugin.js'; import { LoadingScene } from './loading-scene'; + +// Catch global errors and display them in an alert so users can report the issue. +window.onerror = function (message, source, lineno, colno, error) { + console.error(error); + let errorString = `Received unhandled error. Open browser console and click OK to see details.\nError: ${message}\nSource: ${source}\nLine: ${lineno}\nColumn: ${colno}\nStack: ${error.stack}`; + //alert(errorString); + // Avoids logging the error a second time. + return true; +}; + +// Catch global promise rejections and display them in an alert so users can report the issue. +window.addEventListener('unhandledrejection', (event) => { + let errorString = `Received unhandled promise rejection. Open browser console and click OK to see details.\nReason: ${event.reason}`; + console.error(event.reason); + //alert(errorString); +}); + const config: Phaser.Types.Core.GameConfig = { type: Phaser.WEBGL, parent: 'app', diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 54484a1e0..2e18cd917 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1058,7 +1058,6 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 10), new WeightedModifierType(modifierTypes.TM_ULTRA, 8), new WeightedModifierType(modifierTypes.RARER_CANDY, 4), - new WeightedModifierType(modifierTypes.SOOTHE_BELL, (party: Pokemon[]) => party.find(p => (pokemonEvolutions.hasOwnProperty(p.species.speciesId) && pokemonEvolutions[p.species.speciesId].find(e => e.condition && e.condition instanceof SpeciesFriendshipEvolutionCondition)) || p.moveset.find(m => m.moveId === Moves.RETURN)) ? 16 : 0, 16), new WeightedModifierType(modifierTypes.GOLDEN_PUNCH, 2), new WeightedModifierType(modifierTypes.IV_SCANNER, 4), new WeightedModifierType(modifierTypes.EXP_CHARM, 8), @@ -1078,6 +1077,7 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.BATON, 2), new WeightedModifierType(modifierTypes.SOUL_DEW, 8), //new WeightedModifierType(modifierTypes.OVAL_CHARM, 6), + new WeightedModifierType(modifierTypes.SOOTHE_BELL, 4), new WeightedModifierType(modifierTypes.ABILITY_CHARM, 6), new WeightedModifierType(modifierTypes.FOCUS_BAND, 5), new WeightedModifierType(modifierTypes.KINGS_ROCK, 3), @@ -1151,7 +1151,7 @@ const enemyBuffModifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.ENEMY_ATTACK_FREEZE_CHANCE, 2), new WeightedModifierType(modifierTypes.ENEMY_ATTACK_BURN_CHANCE, 2), new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 10), - new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 10000), + new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 5), new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 1) ].map(m => { m.setTier(ModifierTier.COMMON); return m; }), [ModifierTier.GREAT]: [ @@ -1162,12 +1162,12 @@ const enemyBuffModifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 1) ].map(m => { m.setTier(ModifierTier.GREAT); return m; }), [ModifierTier.ULTRA]: [ - new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 5), - new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 5), - new WeightedModifierType(modifierTypes.ENEMY_HEAL, 5), - new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 5), - new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 5), - new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 300) + new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 10), + new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 10), + new WeightedModifierType(modifierTypes.ENEMY_HEAL, 10), + new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 10), + new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 10), + new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 5) ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), [ModifierTier.ROGUE]: [ ].map(m => { m.setTier(ModifierTier.ROGUE); return m; }), [ModifierTier.MASTER]: [ ].map(m => { m.setTier(ModifierTier.MASTER); return m; }) @@ -1518,7 +1518,7 @@ export class ModifierTypeOption { } export function getPartyLuckValue(party: Pokemon[]): integer { - return Phaser.Math.Clamp(party.map(p => p.isFainted() || !p.isShiny() ? 0 : !p.isFusion() || !p.shiny || !p.fusionShiny ? p.variant + 1 : (p.variant + 1) + (p.fusionVariant + 1)) + return Phaser.Math.Clamp(party.map(p => p.isFainted() ? 0 : p.getLuck()) .reduce((total: integer, value: integer) => total += value, 0), 0, 14); } diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index d8fad1466..88b009d3a 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1111,9 +1111,7 @@ export class PokemonLevelIncrementModifier extends ConsumablePokemonModifier { pokemon.levelExp = 0; } - const friendshipIncrease = new Utils.IntegerHolder(5); - pokemon.scene.applyModifier(PokemonFriendshipBoosterModifier, true, pokemon, friendshipIncrease); - pokemon.friendship = Math.min(pokemon.friendship + friendshipIncrease.value, 255); + pokemon.addFriendship(5); pokemon.scene.unshiftPhase(new LevelUpPhase(pokemon.scene, pokemon.scene.getParty().indexOf(pokemon), pokemon.level - levelCount.value, pokemon.level)); @@ -1392,13 +1390,14 @@ export class PokemonFriendshipBoosterModifier extends PokemonHeldItemModifier { } apply(args: any[]): boolean { - (args[1] as Utils.IntegerHolder).value *= 1 + 0.5 * this.getStackCount(); + const friendship = args[1] as Utils.IntegerHolder; + friendship.value = Math.floor(friendship.value * (1 + 0.5 * this.getStackCount())); return true; } getMaxHeldItemCount(pokemon: Pokemon): integer { - return 5; + return 3; } } diff --git a/src/overrides.ts b/src/overrides.ts new file mode 100644 index 000000000..4b9bcaa0b --- /dev/null +++ b/src/overrides.ts @@ -0,0 +1,25 @@ +import { Species } from './data/enums/species'; +import { Abilities } from "./data/enums/abilities"; +import { Biome } from "./data/enums/biome"; +import { Moves } from "./data/enums/moves"; +import { WeatherType } from "./data/weather"; + +export const SEED_OVERRIDE = ''; +export const STARTER_SPECIES_OVERRIDE = 0; +export const STARTER_FORM_OVERRIDE = 0; +export const STARTING_LEVEL_OVERRIDE = 0; +export const STARTING_WAVE_OVERRIDE = 0; +export const STARTING_BIOME_OVERRIDE = Biome.TOWN; +export const STARTING_MONEY_OVERRIDE = 0; +export const WEATHER_OVERRIDE = WeatherType.NONE; + +export const ABILITY_OVERRIDE = Abilities.NONE; +export const MOVE_OVERRIDE = Moves.NONE; +export const MOVE_OVERRIDE_2 = Moves.NONE; +export const OPP_SPECIES_OVERRIDE = 0; +export const OPP_ABILITY_OVERRIDE = Abilities.NONE; +export const OPP_MOVE_OVERRIDE = Moves.NONE; +export const OPP_MOVE_OVERRIDE_2 = Moves.NONE; + +export const OPP_SHINY_OVERRIDE = false; +export const OPP_VARIANT_OVERRIDE = 0; diff --git a/src/phases.ts b/src/phases.ts index 535a6c2b2..fc6af354a 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -1,12 +1,12 @@ -import BattleScene, { STARTER_FORM_OVERRIDE, STARTER_SPECIES_OVERRIDE, bypassLogin, startingWave } from "./battle-scene"; +import BattleScene, { bypassLogin, startingWave } from "./battle-scene"; import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from "./field/pokemon"; import * as Utils from './utils'; import { Moves } from "./data/enums/moves"; -import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, FixedDamageAttr, OneHitKOAccuracyAttr } from "./data/move"; +import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, FixedDamageAttr, OneHitKOAccuracyAttr, ForceSwitchOutAttr, VariableTargetAttr } from "./data/move"; import { Mode } from './ui/ui'; import { Command } from "./ui/command-ui-handler"; import { Stat } from "./data/pokemon-stat"; -import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, PokemonFriendshipBoosterModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier } from "./modifier/modifier"; +import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier } from "./modifier/modifier"; import PartyUiHandler, { PartyOption, PartyUiMode } from "./ui/party-ui-handler"; import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from "./data/pokeball"; import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from "./data/battle-anims"; @@ -19,7 +19,7 @@ import { BattleStat, getBattleStatLevelChangeDescription, getBattleStatName } fr import { biomeLinks, getBiomeName } from "./data/biomes"; import { Biome } from "./data/enums/biome"; import { ModifierTier } from "./modifier/modifier-tier"; -import { FusePokemonModifierType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeOption, PokemonModifierType, PokemonMoveModifierType, RememberMoveModifierType, TmModifierType, getDailyRunStarterModifiers, getEnemyBuffModifierForWave, getModifierType, getPlayerModifierTypeOptions, getPlayerShopModifierTypeOptionsForWave, modifierTypes, regenerateModifierPoolThresholds } from "./modifier/modifier-type"; +import { FusePokemonModifierType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeOption, PokemonModifierType, PokemonMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, RememberMoveModifierType, TmModifierType, getDailyRunStarterModifiers, getEnemyBuffModifierForWave, getModifierType, getPlayerModifierTypeOptions, getPlayerShopModifierTypeOptionsForWave, modifierTypes, regenerateModifierPoolThresholds } from "./modifier/modifier-type"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import { BattlerTagLapseType, EncoreTag, HideSpriteTag as HiddenTag, ProtectedTag, TrappedTag } from "./data/battler-tags"; import { BattlerTagType } from "./data/enums/battler-tag-type"; @@ -30,7 +30,7 @@ import { Weather, WeatherType, getRandomWeatherType, getTerrainBlockMessage, get import { TempBattleStat } from "./data/temp-battle-stat"; import { ArenaTagSide, ArenaTrapTag, MistTag, TrickRoomTag } from "./data/arena-tag"; import { ArenaTagType } from "./data/enums/arena-tag-type"; -import { CheckTrappedAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr } from "./data/ability"; +import { CheckTrappedAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr, StatChangeCopyAbAttr } from "./data/ability"; import { Unlockables, getUnlockableName } from "./system/unlockables"; import { getBiomeKey } from "./field/arena"; import { BattleType, BattlerIndex, TurnCommand } from "./battle"; @@ -57,6 +57,8 @@ import { fetchDailyRunSeed, getDailyRunStarters } from "./data/daily-run"; import { GameModes, gameModes } from "./game-mode"; import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species"; import i18next from './plugins/i18n'; +import { Abilities } from "./data/enums/abilities"; +import { STARTER_FORM_OVERRIDE, STARTER_SPECIES_OVERRIDE } from './overrides'; export class LoginPhase extends Phase { private showText: boolean; @@ -330,6 +332,8 @@ export class TitlePhase extends Phase { this.scene.sessionPlayTime = 0; this.end(); }); + }).catch(err => { + console.error("Failed to load daily run:\n", err); }); }); } @@ -497,6 +501,7 @@ export class SelectStarterPhase extends Phase { starterPokemon.tryPopulateMoveset(starter.moveset); if (starter.passive) starterPokemon.passive = true; + starterPokemon.luck = this.scene.gameData.getDexAttrLuck(this.scene.gameData.dexData[starter.species.speciesId].caughtAttr); if (starter.pokerus) starterPokemon.pokerus = true; if (this.scene.gameMode.isSplicedOnly) @@ -813,14 +818,14 @@ export class EncounterPhase extends BattlePhase { const enemyField = this.scene.getEnemyField(); if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) - return i18next.t('menu:bossAppeared', {bossName: enemyField[0].name}); + return i18next.t('battle:bossAppeared', {bossName: enemyField[0].name}); if (this.scene.currentBattle.battleType === BattleType.TRAINER) - return i18next.t('menu:trainerAppeared', {trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true)}); + return i18next.t('battle:trainerAppeared', {trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true)}); return enemyField.length === 1 - ? i18next.t('menu:singleWildAppeared', {pokemonName: enemyField[0].name}) - : i18next.t('menu:multiWildAppeared', {pokemonName1: enemyField[0].name, pokemonName2: enemyField[1].name}) + ? i18next.t('battle:singleWildAppeared', {pokemonName: enemyField[0].name}) + : i18next.t('battle:multiWildAppeared', {pokemonName1: enemyField[0].name, pokemonName2: enemyField[1].name}) } doEncounterCommon(showEncounterMessage: boolean = true) { @@ -1174,18 +1179,30 @@ export class SummonPhase extends PartyMemberPokemonPhase { this.preSummon(); } + /** + * Sends out a Pokemon before the battle begins and shows the appropriate messages + */ preSummon(): void { const partyMember = this.getPokemon(); + // If the Pokemon about to be sent out is fainted, switch to the first non-fainted Pokemon if (partyMember.isFainted()) { + console.warn("The Pokemon about to be sent out is fainted. Attempting to resolve..."); const party = this.getParty(); - const nonFaintedIndex = party.slice(this.partyMemberIndex).findIndex(p => !p.isFainted()) + this.partyMemberIndex; - const nonFaintedPartyMember = party[nonFaintedIndex]; - party[nonFaintedIndex] = partyMember; - party[this.partyMemberIndex] = nonFaintedPartyMember; + + // Find the first non-fainted Pokemon index above the current one + const nonFaintedIndex = party.findIndex((p, i) => i > this.partyMemberIndex && !p.isFainted()); + if (nonFaintedIndex === -1) { + console.error("Party Details:\n", party); + throw new Error("All available Pokemon were fainted!"); + } + + // Swaps the fainted Pokemon and the first non-fainted Pokemon in the party + [party[this.partyMemberIndex], party[nonFaintedIndex]] = [party[nonFaintedIndex], party[this.partyMemberIndex]]; + console.warn("Swapped %s %O with %s %O", partyMember?.name, partyMember, party[0]?.name, party[0]); } if (this.player) { - this.scene.ui.showText(i18next.t('menu:playerGo', { pokemonName: this.getPokemon().name })); + this.scene.ui.showText(i18next.t('battle:playerGo', { pokemonName: this.getPokemon().name })); if (this.player) this.scene.pbTray.hide(); this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back_pb`); @@ -1353,8 +1370,8 @@ export class SwitchSummonPhase extends SummonPhase { applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, pokemon); this.scene.ui.showText(this.player ? - i18next.t('menu:playerComeBack', { pokemonName: pokemon.name }) : - i18next.t('menu:trainerComeBack', { + i18next.t('battle:playerComeBack', { pokemonName: pokemon.name }) : + i18next.t('battle:trainerComeBack', { trainerName: this.scene.currentBattle.trainer.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), pokemonName: pokemon.name }) @@ -1394,8 +1411,8 @@ export class SwitchSummonPhase extends SummonPhase { party[this.fieldIndex] = switchedPokemon; const showTextAndSummon = () => { this.scene.ui.showText(this.player ? - i18next.t('menu:playerGo', { pokemonName: switchedPokemon.name }) : - i18next.t('menu:trainerGo', { + i18next.t('battle:playerGo', { pokemonName: switchedPokemon.name }) : + i18next.t('battle:trainerGo', { trainerName: this.scene.currentBattle.trainer.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), pokemonName: this.getPokemon().name }) @@ -1419,9 +1436,11 @@ export class SwitchSummonPhase extends SummonPhase { super.onEnd(); const pokemon = this.getPokemon(); + const moveId = pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.move?.move; + const lastUsedMove = moveId ? allMoves[moveId] : undefined; // Compensate for turn spent summoning - if (pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command === Command.POKEMON) + if (pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command === Command.POKEMON || !!lastUsedMove?.findAttr(attr => attr instanceof ForceSwitchOutAttr)) //check if hard switch OR pivot move was used pokemon.battleSummonData.turnCount--; if (this.batonPass && pokemon) @@ -1540,7 +1559,7 @@ export class CheckSwitchPhase extends BattlePhase { return; } - this.scene.ui.showText(i18next.t('menu:switchQuestion', { pokemonName: this.useName ? pokemon.name : i18next.t('menu:pokemon') }), null, () => { + this.scene.ui.showText(i18next.t('battle:switchQuestion', { pokemonName: this.useName ? pokemon.name : i18next.t('battle:pokemon') }), null, () => { this.scene.ui.setMode(Mode.CONFIRM, () => { this.scene.ui.setMode(Mode.MESSAGE); this.scene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex); @@ -1560,7 +1579,7 @@ export class SummonMissingPhase extends SummonPhase { } preSummon(): void { - this.scene.ui.showText(i18next.t('menu:sendOutPokemon', { pokemonName: this.getPokemon().name})); + this.scene.ui.showText(i18next.t('battle:sendOutPokemon', { pokemonName: this.getPokemon().name})); this.scene.time.delayedCall(250, () => this.summon()); } } @@ -1575,7 +1594,7 @@ export class LevelCapPhase extends FieldPhase { this.scene.ui.setMode(Mode.MESSAGE).then(() => { this.scene.playSound('level_up_fanfare'); - this.scene.ui.showText(i18next.t('menu:levelCapUp', { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true); + this.scene.ui.showText(i18next.t('battle:levelCapUp', { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true); this.executeForAll(pokemon => pokemon.updateInfo(true)); }); } @@ -1661,52 +1680,52 @@ export class CommandPhase extends FieldPhase { switch (command) { case Command.FIGHT: let useStruggle = false; - if (cursor === -1 || playerPokemon.trySelectMove(cursor, args[0] as boolean) || (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length)) { + if (cursor === -1 || + playerPokemon.trySelectMove(cursor, args[0] as boolean) || + (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length)) { const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor].moveId : Moves.NONE : Moves.STRUGGLE; const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, move: { move: moveId, targets: [], ignorePP: args[0] }, args: args }; const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, moveId) : args[2]; - if (moveId) { - const move = playerPokemon.getMoveset()[cursor]; - if (move.getName().endsWith(' (N)')) { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:moveNotImplemented', { moveName: move.getName().slice(0, -4) }), null, () => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); - }, null, true); - return; - } - } else + if (!moveId) turnCommand.targets = [ this.fieldIndex ]; console.log(moveTargets, playerPokemon.name); if (moveTargets.targets.length <= 1 || moveTargets.multiple) turnCommand.move.targets = moveTargets.targets; + else if(playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1) + turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; else this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; success = true; - } else if (cursor < playerPokemon.getMoveset().length) { + } + else if (cursor < playerPokemon.getMoveset().length) { const move = playerPokemon.getMoveset()[cursor]; - if (playerPokemon.summonData.disabledMove === move.moveId) { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:moveDisabled', { moveName: move.getName() }), null, () => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); - }, null, true); - } + this.scene.ui.setMode(Mode.MESSAGE); + + // Decides between a Disabled, Not Implemented, or No PP translation message + const errorMessage = + playerPokemon.summonData.disabledMove === move.moveId ? 'battle:moveDisabled' : + move.getName().endsWith(' (N)') ? 'battle:moveNotImplemented' : 'battle:moveNoPP'; + const moveName = move.getName().replace(' (N)', ''); // Trims off the indicator + + this.scene.ui.showText(i18next.t(errorMessage, { moveName: moveName }), null, () => { + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); + }, null, true); } break; case Command.BALL: - if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || this.scene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarters).length - 1)) { + if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || (this.scene.getEnemyField().filter(p => p.isActive(true)).some(p => !p.scene.gameData.dexData[p.species.speciesId].caughtAttr) && this.scene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarters).length - 1))) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:noPokeballForce'), null, () => { + this.scene.ui.showText(i18next.t('battle:noPokeballForce'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:noPokeballTrainer'), null, () => { + this.scene.ui.showText(i18next.t('battle:noPokeballTrainer'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); @@ -1715,16 +1734,16 @@ export class CommandPhase extends FieldPhase { if (targets.length > 1) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:noPokeballMulti'), null, () => { + this.scene.ui.showText(i18next.t('battle:noPokeballMulti'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else if (cursor < 5) { const targetPokemon = this.scene.getEnemyField().find(p => p.isActive(true)); - if (targetPokemon.isBoss() && targetPokemon.bossSegmentIndex >= 1 && cursor < PokeballType.MASTER_BALL) { + if (targetPokemon.isBoss() && targetPokemon.bossSegmentIndex >= 1 && !targetPokemon.hasAbility(Abilities.WONDER_GUARD, false, true) && cursor < PokeballType.MASTER_BALL) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:noPokeballStrong'), null, () => { + this.scene.ui.showText(i18next.t('battle:noPokeballStrong'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); @@ -1744,14 +1763,14 @@ export class CommandPhase extends FieldPhase { if (!isSwitch && this.scene.arena.biomeType === Biome.END) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:noEscapeForce'), null, () => { + this.scene.ui.showText(i18next.t('battle:noEscapeForce'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); } else if (!isSwitch && this.scene.currentBattle.battleType === BattleType.TRAINER) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('menu:noEscapeTrainer'), null, () => { + this.scene.ui.showText(i18next.t('battle:noEscapeTrainer'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); @@ -1774,10 +1793,10 @@ export class CommandPhase extends FieldPhase { this.scene.ui.setMode(Mode.MESSAGE); } this.scene.ui.showText( - i18next.t('menu:noEscapePokemon', { + i18next.t('battle:noEscapePokemon', { pokemonName: this.scene.getPokemonById(trapTag.sourceId).name, moveName: trapTag.getMoveName(), - escapeVerb: isSwitch ? i18next.t('menu:escapeVerbSwitch') : i18next.t('menu:escapeVerbFlee') + escapeVerb: isSwitch ? i18next.t('battle:escapeVerbSwitch') : i18next.t('battle:escapeVerbFlee') }), null, () => { @@ -2027,7 +2046,7 @@ export class TurnEndPhase extends FieldPhase { pokemon.lapseTags(BattlerTagLapseType.TURN_END); if (pokemon.summonData.disabledMove && !--pokemon.summonData.disabledTurns) { - this.scene.pushPhase(new MessagePhase(this.scene, i18next.t('menu:notDisabled', { moveName: allMoves[pokemon.summonData.disabledMove].name }))); + this.scene.pushPhase(new MessagePhase(this.scene, i18next.t('battle:notDisabled', { moveName: allMoves[pokemon.summonData.disabledMove].name }))); pokemon.summonData.disabledMove = Moves.NONE; } @@ -2257,18 +2276,21 @@ export class MovePhase extends BattlePhase { // Assume conditions affecting targets only apply to moves with a single target let success = this.move.getMove().applyConditions(this.pokemon, targets[0], this.move.getMove()); - let failedText = null; + let cancelled = new Utils.BooleanHolder(false); + let failedText = this.move.getMove().getFailedText(this.pokemon, targets[0], this.move.getMove(), cancelled); if (success && this.scene.arena.isMoveWeatherCancelled(this.move.getMove())) success = false; - else if (success && this.scene.arena.isMoveTerrainCancelled(this.pokemon, this.move.getMove())) { + else if (success && this.scene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, this.move.getMove())) { success = false; - failedText = getTerrainBlockMessage(targets[0], this.scene.arena.terrain.terrainType); + if (failedText == null) + failedText = getTerrainBlockMessage(targets[0], this.scene.arena.terrain.terrainType); } if (success) this.scene.unshiftPhase(this.getEffectPhase()); else { this.pokemon.pushMoveHistory({ move: this.move.moveId, targets: this.targets, result: MoveResult.FAIL, virtual: this.move.virtual }); - this.showFailedText(failedText); + if (!cancelled.value) + this.showFailedText(failedText); } this.end(); @@ -2321,13 +2343,14 @@ export class MovePhase extends BattlePhase { showMoveText(): void { if (this.move.getMove().getAttrs(ChargeAttr).length) { - this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500); const lastMove = this.pokemon.getLastXMoves() as TurnMove[]; - if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER) + if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER){ + this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500); return; + } } - if (this.pokemon.getTag(BattlerTagType.RECHARGING)) + if (this.pokemon.getTag(BattlerTagType.RECHARGING || BattlerTagType.INTERRUPTED)) return; this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500); @@ -2335,7 +2358,7 @@ export class MovePhase extends BattlePhase { } showFailedText(failedText: string = null): void { - this.scene.queueMessage(failedText || i18next.t('menu:attackFailed')); + this.scene.queueMessage(failedText || i18next.t('battle:attackFailed')); } end() { @@ -2390,7 +2413,7 @@ export class MoveEffectPhase extends PokemonPhase { const targetHitChecks = Object.fromEntries(targets.map(p => [ p.getBattlerIndex(), this.hitCheck(p) ])); const activeTargets = targets.map(t => t.isActive(true)); - if (!activeTargets.length || (!this.move.getMove().isMultiTarget() && !targetHitChecks[this.targets[0]])) { + if (!activeTargets.length || (!this.move.getMove().getAttrs(VariableTargetAttr).length && !this.move.getMove().isMultiTarget() && !targetHitChecks[this.targets[0]])) { user.turnData.hitCount = 1; user.turnData.hitsLeft = 1; if (activeTargets.length) { @@ -2398,7 +2421,7 @@ export class MoveEffectPhase extends PokemonPhase { moveHistoryEntry.result = MoveResult.MISS; applyMoveAttrs(MissEffectAttr, user, null, this.move.getMove()); } else { - this.scene.queueMessage(i18next.t('menu:attackFailed')); + this.scene.queueMessage(i18next.t('battle:attackFailed')); moveHistoryEntry.result = MoveResult.FAIL; } return this.end(); @@ -2469,6 +2492,9 @@ export class MoveEffectPhase extends PokemonPhase { }); })); } + // Trigger effect which should only apply one time after all targeted effects have already applied + applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.POST_TARGET, + user, null, this.move.getMove()) Promise.allSettled(applyAttrs).then(() => this.end()); }); }); @@ -2482,7 +2508,7 @@ export class MoveEffectPhase extends PokemonPhase { else { const hitsTotal = user.turnData.hitCount - Math.max(user.turnData.hitsLeft, 0); if (hitsTotal > 1) - this.scene.queueMessage(i18next.t('menu:attackHitsCount', { count: hitsTotal })); + this.scene.queueMessage(i18next.t('battle:attackHitsCount', { count: hitsTotal })); this.scene.applyModifiers(HitHealModifier, this.player, user); } } @@ -2544,7 +2570,7 @@ export class MoveEffectPhase extends PokemonPhase { : 3 / (3 + Math.min(targetEvasionLevel.value - userAccuracyLevel.value, 6)); } - applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, user, BattleStat.ACC, accuracyMultiplier); + applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, user, BattleStat.ACC, accuracyMultiplier, this.move.getMove()); const evasionMultiplier = new Utils.NumberHolder(1); applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, this.getTarget(), BattleStat.EVA, evasionMultiplier); @@ -2651,8 +2677,9 @@ export class StatChangePhase extends PokemonPhase { private levels: integer; private showMessage: boolean; private ignoreAbilities: boolean; + private canBeCopied: boolean; - constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], levels: integer, showMessage: boolean = true, ignoreAbilities: boolean = false) { + constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], levels: integer, showMessage: boolean = true, ignoreAbilities: boolean = false, canBeCopied: boolean = true) { super(scene, battlerIndex); this.selfTarget = selfTarget; @@ -2660,6 +2687,7 @@ export class StatChangePhase extends PokemonPhase { this.levels = levels; this.showMessage = showMessage; this.ignoreAbilities = ignoreAbilities; + this.canBeCopied = canBeCopied; } start() { @@ -2667,7 +2695,6 @@ export class StatChangePhase extends PokemonPhase { let random = false; - const allStats = Utils.getEnumValues(BattleStat); if (this.stats.length === 1 && this.stats[0] === BattleStat.RAND) { this.stats[0] = this.getRandomStat(); random = true; @@ -2708,8 +2735,15 @@ export class StatChangePhase extends PokemonPhase { for (let stat of filteredStats) pokemon.summonData.battleStats[stat] = Math.max(Math.min(pokemon.summonData.battleStats[stat] + levels.value, 6), -6); - applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget) - this.end(); + if (levels.value > 0 && this.canBeCopied) + for (let opponent of pokemon.getOpponents()) + applyAbAttrs(StatChangeCopyAbAttr, opponent, null, this.stats, levels.value); + + applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget); + + pokemon.updateInfo(); + + handleTutorial(this.scene, Tutorial.Stat_Change).then(() => super.end()); }; if (relLevels.filter(l => l).length && this.scene.moveAnimations) { @@ -2809,7 +2843,7 @@ export class StatChangePhase extends PokemonPhase { if (relLevelStats.length > 1) { statsFragment = relLevelStats.length >= 5 ? 'stats' - : `${relLevelStats.slice(0, -1).map(s => getBattleStatName(s)).join(', ')}, and ${getBattleStatName(relLevelStats[relLevelStats.length - 1])}`; + : `${relLevelStats.slice(0, -1).map(s => getBattleStatName(s)).join(', ')}${relLevelStats.length > 2 ? ',' : ''} and ${getBattleStatName(relLevelStats[relLevelStats.length - 1])}`; } else statsFragment = getBattleStatName(relLevelStats[0]); messages.push(getPokemonMessage(this.getPokemon(), `'s ${statsFragment} ${getBattleStatLevelChangeDescription(Math.abs(parseInt(rl)), levels >= 1)}!`)); @@ -3146,8 +3180,8 @@ export class FaintPhase extends PokemonPhase { this.scene.getField(true).filter(p => p !== pokemon).forEach(p => p.removeTagsBySourceId(pokemon.id)); pokemon.faintCry(() => { - const friendshipDecrease = new Utils.IntegerHolder(10); - pokemon.friendship = Math.max(pokemon.friendship - friendshipDecrease.value, 0); + if (pokemon instanceof PlayerPokemon) + pokemon.addFriendship(-10); pokemon.hideInfo(); this.scene.playSound('faint'); this.scene.tweens.add({ @@ -3208,24 +3242,22 @@ export class VictoryPhase extends PokemonPhase { const expShareModifier = this.scene.findModifier(m => m instanceof ExpShareModifier) as ExpShareModifier; const expBalanceModifier = this.scene.findModifier(m => m instanceof ExpBalanceModifier) as ExpBalanceModifier; const multipleParticipantExpBonusModifier = this.scene.findModifier(m => m instanceof MultipleParticipantExpBonusModifier) as MultipleParticipantExpBonusModifier; - const expPartyMembers = party.filter(p => p.hp && p.level < this.scene.getMaxExpLevel()); + const nonFaintedPartyMembers = party.filter(p => p.hp); + const expPartyMembers = nonFaintedPartyMembers.filter(p => p.level < this.scene.getMaxExpLevel()); const partyMemberExp = []; if (participantIds.size) { let expValue = this.getPokemon().getExpValue(); if (this.scene.currentBattle.battleType === BattleType.TRAINER) expValue = Math.floor(expValue * 1.5); - for (let partyMember of expPartyMembers) { + for (let partyMember of nonFaintedPartyMembers) { const pId = partyMember.id; const participated = participantIds.has(pId); - if (participated) { - const friendshipIncrease = new Utils.IntegerHolder(2); - this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, partyMember, friendshipIncrease); - partyMember.friendship = Math.min(partyMember.friendship + friendshipIncrease.value, 255); - if (partyMember.friendship === 255) - this.scene.validateAchv(achvs.MAX_FRIENDSHIP); - } - else if (!expShareModifier) { + if (participated) + partyMember.addFriendship(2); + if (!expPartyMembers.includes(partyMember)) + continue; + if (!participated && !expShareModifier) { partyMemberExp.push(0); continue; } @@ -3333,10 +3365,10 @@ export class TrainerVictoryPhase extends BattlePhase { const trainerType = this.scene.currentBattle.trainer.config.trainerType; if (vouchers.hasOwnProperty(TrainerType[trainerType])) { if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer.config.isBoss) - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.VOUCHER)); + this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType])); } - this.scene.ui.showText(i18next.t('menu:trainerDefeated', { trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true) }), null, () => { + this.scene.ui.showText(i18next.t('battle:trainerDefeated', { trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true) }), null, () => { const victoryMessages = this.scene.currentBattle.trainer.getVictoryMessages(); const showMessage = () => { let message: string; @@ -3603,7 +3635,7 @@ export class ExpPhase extends PlayerPartyMemberPokemonPhase { let exp = new Utils.NumberHolder(this.expValue); this.scene.applyModifiers(ExpBoosterModifier, true, exp); exp.value = Math.floor(exp.value); - this.scene.ui.showText(i18next.t('menu:expGain', { pokemonName: pokemon.name, exp: exp.value }), null, () => { + this.scene.ui.showText(i18next.t('battle:expGain', { pokemonName: pokemon.name, exp: exp.value }), null, () => { const lastLevel = pokemon.level; let newLevel: integer; pokemon.addExp(exp.value); @@ -3691,7 +3723,7 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { pokemon.calculateStats(); pokemon.updateInfo(); this.scene.playSound('level_up_fanfare'); - this.scene.ui.showText(i18next.t('menu:levelUp', { pokemonName: this.getPokemon().name, level: this.level }), null, () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()), null, true); + this.scene.ui.showText(i18next.t('battle:levelUp', { pokemonName: this.getPokemon().name, level: this.level }), null, () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()), null, true); if (this.level <= 100) { const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); for (let lm of levelMoves) @@ -3740,7 +3772,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { .then(() => { this.scene.ui.setMode(messageMode).then(() => { this.scene.playSound('level_up_fanfare'); - this.scene.ui.showText(i18next.t('menu:learnMove', { pokemonName: pokemon.name, moveName: move.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMove', { pokemonName: pokemon.name, moveName: move.name }), null, () => { this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true); this.end(); }, messageMode === Mode.EVOLUTION_SCENE ? 1000 : null, true); @@ -3749,15 +3781,15 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { }); } else { this.scene.ui.setMode(messageMode).then(() => { - this.scene.ui.showText(i18next.t('menu:learnMovePrompt', { pokemonName: pokemon.name, moveName: move.name }), null, () => { - this.scene.ui.showText(i18next.t('menu:learnMoveLimitReached', { pokemonName: pokemon.name }), null, () => { - this.scene.ui.showText(i18next.t('menu:learnMoveReplaceQuestion', { moveName: move.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMovePrompt', { pokemonName: pokemon.name, moveName: move.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMoveLimitReached', { pokemonName: pokemon.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMoveReplaceQuestion', { moveName: move.name }), null, () => { const noHandler = () => { this.scene.ui.setMode(messageMode).then(() => { - this.scene.ui.showText(i18next.t('menu:learnMoveStopTeaching', { moveName: move.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMoveStopTeaching', { moveName: move.name }), null, () => { this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { this.scene.ui.setMode(messageMode); - this.scene.ui.showText(i18next.t('menu:learnMoveNotLearned', { pokemonName: pokemon.name, moveName: move.name }), null, () => this.end(), null, true); + this.scene.ui.showText(i18next.t('battle:learnMoveNotLearned', { pokemonName: pokemon.name, moveName: move.name }), null, () => this.end(), null, true); }, () => { this.scene.ui.setMode(messageMode); this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, this.moveId)); @@ -3768,7 +3800,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { }; this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { this.scene.ui.setMode(messageMode); - this.scene.ui.showText(i18next.t('menu:learnMoveForgetQuestion'), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMoveForgetQuestion'), null, () => { this.scene.ui.setModeWithoutClear(Mode.SUMMARY, this.getPokemon(), SummaryUiMode.LEARN_MOVE, move, (moveIndex: integer) => { if (moveIndex === 4) { noHandler(); @@ -3776,7 +3808,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { } this.scene.ui.setMode(messageMode).then(() => { this.scene.ui.showText('@d{32}1, @d{15}2, and@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Poof!', null, () => { - this.scene.ui.showText(i18next.t('menu:learnMoveForgetSuccess', { pokemonName: pokemon.name, moveName: pokemon.moveset[moveIndex].getName() }), null, () => { + this.scene.ui.showText(i18next.t('battle:learnMoveForgetSuccess', { pokemonName: pokemon.name, moveName: pokemon.moveset[moveIndex].getName() }), null, () => { this.scene.ui.showText('And…', null, () => { pokemon.setMove(moveIndex, Moves.NONE); this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, this.moveId)); @@ -4081,7 +4113,10 @@ export class AttemptCapturePhase extends PokemonPhase { if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1) this.scene.validateAchv(achvs.HIDDEN_ABILITY); - if (pokemon.species.pseudoLegendary || pokemon.species.legendary) + if (pokemon.species.subLegendary) + this.scene.validateAchv(achvs.CATCH_SUB_LEGENDARY); + + if (pokemon.species.legendary) this.scene.validateAchv(achvs.CATCH_LEGENDARY); if (pokemon.species.mythical) @@ -4089,9 +4124,9 @@ export class AttemptCapturePhase extends PokemonPhase { this.scene.pokemonInfoContainer.show(pokemon, true); - this.scene.gameData.updateSpeciesDexIvs(pokemon.species.speciesId, pokemon.ivs); + this.scene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); - this.scene.ui.showText(i18next.t('menu:pokemonCaught', { pokemonName: pokemon.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:pokemonCaught', { pokemonName: pokemon.name }), null, () => { const end = () => { this.scene.pokemonInfoContainer.hide(); this.removePb(); @@ -4177,7 +4212,7 @@ export class AttemptRunPhase extends PokemonPhase { if (playerPokemon.randSeedInt(256) < escapeChance.value) { this.scene.playSound('flee'); - this.scene.queueMessage(i18next.t('menu:runAwaySuccess'), null, true, 500); + this.scene.queueMessage(i18next.t('battle:runAwaySuccess'), null, true, 500); this.scene.tweens.add({ targets: [ this.scene.arenaEnemy, enemyField ].flat(), @@ -4198,7 +4233,7 @@ export class AttemptRunPhase extends PokemonPhase { this.scene.pushPhase(new BattleEndPhase(this.scene)); this.scene.pushPhase(new NewBattlePhase(this.scene)); } else - this.scene.queueMessage(i18next.t('menu:runAwayCannotEscape'), null, true, 500); + this.scene.queueMessage(i18next.t('battle:runAwayCannotEscape'), null, true, 500); this.end(); } @@ -4230,7 +4265,7 @@ export class SelectModifierPhase extends BattlePhase { const modifierSelectCallback = (rowCursor: integer, cursor: integer) => { if (rowCursor < 0 || cursor < 0) { - this.scene.ui.showText(i18next.t('menu:skipItemQuestion'), null, () => { + this.scene.ui.showText(i18next.t('battle:skipItemQuestion'), null, () => { this.scene.ui.setOverlayMode(Mode.CONFIRM, () => { this.scene.ui.revertMode(); this.scene.ui.setMode(Mode.MESSAGE); @@ -4334,6 +4369,7 @@ export class SelectModifierPhase extends BattlePhase { 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 @@ -4353,7 +4389,7 @@ export class SelectModifierPhase extends BattlePhase { }); } else this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - }, pokemonModifierType.selectFilter, modifierType instanceof PokemonMoveModifierType ? (modifierType as PokemonMoveModifierType).moveSelectFilter : undefined, tmMoveId); + }, pokemonModifierType.selectFilter, modifierType instanceof PokemonMoveModifierType ? (modifierType as PokemonMoveModifierType).moveSelectFilter : undefined, tmMoveId, isPpRestoreModifier); } } else applyModifier(modifierType.newModifier()); @@ -4408,7 +4444,7 @@ export class EggLapsePhase extends Phase { }); if (eggsToHatch.length) { - this.scene.queueMessage(i18next.t('menu:eggHatching')); + this.scene.queueMessage(i18next.t('battle:eggHatching')); for (let egg of eggsToHatch) this.scene.unshiftPhase(new EggHatchPhase(this.scene, egg)); @@ -4502,7 +4538,7 @@ export class ScanIvsPhase extends PokemonPhase { const pokemon = this.getPokemon(); - this.scene.ui.showText(i18next.t('menu:ivScannerUseQuestion', { pokemonName: pokemon.name }), null, () => { + this.scene.ui.showText(i18next.t('battle:ivScannerUseQuestion', { pokemonName: pokemon.name }), null, () => { this.scene.ui.setMode(Mode.CONFIRM, () => { this.scene.ui.setMode(Mode.MESSAGE); this.scene.ui.clearText(); diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index adc1f3d52..8ad0711f5 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -1,4 +1,6 @@ import i18next from 'i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; + import { menu as enMenu } from '../locales/en/menu'; import { menu as esMenu } from '../locales/es/menu'; import { menu as itMenu } from '../locales/it/menu'; @@ -11,23 +13,33 @@ import { menuUiHandler as frMenuUiHandler } from '../locales/fr/menu-ui-handler. import { menuUiHandler as itMenuUiHandler } from '../locales/it/menu-ui-handler.js'; import { menuUiHandler as deMenuUiHandler } from '../locales/de/menu-ui-handler.js'; +import { battle as enBattle } from '../locales/en/battle'; +import { battle as esBattle } from '../locales/es/battle'; +import { battle as itBattle } from '../locales/it/battle'; +import { battle as frBattle } from '../locales/fr/battle'; +import { battle as deBattle } from '../locales/de/battle'; + import { move as enMove } from '../locales/en/move'; import { move as esMove } from '../locales/es/move'; +import { move as itMove } from '../locales/it/move'; import { move as frMove } from '../locales/fr/move'; import { move as deMove } from '../locales/de/move'; import { ability as enAbility } from '../locales/en/ability'; import { ability as esAbility } from '../locales/es/ability'; +import { ability as itAbility } from '../locales/it/ability'; import { ability as frAbility } from '../locales/fr/ability'; import { ability as deAbility } from '../locales/de/ability'; import { pokeball as enPokeball } from '../locales/en/pokeball'; import { pokeball as esPokeball } from '../locales/es/pokeball'; +import { pokeball as itPokeball } from '../locales/it/pokeball'; import { pokeball as frPokeball } from '../locales/fr/pokeball'; import { pokeball as dePokeball } from '../locales/de/pokeball'; import { pokemon as enPokemon } from '../locales/en/pokemon'; import { pokemon as esPokemon } from '../locales/es/pokemon'; +import { pokemon as itPokemon } from '../locales/it/pokemon'; import { pokemon as frPokemon } from '../locales/fr/pokemon'; import { pokemon as dePokemon } from '../locales/de/pokemon'; @@ -39,17 +51,32 @@ import { pokemonStat as dePokemonStat } from '../locales/de/pokemon-stat'; import { commandUiHandler as enCommandUiHandler } from '../locales/en/command-ui-handler'; import { commandUiHandler as esCommandUiHandler } from '../locales/es/command-ui-handler'; +import { commandUiHandler as itCommandUiHandler } from '../locales/it/command-ui-handler'; import { commandUiHandler as frCommandUiHandler } from '../locales/fr/command-ui-handler'; import { commandUiHandler as deCommandUiHandler } from '../locales/de/command-ui-handler'; import { fightUiHandler as enFightUiHandler } from '../locales/en/fight-ui-handler'; +import { fightUiHandler as esFightUiHandler } from '../locales/es/fight-ui-handler'; import { fightUiHandler as frFightUiHandler } from '../locales/fr/fight-ui-handler'; +import { fightUiHandler as itFightUiHandler } from '../locales/it/fight-ui-handler'; +import { fightUiHandler as deFightUiHandler } from '../locales/de/fight-ui-handler'; + +import { tutorial as enTutorial } from '../locales/en/tutorial'; +import { tutorial as esTutorial } from '../locales/es/tutorial'; +import { tutorial as frTutorial } from '../locales/fr/tutorial'; +import { tutorial as itTutorial} from '../locales/it/tutorial'; +import { tutorial as deTutorial } from '../locales/de/tutorial'; + +import { starterSelectUiHandler as enStarterSelectUiHandler } from '../locales/en/starter-select-ui-handler'; +import { starterSelectUiHandler as esStarterSelectUiHandler } from '../locales/es/starter-select-ui-handler'; +import { starterSelectUiHandler as frStarterSelectUiHandler } from '../locales/fr/starter-select-ui-handler'; +import { starterSelectUiHandler as itStarterSelectUiHandler} from '../locales/it/starter-select-ui-handler'; +import { starterSelectUiHandler as deStarterSelectUiHandler } from '../locales/de/starter-select-ui-handler'; export interface SimpleTranslationEntries { [key: string]: string } - export interface MoveTranslationEntry { name: string, effect: string @@ -72,10 +99,8 @@ export interface Localizable { localize(): void; } -const DEFAULT_LANGUAGE_OVERRIDE = ''; - export function initI18n(): void { - let lang = 'en'; + let lang = ''; if (localStorage.getItem('prLang')) lang = localStorage.getItem('prLang'); @@ -86,18 +111,20 @@ export function initI18n(): void { * Q: How do I add a new language? * A: To add a new language, create a new folder in the locales directory with the language code. * Each language folder should contain a file for each namespace (ex. menu.ts) with the translations. + * Don't forget to declare new language in `supportedLngs` i18next initializer * * Q: How do I add a new namespace? * A: To add a new namespace, create a new file in each language folder with the translations. * Then update the `resources` field in the init() call and the CustomTypeOptions interface. - * + * * Q: How do I make a language selectable in the settings? * A: In src/system/settings.ts, add a new case to the Setting.Language switch statement. */ - i18next.init({ - lng: DEFAULT_LANGUAGE_OVERRIDE ? DEFAULT_LANGUAGE_OVERRIDE : lang, + i18next.use(LanguageDetector).init({ + lng: lang, fallbackLng: 'en', + supportedLngs: ['en', 'es', 'fr', 'it', 'de'], debug: true, interpolation: { escapeValue: false, @@ -106,6 +133,7 @@ export function initI18n(): void { en: { menu: enMenu, menuUiHandler: enMenuUiHandler, + battle: enBattle, move: enMove, ability: enAbility, pokeball: enPokeball, @@ -113,20 +141,27 @@ export function initI18n(): void { pokemonStat: enPokemonStat, commandUiHandler: enCommandUiHandler, fightUiHandler: enFightUiHandler, + tutorial: enTutorial, + starterSelectUiHandler: enStarterSelectUiHandler }, es: { menu: esMenu, menuUiHandler: esMenuUiHandler, + battle: esBattle, move: esMove, ability: esAbility, pokeball: esPokeball, pokemon: esPokemon, pokemonStat: esPokemonStat, commandUiHandler: esCommandUiHandler, + fightUiHandler: esFightUiHandler, + tutorial: esTutorial, + starterSelectUiHandler: esStarterSelectUiHandler }, fr: { menu: frMenu, menuUiHandler: frMenuUiHandler, + battle: frBattle, move: frMove, ability: frAbility, pokeball: frPokeball, @@ -134,21 +169,36 @@ export function initI18n(): void { pokemonStat: frPokemonStat, commandUiHandler: frCommandUiHandler, fightUiHandler: frFightUiHandler, + tutorial: frTutorial, + starterSelectUiHandler: frStarterSelectUiHandler }, it: { menu: itMenu, menuUiHandler: itMenuUiHandler, + battle: itBattle, + move: itMove, + ability: itAbility, + pokeball: itPokeball, + pokemon: itPokemon, pokemonStat: itPokemonStat, + commandUiHandler: itCommandUiHandler, + fightUiHandler: itFightUiHandler, + tutorial: itTutorial, + starterSelectUiHandler: itStarterSelectUiHandler }, de: { menu: deMenu, menuUiHandler: deMenuUiHandler, + battle: deBattle, move: deMove, ability: deAbility, pokeball: dePokeball, pokemon: dePokemon, pokemonStat: dePokemonStat, commandUiHandler: deCommandUiHandler, + fightUiHandler: deFightUiHandler, + tutorial: deTutorial, + starterSelectUiHandler: deStarterSelectUiHandler } }, }); @@ -161,12 +211,15 @@ declare module 'i18next' { menu: typeof enMenu; menuUiHandler: typeof enMenuUiHandler; move: typeof enMove; + battle: typeof enBattle, ability: typeof enAbility; pokeball: typeof enPokeball; pokemon: typeof enPokemon; pokemonStat: typeof enPokemonStat; commandUiHandler: typeof enCommandUiHandler; fightUiHandler: typeof enFightUiHandler; + tutorial: typeof enTutorial; + starterSelectUiHandler: typeof enStarterSelectUiHandler; }; } } diff --git a/src/system/achv.ts b/src/system/achv.ts index 2307347db..bcf857069 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -7,6 +7,7 @@ export enum AchvTier { COMMON, GREAT, ULTRA, + ROGUE, MASTER } @@ -50,8 +51,10 @@ export class Achv { } getTier(): AchvTier { - if (this.score >= 100) + if (this.score >= 150) return AchvTier.MASTER; + if (this.score >= 100) + return AchvTier.ROGUE; if (this.score >= 50) return AchvTier.ULTRA; if (this.score >= 25) @@ -131,11 +134,13 @@ export const achvs = { SPLICE: new Achv('Infinite Fusion', 'Splice two Pokémon together with DNA Splicers', 'dna_splicers', 10), MINI_BLACK_HOLE: new ModifierAchv('A Hole Lot of Items', 'Acquire a Mini Black Hole', 'mini_black_hole', 25, modifier => modifier instanceof TurnHeldItemTransferModifier).setSecret(), CATCH_MYTHICAL: new Achv('Mythical', 'Catch a mythical Pokémon', 'strange_ball', 50).setSecret(), - CATCH_LEGENDARY: new Achv('Legendary', 'Catch a legendary Pokémon', 'mb', 75).setSecret(), + CATCH_SUB_LEGENDARY: new Achv('(Sub-)Legendary', 'Catch a sub-legendary Pokémon', 'rb', 75).setSecret(), + CATCH_LEGENDARY: new Achv('Legendary', 'Catch a legendary Pokémon', 'mb', 100).setSecret(), SEE_SHINY: new Achv('Shiny', 'Find a shiny Pokémon in the wild', 'pb_gold', 75), SHINY_PARTY: new Achv('That\'s Dedication', 'Have a full party of shiny Pokémon', 'shiny_charm', 100).setSecret(true), HATCH_MYTHICAL: new Achv('Mythical Egg', 'Hatch a mythical Pokémon from an egg', 'pair_of_tickets', 75).setSecret(), - HATCH_LEGENDARY: new Achv('Legendary Egg', 'Hatch a legendary Pokémon from an egg', 'mystic_ticket', 100).setSecret(), + HATCH_SUB_LEGENDARY: new Achv('Sub-Legendary Egg', 'Hatch a sub-legendary Pokémon from an egg', 'mystic_ticket', 100).setSecret(), + HATCH_LEGENDARY: new Achv('Legendary Egg', 'Hatch a legendary Pokémon from an egg', 'mystic_ticket', 125).setSecret(), HATCH_SHINY: new Achv('Shiny Egg', 'Hatch a shiny Pokémon from an egg', 'golden_mystic_ticket', 100).setSecret(), HIDDEN_ABILITY: new Achv('Hidden Potential', 'Catch a Pokémon with a hidden ability', 'ability_charm', 75), PERFECT_IVS: new Achv('Certificate of Authenticity', 'Get perfect IVs on a Pokémon', 'blunder_policy', 100), diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 23c3f24af..bf5486810 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -169,6 +169,7 @@ export interface StarterDataEntry { moveset: StarterMoveset | StarterFormMoveData; eggMoves: integer; candyCount: integer; + friendship: integer; abilityAttr: integer; passiveAttr: integer; valueReduction: integer; @@ -357,8 +358,11 @@ export class GameData { this.starterData = systemData.starterData; } - if (systemData.gameStats) + if (systemData.gameStats) { + if (systemData.gameStats.legendaryPokemonCaught !== undefined && systemData.gameStats.subLegendaryPokemonCaught === undefined) + this.fixLegendaryStats(systemData); this.gameStats = systemData.gameStats; + } if (systemData.unlocks) { for (let key of Object.keys(systemData.unlocks)) { @@ -988,6 +992,7 @@ export class GameData { moveset: null, eggMoves: 0, candyCount: 0, + friendship: 0, abilityAttr: defaultStarterSpecies.includes(speciesId) ? AbilityAttr.ABILITY_1 : 0, passiveAttr: 0, valueReduction: 0 @@ -1003,7 +1008,9 @@ export class GameData { if (incrementCount) { dexEntry.seenCount++; this.gameStats.pokemonSeen++; - if (!trainer && pokemon.species.pseudoLegendary || pokemon.species.legendary) + if (!trainer && pokemon.species.subLegendary) + this.gameStats.subLegendaryPokemonSeen++; + else if (!trainer && pokemon.species.legendary) this.gameStats.legendaryPokemonSeen++; else if (!trainer && pokemon.species.mythical) this.gameStats.mythicalPokemonSeen++; @@ -1035,12 +1042,15 @@ export class GameData { const hasPrevolution = pokemonPrevolutions.hasOwnProperty(species.speciesId); const newCatch = !caughtAttr; + const hasNewAttr = (caughtAttr & dexAttr) !== dexAttr; if (incrementCount) { if (!fromEgg) { dexEntry.caughtCount++; this.gameStats.pokemonCaught++; - if (pokemon.species.pseudoLegendary || pokemon.species.legendary) + if (pokemon.species.subLegendary) + this.gameStats.subLegendaryPokemonCaught++; + else if (pokemon.species.legendary) this.gameStats.legendaryPokemonCaught++; else if (pokemon.species.mythical) this.gameStats.mythicalPokemonCaught++; @@ -1049,7 +1059,9 @@ export class GameData { } else { dexEntry.hatchedCount++; this.gameStats.pokemonHatched++; - if (pokemon.species.pseudoLegendary || pokemon.species.legendary) + if (pokemon.species.subLegendary) + this.gameStats.subLegendaryPokemonHatched++; + else if (pokemon.species.legendary) this.gameStats.legendaryPokemonHatched++; else if (pokemon.species.mythical) this.gameStats.mythicalPokemonHatched++; @@ -1057,7 +1069,7 @@ export class GameData { this.gameStats.shinyPokemonHatched++; } - if (!hasPrevolution) + if (!hasPrevolution && (!pokemon.scene.gameMode.isDaily || hasNewAttr || fromEgg)) this.addStarterCandy(species, (1 * (pokemon.isShiny() ? 5 * Math.pow(2, pokemon.variant || 0) : 1)) * (fromEgg || pokemon.isBoss() ? 2 : 1)); } @@ -1189,6 +1201,10 @@ export class GameData { return Math.pow(2, this.getSpeciesDefaultNature(species)); } + getDexAttrLuck(dexAttr: bigint): integer { + return dexAttr & DexAttr.SHINY ? dexAttr & DexAttr.VARIANT_3 ? 3 : dexAttr & DexAttr.VARIANT_2 ? 2 : 1 : 0; + } + getNaturesForAttr(natureAttr: integer): Nature[] { let ret: Nature[] = []; for (let n = 0; n < 25; n++) { @@ -1304,4 +1320,22 @@ export class GameData { for (let starterId of defaultStarterSpecies) systemData.starterData[starterId].abilityAttr |= AbilityAttr.ABILITY_1; } + + fixLegendaryStats(systemData: SystemSaveData): void { + systemData.gameStats.subLegendaryPokemonSeen = 0; + systemData.gameStats.subLegendaryPokemonCaught = 0; + systemData.gameStats.subLegendaryPokemonHatched = 0; + allSpecies.filter(s => s.subLegendary).forEach(s => { + const dexEntry = systemData.dexData[s.speciesId]; + systemData.gameStats.subLegendaryPokemonSeen += dexEntry.seenCount; + systemData.gameStats.legendaryPokemonSeen = Math.max(systemData.gameStats.legendaryPokemonSeen - dexEntry.seenCount, 0); + systemData.gameStats.subLegendaryPokemonCaught += dexEntry.caughtCount; + systemData.gameStats.legendaryPokemonCaught = Math.max(systemData.gameStats.legendaryPokemonCaught - dexEntry.caughtCount, 0); + systemData.gameStats.subLegendaryPokemonHatched += dexEntry.hatchedCount; + systemData.gameStats.legendaryPokemonHatched = Math.max(systemData.gameStats.legendaryPokemonHatched - dexEntry.hatchedCount, 0); + }); + systemData.gameStats.subLegendaryPokemonSeen = Math.max(systemData.gameStats.subLegendaryPokemonSeen, systemData.gameStats.subLegendaryPokemonCaught); + systemData.gameStats.legendaryPokemonSeen = Math.max(systemData.gameStats.legendaryPokemonSeen, systemData.gameStats.legendaryPokemonCaught); + systemData.gameStats.mythicalPokemonSeen = Math.max(systemData.gameStats.mythicalPokemonSeen, systemData.gameStats.mythicalPokemonCaught); + } } \ No newline at end of file diff --git a/src/system/game-stats.ts b/src/system/game-stats.ts index 9a564b3c3..bf25b0e88 100644 --- a/src/system/game-stats.ts +++ b/src/system/game-stats.ts @@ -18,6 +18,9 @@ export class GameStats { public pokemonDefeated: integer; public pokemonCaught: integer; public pokemonHatched: integer; + public subLegendaryPokemonSeen: integer; + public subLegendaryPokemonCaught: integer; + public subLegendaryPokemonHatched: integer; public legendaryPokemonSeen: integer; public legendaryPokemonCaught: integer; public legendaryPokemonHatched: integer; @@ -52,6 +55,10 @@ export class GameStats { this.pokemonDefeated = source?.pokemonDefeated || 0; this.pokemonCaught = source?.pokemonCaught || 0; this.pokemonHatched = source?.pokemonHatched || 0; + // Currently handled by migration + this.subLegendaryPokemonSeen = source?.subLegendaryPokemonSeen; + this.subLegendaryPokemonCaught = source?.subLegendaryPokemonCaught; + this.subLegendaryPokemonHatched = source?.subLegendaryPokemonHatched; this.legendaryPokemonSeen = source?.legendaryPokemonSeen || 0; this.legendaryPokemonCaught = source?.legendaryPokemonCaught || 0; this.legendaryPokemonHatched = source?.legendaryPokemonHatched || 0; diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index 8ad14d5ca..b9589020e 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -36,6 +36,7 @@ export default class PokemonData { public friendship: integer; public metLevel: integer; public metBiome: Biome | -1; + public luck: integer; public pauseEvolutions: boolean; public pokerus: boolean; @@ -45,6 +46,7 @@ export default class PokemonData { public fusionShiny: boolean; public fusionVariant: Variant; public fusionGender: Gender; + public fusionLuck: integer; public boss: boolean; @@ -75,6 +77,7 @@ export default class PokemonData { this.friendship = source.friendship !== undefined ? source.friendship : getPokemonSpecies(this.species).baseFriendship; this.metLevel = source.metLevel || 5; this.metBiome = source.metBiome !== undefined ? source.metBiome : -1; + this.luck = source.luck !== undefined ? source.luck : (source.shiny ? (source.variant + 1) : 0); if (!forHistory) this.pauseEvolutions = !!source.pauseEvolutions; this.pokerus = !!source.pokerus; @@ -85,6 +88,7 @@ export default class PokemonData { this.fusionShiny = source.fusionShiny; this.fusionVariant = source.fusionVariant; this.fusionGender = source.fusionGender; + this.fusionLuck = source.fusionLuck !== undefined ? source.fusionLuck : (source.fusionShiny ? source.fusionVariant + 1 : 0); if (!forHistory) this.boss = (source instanceof EnemyPokemon && !!source.bossSegments) || (!this.player && !!source.boss); diff --git a/src/system/settings.ts b/src/system/settings.ts index df4f894c9..3805a35bb 100644 --- a/src/system/settings.ts +++ b/src/system/settings.ts @@ -25,6 +25,7 @@ export enum Setting { Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS", Player_Gender = "PLAYER_GENDER", Gamepad_Support = "GAMEPAD_SUPPORT", + Swap_A_and_B = "SWAP_A_B", // Swaps which gamepad button handles ACTION and CANCEL Touch_Controls = "TOUCH_CONTROLS", Vibration = "VIBRATION" } @@ -56,6 +57,7 @@ export const settingOptions: SettingOptions = { [Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ], [Setting.Player_Gender]: [ 'Boy', 'Girl' ], [Setting.Gamepad_Support]: [ 'Auto', 'Disabled' ], + [Setting.Swap_A_and_B]: [ 'Enabled', 'Disabled' ], [Setting.Touch_Controls]: [ 'Auto', 'Disabled' ], [Setting.Vibration]: [ 'Auto', 'Disabled' ] }; @@ -79,6 +81,7 @@ export const settingDefaults: SettingDefaults = { [Setting.Fusion_Palette_Swaps]: 1, [Setting.Player_Gender]: 0, [Setting.Gamepad_Support]: 0, + [Setting.Swap_A_and_B]: 1, // Set to 'Disabled' by default [Setting.Touch_Controls]: 0, [Setting.Vibration]: 0 }; @@ -148,6 +151,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) case Setting.Gamepad_Support: scene.gamepadSupport = settingOptions[setting][value] !== 'Disabled'; break; + case Setting.Swap_A_and_B: + scene.abSwapped = settingOptions[setting][value] !== 'Disabled'; + break; case Setting.Touch_Controls: scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); const touchControls = document.getElementById('touchControls'); @@ -180,6 +186,10 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) label: 'Spanish', handler: () => changeLocaleHandler('es') }, + { + label: 'Italian', + handler: () => changeLocaleHandler('it') + }, { label: 'French', handler: () => changeLocaleHandler('fr') diff --git a/src/system/voucher.ts b/src/system/voucher.ts index c3bae6f08..276e74eeb 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -44,7 +44,7 @@ export class Voucher { case VoucherType.PREMIUM: return AchvTier.ULTRA; case VoucherType.GOLDEN: - return AchvTier.MASTER; + return AchvTier.ROGUE; } } } diff --git a/src/tutorial.ts b/src/tutorial.ts index a924243ac..88e88fa80 100644 --- a/src/tutorial.ts +++ b/src/tutorial.ts @@ -1,6 +1,7 @@ import BattleScene from "./battle-scene"; import AwaitableUiHandler from "./ui/awaitable-ui-handler"; import { Mode } from "./ui/ui"; +import i18next from './plugins/i18n'; export enum Tutorial { Intro = "INTRO", @@ -8,6 +9,7 @@ export enum Tutorial { Menu = "MENU", Starter_Select = "STARTER_SELECT", Pokerus = "POKERUS", + Stat_Change = "STAT_CHANGE", Select_Item = "SELECT_ITEM", Egg_Gacha = "EGG_GACHA" } @@ -15,63 +17,47 @@ export enum Tutorial { const tutorialHandlers = { [Tutorial.Intro]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(`Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements. - $This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used. - $The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community. - $If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`, null, () => resolve(), null, true); + scene.ui.showText(i18next.t("tutorial:intro"), null, () => resolve(), null, true); }); }, [Tutorial.Access_Menu]: (scene: BattleScene) => { return new Promise(resolve => { if (scene.enableTouchControls) return resolve(); - scene.showFieldOverlay(1000).then(() => scene.ui.showText(`To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`, null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true)); + scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:accessMenu"), null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true)); }); }, [Tutorial.Menu]: (scene: BattleScene) => { return new Promise(resolve => { scene.gameData.saveTutorialFlag(Tutorial.Access_Menu, true); - scene.ui.showText(`From this menu you can access the settings. - $From the settings you can change game speed, window style, and other options. - $There are also various other features here, so be sure to check them all!`, null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t("tutorial:menu"), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, [Tutorial.Starter_Select]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(`From this screen, you can select your starters.\nThese are your initial party members. - $Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10. - $You can also select gender, ability, and form depending on\nthe variants you've caught or hatched. - $The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`, null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t("tutorial:starterSelect"), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, [Tutorial.Pokerus]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(`A daily random 3 selectable starters have a purple border. - $If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`, null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t("tutorial:pokerus"), null, () => scene.ui.showText('', null, () => resolve()), null, true); + }); + }, + [Tutorial.Stat_Change]: (scene: BattleScene) => { + return new Promise(resolve => { + scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:statChange"), null, () => scene.ui.showText('', null, () => scene.hideFieldOverlay(1000).then(() => resolve())), null, true)); }); }, [Tutorial.Select_Item]: (scene: BattleScene) => { return new Promise(resolve => { scene.ui.setModeWithoutClear(Mode.MESSAGE).then(() => { - scene.ui.showText(`After every battle, you are given a choice of 3 random items.\nYou may only pick one. - $These range from consumables, to Pokémon held items, to passive permanent items. - $Most non-consumable item effects will stack in various ways. - $Some items will only show up if they can be used, such as evolution items. - $You can also transfer held items between Pokémon using the transfer option. - $The transfer option will appear in the bottom right once you have obtained a held item. - $You may purchase consumable items with money, and a larger variety will be available the further you get. - $Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`, null, () => scene.ui.showText('', null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true); + scene.ui.showText(i18next.t("tutorial:selectItem"), null, () => scene.ui.showText('', null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true); }); }); }, [Tutorial.Egg_Gacha]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(`From this screen, you can redeem your vouchers for\nPokémon eggs. - $Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch. - $Hatched Pokémon also won't be added to your party, they will\nbe added to your starters. - $Pokémon hatched from eggs generally have better IVs than\nwild Pokémon. - $Some Pokémon can only even be obtained from eggs. - $There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`, null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t("tutorial:eggGacha"), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, }; @@ -94,4 +80,4 @@ export function handleTutorial(scene: BattleScene, tutorial: Tutorial): Promise< resolve(true); }); }); -} \ No newline at end of file +} diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts new file mode 100644 index 000000000..38d8e7830 --- /dev/null +++ b/src/ui-inputs.ts @@ -0,0 +1,154 @@ +import Phaser from "phaser"; +import {Mode} from "./ui/ui"; +import {InputsController} from "./inputs-controller"; +import MessageUiHandler from "./ui/message-ui-handler"; +import StarterSelectUiHandler from "./ui/starter-select-ui-handler"; +import {Setting, settingOptions} from "./system/settings"; +import SettingsUiHandler from "./ui/settings-ui-handler"; +import {Button} from "./enums/buttons"; + +export interface ActionKeys { + [key in Button]: () => void; +} + +export class UiInputs { + private scene: Phaser.Scene; + private events: Phaser.Events; + private inputsController: InputsController; + + constructor(scene: Phaser.Scene, inputsController: InputsController) { + this.scene = scene; + this.inputsController = inputsController; + this.init(); + } + + init(): void { + this.events = this.inputsController.events; + this.listenInputs(); + } + + listenInputs(): void { + this.events.on('input_down', (event) => { + const actions = this.getActionsKeyDown(); + if (!actions.hasOwnProperty(event.button)) return; + actions[event.button](); + }, this); + + this.events.on('input_up', (event) => { + const actions = this.getActionsKeyUp(); + if (!actions.hasOwnProperty(event.button)) return; + actions[event.button](); + }, this); + } + + doVibration(inputSuccess: boolean, vibrationLength: number): void { + if (inputSuccess && this.scene.enableVibration && typeof navigator.vibrate !== 'undefined') + navigator.vibrate(vibrationLength); + } + + getActionsKeyDown(): ActionKeys { + const actions = {}; + actions[Button.UP] = () => this.buttonDirection(Button.UP); + actions[Button.DOWN] = () => this.buttonDirection(Button.DOWN); + actions[Button.LEFT] = () => this.buttonDirection(Button.LEFT); + actions[Button.RIGHT] = () => this.buttonDirection(Button.RIGHT); + actions[Button.SUBMIT] = () => this.buttonTouch(); + actions[Button.ACTION] = () => this.buttonAb(Button.ACTION); + actions[Button.CANCEL] = () => this.buttonAb(Button.CANCEL); + actions[Button.MENU] = () => this.buttonMenu(); + actions[Button.STATS] = () => this.buttonStats(true); + actions[Button.CYCLE_SHINY] = () => this.buttonCycleOption(Button.CYCLE_SHINY); + actions[Button.CYCLE_FORM] = () => this.buttonCycleOption(Button.CYCLE_FORM); + actions[Button.CYCLE_GENDER] = () => this.buttonCycleOption(Button.CYCLE_GENDER); + actions[Button.CYCLE_ABILITY] = () => this.buttonCycleOption(Button.CYCLE_ABILITY); + actions[Button.CYCLE_NATURE] = () => this.buttonCycleOption(Button.CYCLE_NATURE); + actions[Button.CYCLE_VARIANT] = () => this.buttonCycleOption(Button.CYCLE_VARIANT); + actions[Button.SPEED_UP] = () => this.buttonSpeedChange(); + actions[Button.SLOW_DOWN] = () => this.buttonSpeedChange(false); + return actions; + } + + getActionsKeyUp(): ActionKeys { + const actions = {}; + actions[Button.STATS] = () => this.buttonStats(false); + return actions; + } + + buttonDirection(direction: Button): void { + const inputSuccess = this.scene.ui.processInput(direction); + const vibrationLength = 5; + this.doVibration(inputSuccess, vibrationLength); + } + + buttonAb(button: Button): void { + this.scene.ui.processInput(button); + } + + buttonTouch(): void { + this.scene.ui.processInput(Button.SUBMIT) || this.scene.ui.processInput(Button.ACTION); + } + + buttonStats(pressed: boolean = true): void { + if (pressed) { + for (let p of this.scene.getField().filter(p => p?.isActive(true))) + p.toggleStats(true); + } else { + for (let p of this.scene.getField().filter(p => p?.isActive(true))) + p.toggleStats(false); + } + } + + buttonMenu(): void { + if (this.scene.disableMenu) + return; + switch (this.scene.ui?.getMode()) { + case Mode.MESSAGE: + if (!(this.scene.ui.getHandler() as MessageUiHandler).pendingPrompt) + return; + case Mode.TITLE: + case Mode.COMMAND: + case Mode.FIGHT: + case Mode.BALL: + case Mode.TARGET_SELECT: + case Mode.SAVE_SLOT: + case Mode.PARTY: + case Mode.SUMMARY: + case Mode.STARTER_SELECT: + case Mode.CONFIRM: + case Mode.OPTION_SELECT: + this.scene.ui.setOverlayMode(Mode.MENU); + break; + case Mode.MENU: + case Mode.SETTINGS: + case Mode.ACHIEVEMENTS: + this.scene.ui.revertMode(); + this.scene.playSound('select'); + break; + default: + return + } + } + + buttonCycleOption(button: Button): void { + if (this.scene.ui?.getHandler() instanceof StarterSelectUiHandler) { + this.scene.ui.processInput(button); + } + } + + buttonSpeedChange(up = true): void { + if (up) { + if (this.scene.gameSpeed < 5) { + this.scene.gameData.saveSetting(Setting.Game_Speed, settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) + 1); + if (this.scene.ui?.getMode() === Mode.SETTINGS) + (this.scene.ui.getHandler() as SettingsUiHandler).show([]); + } + return; + } + if (this.scene.gameSpeed > 1) { + this.scene.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) - 1, 0)); + if (this.scene.ui?.getMode() === Mode.SETTINGS) + (this.scene.ui.getHandler() as SettingsUiHandler).show([]); + } + } + +} \ No newline at end of file diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts index 2f2c4face..ffc0cabc8 100644 --- a/src/ui/abstact-option-select-ui-handler.ts +++ b/src/ui/abstact-option-select-ui-handler.ts @@ -1,10 +1,11 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; import * as Utils from "../utils"; import { argbFromRgba } from "@material/material-color-utilities"; +import {Button} from "../enums/buttons"; export interface OptionSelectConfig { xOffset?: number; diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index cadda64e0..561b09171 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -1,9 +1,10 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Achv, achvs } from "../system/achv"; import MessageUiHandler from "./message-ui-handler"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import { addWindow } from "./ui-theme"; +import {Button} from "../enums/buttons"; export default class AchvsUiHandler extends MessageUiHandler { private achvsContainer: Phaser.GameObjects.Container; diff --git a/src/ui/awaitable-ui-handler.ts b/src/ui/awaitable-ui-handler.ts index e8cc979e4..532ca1115 100644 --- a/src/ui/awaitable-ui-handler.ts +++ b/src/ui/awaitable-ui-handler.ts @@ -1,6 +1,7 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; +import {Button} from "../enums/buttons"; export default abstract class AwaitableUiHandler extends UiHandler { protected awaitingActionInput: boolean; diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index f2ebdc342..06729151d 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -1,11 +1,12 @@ import { CommandPhase } from "../phases"; -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { getPokeballName } from "../data/pokeball"; import { addTextObject, TextStyle } from "./text"; import { Command } from "./command-ui-handler"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; +import {Button} from "../enums/buttons"; export default class BallUiHandler extends UiHandler { private pokeballSelectContainer: Phaser.GameObjects.Container; diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts index ae794a256..2ca0457c8 100644 --- a/src/ui/battle-info.ts +++ b/src/ui/battle-info.ts @@ -7,6 +7,9 @@ import { StatusEffect } from '../data/status-effect'; import BattleScene from '../battle-scene'; import { Type, getTypeRgb } from '../data/type'; import { getVariantTint } from '#app/data/variant'; +import { BattleStat } from '#app/data/battle-stat'; + +const battleStatOrder = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.ACC, BattleStat.EVA, BattleStat.SPD ]; export default class BattleInfo extends Phaser.GameObjects.Container { private player: boolean; @@ -24,6 +27,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { private lastLevelExp: integer; private lastLevel: integer; private lastLevelCapped: boolean; + private lastBattleStats: string; private box: Phaser.GameObjects.Sprite; private nameText: Phaser.GameObjects.Text; @@ -46,6 +50,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container { 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[]; + constructor(scene: Phaser.Scene, x: number, y: number, player: boolean) { super(scene, x, y); this.player = player; @@ -138,18 +147,6 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.levelNumbersContainer = this.scene.add.container(9.5, (this.scene as BattleScene).uiTheme ? 0 : -0.5); this.levelContainer.add(this.levelNumbersContainer); - this.type1Icon = this.scene.add.sprite(player ? -139 : -15, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type1`); - this.type1Icon.setOrigin(0, 0); - this.add(this.type1Icon); - - this.type2Icon = this.scene.add.sprite(player ? -139 : -15, player ? -1 : -2.5, `pbinfo_${player ? 'player' : 'enemy'}_type2`); - this.type2Icon.setOrigin(0, 0); - this.add(this.type2Icon); - - this.type3Icon = this.scene.add.sprite(player ? -154 : 0, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type`); - this.type3Icon.setOrigin(0, 0); - this.add(this.type3Icon); - if (this.player) { this.hpNumbersContainer = this.scene.add.container(-15, 10); this.add(this.hpNumbersContainer); @@ -171,6 +168,46 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.expBar = expBar; this.expMaskRect = expMaskRect; } + + this.statsContainer = this.scene.add.container(0, 0); + this.statsContainer.setAlpha(0); + this.add(this.statsContainer); + + this.statsBox = this.scene.add.sprite(0, 0, `${this.getTextureName()}_stats`); + this.statsBox.setOrigin(1, 0.5); + this.statsContainer.add(this.statsBox); + + const statLabels: Phaser.GameObjects.Sprite[] = []; + this.statNumbers = []; + + this.statValuesContainer = this.scene.add.container(0, 0); + this.statsContainer.add(this.statValuesContainer); + + battleStatOrder.map((s, i) => { + const statX = i > 1 ? this.statNumbers[i - 2].x + this.statNumbers[i - 2].width + 4 : -this.statsBox.width + 8; + const statY = -this.statsBox.height / 2 + 4 + (i < battleStatOrder.length - 1 ? (i % 2 ? 10 : 0) : 5); + const statLabel = this.scene.add.sprite(statX, statY, 'pbinfo_stat', BattleStat[s]); + statLabel.setOrigin(0, 0); + statLabels.push(statLabel); + this.statValuesContainer.add(statLabel); + + const statNumber = this.scene.add.sprite(statX + statLabel.width, statY, 'pbinfo_stat_numbers', '3'); + statNumber.setOrigin(0, 0); + this.statNumbers.push(statNumber); + this.statValuesContainer.add(statNumber); + }); + + this.type1Icon = this.scene.add.sprite(player ? -139 : -15, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type1`); + this.type1Icon.setOrigin(0, 0); + this.add(this.type1Icon); + + this.type2Icon = this.scene.add.sprite(player ? -139 : -15, player ? -1 : -2.5, `pbinfo_${player ? 'player' : 'enemy'}_type2`); + this.type2Icon.setOrigin(0, 0); + this.add(this.type2Icon); + + this.type3Icon = this.scene.add.sprite(player ? -154 : 0, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type`); + this.type3Icon.setOrigin(0, 0); + this.add(this.type3Icon); } initInfo(pokemon: Pokemon) { @@ -258,7 +295,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container { 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 battleStats = battleStatOrder.map(() => 0); + + this.lastBattleStats = battleStats.join(''); + this.updateBattleStats(battleStats); } getTextureName(): string { @@ -272,6 +316,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.mini = mini; this.box.setTexture(this.getTextureName()); + this.statsBox.setTexture(`${this.getTextureName()}_stats`); if (this.player) this.y -= 12 * (mini ? 1 : -1); @@ -284,21 +329,34 @@ export default class BattleInfo extends Phaser.GameObjects.Container { 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 { + this.scene.tweens.add({ + targets: this.statsContainer, + duration: Utils.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.statusIndicator, this.levelContainer ].map(e => e.x += 48 * (boss ? -1 : 1)); + [ this.nameText, this.genderText, this.teraIcon, this.splicedIcon, this.shinyIcon, this.ownedIcon, 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; @@ -317,6 +375,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height - (uiTheme ? 0 : 1), pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040) divider.setOrigin(0.5, 0); this.add(divider); + this.moveBelow(divider as Phaser.GameObjects.GameObject, this.statsContainer); divider.setPositionRelative(this.hpBar, dividerX, uiTheme ? 0 : 1); this.hpBarSegmentDividers.push(divider); @@ -439,6 +498,16 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.lastLevel = pokemon.level; } + const battleStats = pokemon.summonData + ? pokemon.summonData.battleStats + : battleStatOrder.map(() => 0); + const battleStatsStr = battleStats.join(''); + + if (this.lastBattleStats !== battleStatsStr) { + this.updateBattleStats(battleStats); + this.lastBattleStats = battleStatsStr; + } + this.shinyIcon.setVisible(pokemon.isShiny()); resolve(); @@ -513,7 +582,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { }); } - setLevel(level: integer) { + setLevel(level: integer): void { const isCapped = level >= (this.scene as BattleScene).getMaxExpLevel(); this.levelNumbersContainer.removeAll(true); const levelStr = level.toString(); @@ -522,7 +591,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.levelContainer.setX((this.player ? -41 : -50) - 8 * Math.max(levelStr.length - 3, 0)); } - setHpNumbers(hp: integer, maxHp: integer) { + setHpNumbers(hp: integer, maxHp: integer): void { if (!this.player || !this.scene) return; this.hpNumbersContainer.removeAll(true); @@ -535,6 +604,12 @@ export default class BattleInfo extends Phaser.GameObjects.Container { for (let i = hpStr.length - 1; i >= 0; i--) this.hpNumbersContainer.add(this.scene.add.image(offset++ * -8, 0, 'numbers', hpStr[i])); } + + updateBattleStats(battleStats: integer[]): void { + battleStatOrder.map((s, i) => { + this.statNumbers[i].setFrame(battleStats[s].toString()); + }); + } } export class PlayerBattleInfo extends BattleInfo { diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index 7bf983c34..d04a98ea8 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -1,15 +1,17 @@ -import BattleScene, { Button } from "../battle-scene"; -import { addTextObject, TextStyle } from "./text"; +import BattleScene from "../battle-scene"; +import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text"; import { Mode } from "./ui"; import * as Utils from "../utils"; import MessageUiHandler from "./message-ui-handler"; import { getStatName, Stat } from "../data/pokemon-stat"; import { addWindow } from "./ui-theme"; +import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; +import {Button} from "../enums/buttons"; export default class BattleMessageUiHandler extends MessageUiHandler { private levelUpStatsContainer: Phaser.GameObjects.Container; private levelUpStatsIncrContent: Phaser.GameObjects.Text; - private levelUpStatsValuesContent: Phaser.GameObjects.Text; + private levelUpStatsValuesContent: BBCodeText; private nameBox: Phaser.GameObjects.NineSlice; private nameText: Phaser.GameObjects.Text; @@ -29,7 +31,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.textCallbackTimer = null; const bg = this.scene.add.sprite(0, 0, 'bg', this.scene.windowType); - bg.setOrigin(0, 1); + bg.setOrigin(0, 1); ui.add(bg); this.bg = bg; @@ -95,18 +97,19 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.levelUpStatsContainer = levelUpStatsContainer; - const levelUpStatsBg = addWindow(this.scene, (this.scene.game.canvas.width / 6), -100, 128, 100); - levelUpStatsBg.setOrigin(1, 0); - levelUpStatsContainer.add(levelUpStatsBg); - - const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 121, -94, '', TextStyle.WINDOW, { maxLines: 6 }); + const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 73, -94, '', TextStyle.WINDOW, { maxLines: 6 }); let levelUpStatsLabelText = ''; const stats = Utils.getEnumValues(Stat); for (let s of stats) levelUpStatsLabelText += `${getStatName(s)}\n`; - levelUpStatsLabelsContent.text = levelUpStatsLabelText; + levelUpStatsLabelsContent.x -= levelUpStatsLabelsContent.displayWidth; + + const levelUpStatsBg = addWindow(this.scene, (this.scene.game.canvas.width / 6), -100, 80 + levelUpStatsLabelsContent.displayWidth, 100); + levelUpStatsBg.setOrigin(1, 0); + levelUpStatsContainer.add(levelUpStatsBg); + levelUpStatsContainer.add(levelUpStatsLabelsContent); const levelUpStatsIncrContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 50, -94, '+\n+\n+\n+\n+\n+', TextStyle.WINDOW, { maxLines: 6 }); @@ -114,7 +117,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.levelUpStatsIncrContent = levelUpStatsIncrContent; - const levelUpStatsValuesContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 7, -94, '', TextStyle.WINDOW, { maxLines: 6 }); + const levelUpStatsValuesContent = addBBCodeTextObject(this.scene, (this.scene.game.canvas.width / 6) - 7, -94, '', TextStyle.WINDOW, { maxLines: 6 , lineSpacing: 5}); levelUpStatsValuesContent.setOrigin(1, 0); levelUpStatsValuesContent.setAlign('right'); levelUpStatsContainer.add(levelUpStatsValuesContent); @@ -208,7 +211,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { } else shownStats = stats; for (let s of stats) - levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s]) : '???'}\n`; + levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s], s, pokemonId) : '???'}\n`; this.levelUpStatsValuesContent.text = levelUpStatsValuesText; this.levelUpStatsIncrContent.setVisible(false); this.levelUpStatsContainer.setVisible(true); @@ -221,18 +224,30 @@ export default class BattleMessageUiHandler extends MessageUiHandler { }); } - getIvDescriptor(value: integer): string { + getIvDescriptor(value: integer, typeIv: integer, pokemonId: integer): string { + const starterSpecies = this.scene.getPokemonById(pokemonId).species.getRootSpeciesId(true); + const starterIvs: number[] = this.scene.gameData.dexData[starterSpecies].ivs; + const uiTheme = (this.scene as BattleScene).uiTheme; // Assuming uiTheme is accessible + + // Function to wrap text in color based on comparison + const coloredText = (text: string, isBetter: boolean) => { + const textStyle: TextStyle = isBetter ? TextStyle.SUMMARY_GREEN : TextStyle.SUMMARY; + const color = getTextColor(textStyle, false, uiTheme); + return `[color=${color}][shadow=${getTextColor(textStyle, true, uiTheme)}]${text}[/shadow][/color]`; + }; + if (value > 30) - return 'Best'; + return coloredText('Best', value > starterIvs[typeIv]); if (value === 30) - return 'Fantastic'; + return coloredText('Fantastic', value > starterIvs[typeIv]); if (value > 20) - return 'Very Good'; + return coloredText('Very Good', value > starterIvs[typeIv]); if (value > 10) - return 'Pretty Good'; - if (value) - return 'Decent'; - return 'No Good'; + return coloredText('Pretty Good', value > starterIvs[typeIv]); + if (value > 0) + return coloredText('Decent', value > starterIvs[typeIv]); + + return coloredText('No Good', value > starterIvs[typeIv]); } showNameText(name: string): void { @@ -244,4 +259,4 @@ export default class BattleMessageUiHandler extends MessageUiHandler { hideNameText(): void { this.nameBoxContainer.setVisible(false); } -} \ No newline at end of file +} diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts index 2219e0747..a4cc12950 100644 --- a/src/ui/candy-bar.ts +++ b/src/ui/candy-bar.ts @@ -69,6 +69,8 @@ export default class CandyBar extends Phaser.GameObjects.Container { if (this.tween) this.tween.stop(); + (this.scene as BattleScene).playSound('shing'); + this.tween = this.scene.tweens.add({ targets: this, x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5), diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index b8223694b..a27053015 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -1,10 +1,11 @@ import { CommandPhase } from "../phases"; -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { addTextObject, TextStyle } from "./text"; import PartyUiHandler, { PartyUiMode } from "./party-ui-handler"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import i18next from '../plugins/i18n'; +import {Button} from "../enums/buttons"; export enum Command { FIGHT = 0, diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index d9e7726d8..bac980db9 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -1,6 +1,8 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import AbstractOptionSelectUiHandler, { OptionSelectConfig } from "./abstact-option-select-ui-handler"; import { Mode } from "./ui"; +import i18next from "i18next"; +import {Button} from "../enums/buttons"; export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { private switchCheck: boolean; @@ -19,14 +21,14 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { const config: OptionSelectConfig = { options: [ { - label: 'Yes', + label: i18next.t("menu:yes"), handler: () => { args[0](); return true; } }, { - label: 'No', + label: i18next.t("menu:no"), handler: () => { args[1](); return true; diff --git a/src/ui/daily-run-scoreboard.ts b/src/ui/daily-run-scoreboard.ts index 90fef5ba5..8b258b3a7 100644 --- a/src/ui/daily-run-scoreboard.ts +++ b/src/ui/daily-run-scoreboard.ts @@ -2,6 +2,7 @@ import BattleScene from "../battle-scene"; import { TextStyle, addTextObject } from "./text"; import { WindowVariant, addWindow } from "./ui-theme"; import * as Utils from "../utils"; +import i18next from "i18next"; interface RankingEntry { rank: integer, @@ -10,6 +11,7 @@ interface RankingEntry { wave: integer } +// Don't forget to update translations when adding a new category enum ScoreboardCategory { DAILY, WEEKLY @@ -39,7 +41,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { const titleWindow = addWindow(this.scene, 0, 0, 114, 18, false, false, null, null, WindowVariant.THIN); this.add(titleWindow); - this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, 'Daily Rankings', TextStyle.WINDOW, { fontSize: '64px' }); + this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, i18next.t('menu:loading'), TextStyle.WINDOW, { fontSize: '64px' }); this.titleLabel.setOrigin(0.5, 0.5); this.add(this.titleLabel); @@ -141,7 +143,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { update(category: ScoreboardCategory = this.category, page: integer = this.page) { this.rankingsContainer.removeAll(true); - this.loadingLabel.setText('Loading…'); + this.loadingLabel.setText(i18next.t('menu:loading')); this.loadingLabel.setVisible(true); if (category !== this.category) @@ -155,7 +157,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { .then(jsonResponse => { this.page = page; this.category = category; - this.titleLabel.setText(`${Utils.toReadableString(ScoreboardCategory[category])} Rankings`); + this.titleLabel.setText(`${i18next.t(`menu:${ScoreboardCategory[category].toLowerCase()}Rankings`)}`); this.prevPageButton.setAlpha(page > 1 ? 1 : 0.5); this.nextPageButton.setAlpha(page < this.pageCount ? 1 : 0.5); this.pageNumberLabel.setText(page.toString()); @@ -163,9 +165,9 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { this.loadingLabel.setVisible(false); this.updateRankings(jsonResponse); } else - this.loadingLabel.setText('No Rankings'); + this.loadingLabel.setText(i18next.t('menu:noRankings')); }); - }); + }).catch(err => { console.error("Failed to load daily rankings:\n", err) }); } } diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index f0e32dbc2..315dfdbd3 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import { TextStyle, addTextObject, getEggTierTextTint } from "./text"; import MessageUiHandler from "./message-ui-handler"; @@ -9,6 +9,7 @@ import { getPokemonSpecies } from "../data/pokemon-species"; import { addWindow } from "./ui-theme"; import { Tutorial, handleTutorial } from "../tutorial"; import { EggTier } from "../data/enums/egg-type"; +import {Button} from "../enums/buttons"; const defaultText = 'Select a machine.'; diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index f841bafc2..ea8df429c 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -1,7 +1,8 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { EggHatchPhase } from "../egg-hatch-phase"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; +import {Button} from "../enums/buttons"; export default class EggHatchSceneHandler extends UiHandler { public eggHatchContainer: Phaser.GameObjects.Container; diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts index 7537b8dee..edeac7d71 100644 --- a/src/ui/egg-list-ui-handler.ts +++ b/src/ui/egg-list-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Mode } from "./ui"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; import { TextStyle, addTextObject } from "./text"; @@ -6,6 +6,7 @@ import MessageUiHandler from "./message-ui-handler"; import { EGG_SEED, Egg, GachaType, getEggGachaTypeDescriptor, getEggHatchWavesMessage, getEggDescriptor } from "../data/egg"; import * as Utils from "../utils"; import { addWindow } from "./ui-theme"; +import {Button} from "../enums/buttons"; export default class EggListUiHandler extends MessageUiHandler { private eggListContainer: Phaser.GameObjects.Container; diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts index 7e0ef063e..3361e9038 100644 --- a/src/ui/evolution-scene-handler.ts +++ b/src/ui/evolution-scene-handler.ts @@ -1,7 +1,8 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import MessageUiHandler from "./message-ui-handler"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; +import {Button} from "../enums/buttons"; export default class EvolutionSceneHandler extends MessageUiHandler { public evolutionContainer: Phaser.GameObjects.Container; diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 1a7a8bef5..ee7e413db 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { addTextObject, TextStyle } from "./text"; import { Type } from "../data/type"; import { Command } from "./command-ui-handler"; @@ -8,6 +8,7 @@ import * as Utils from "../utils"; import { CommandPhase } from "../phases"; import { MoveCategory } from "#app/data/move.js"; import i18next from '../plugins/i18n'; +import {Button} from "../enums/buttons"; export default class FightUiHandler extends UiHandler { private movesContainer: Phaser.GameObjects.Container; diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index ec5f4147c..b2c2c1181 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; import { Mode } from "./ui"; import { TextStyle, addTextInputObject, addTextObject } from "./text"; @@ -6,6 +6,7 @@ import { WindowVariant, addWindow } from "./ui-theme"; import InputText from "phaser3-rex-plugins/plugins/inputtext"; import * as Utils from "../utils"; import i18next from '../plugins/i18n'; +import {Button} from "../enums/buttons"; export interface FormModalConfig extends ModalConfig { errorMessage?: string; diff --git a/src/ui/game-stats-ui-handler.ts b/src/ui/game-stats-ui-handler.ts index 00e358ff8..6b067912c 100644 --- a/src/ui/game-stats-ui-handler.ts +++ b/src/ui/game-stats-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { TextStyle, addTextObject, getTextColor } from "./text"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; @@ -6,6 +6,7 @@ import { addWindow } from "./ui-theme"; import * as Utils from "../utils"; import { DexAttr, GameData } from "../system/game-data"; import { speciesStarters } from "../data/pokemon-species"; +import {Button} from "../enums/buttons"; interface DisplayStat { label?: string; @@ -63,13 +64,16 @@ const displayStats: DisplayStats = { pokemonDefeated: 'Pokémon Defeated', pokemonCaught: 'Pokémon Caught', pokemonHatched: 'Eggs Hatched', - legendaryPokemonSeen: 'Legendary Encounters?', - legendaryPokemonCaught: 'Legendaries Caught?', - legendaryPokemonHatched: 'Legendaries Hatched?', - mythicalPokemonSeen: 'Mythical Encounters?', + subLegendaryPokemonSeen: 'Sub-Legends Seen?', + subLegendaryPokemonCaught: 'Sub-Legends Caught?', + subLegendaryPokemonHatched: 'Sub-Legends Hatched?', + legendaryPokemonSeen: 'Legends Seen?', + legendaryPokemonCaught: 'Legends Caught?', + legendaryPokemonHatched: 'Legends Hatched?', + mythicalPokemonSeen: 'Mythicals Seen?', mythicalPokemonCaught: 'Mythicals Caught?', mythicalPokemonHatched: 'Mythicals Hatched?', - shinyPokemonSeen: 'Shiny Encounters?', + shinyPokemonSeen: 'Shinies Seen?', shinyPokemonCaught: 'Shinies Caught?', shinyPokemonHatched: 'Shinies Hatched?', pokemonFused: 'Pokémon Fused?', diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 03d93699e..bf0326676 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button, bypassLogin } from "../battle-scene"; +import BattleScene, { bypassLogin } from "../battle-scene"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import * as Utils from "../utils"; @@ -9,6 +9,7 @@ import { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui import { Tutorial, handleTutorial } from "../tutorial"; import { updateUserInfo } from "../account"; import i18next from '../plugins/i18n'; +import {Button} from "../enums/buttons"; export enum MenuOptions { GAME_SETTINGS, diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts index f193a3db5..77a3c14bd 100644 --- a/src/ui/modal-ui-handler.ts +++ b/src/ui/modal-ui-handler.ts @@ -1,8 +1,9 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { WindowVariant, addWindow } from "./ui-theme"; +import {Button} from "../enums/buttons"; export interface ModalConfig { buttonActions: Function[]; diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index e5252e02a..8af13d8f6 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { getPlayerShopModifierTypeOptionsForWave, ModifierTypeOption } from "../modifier/modifier-type"; import { getPokeballAtlasKey, PokeballType } from "../data/pokeball"; import { addTextObject, getModifierTierTextTint, getTextColor, TextStyle } from "./text"; @@ -6,6 +6,7 @@ import AwaitableUiHandler from "./awaitable-ui-handler"; import { Mode } from "./ui"; import { LockModifierTiersModifier, PokemonHeldItemModifier } from "../modifier/modifier"; import { handleTutorial, Tutorial } from "../tutorial"; +import {Button} from "../enums/buttons"; export const SHOP_OPTIONS_ROW_LIMIT = 6; diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 30558b5bd..8b497655a 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -1,5 +1,5 @@ import { CommandPhase } from "../phases"; -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { PlayerPokemon, PokemonMove } from "../field/pokemon"; import { addTextObject, TextStyle } from "./text"; import { Command } from "./command-ui-handler"; @@ -16,6 +16,7 @@ import { pokemonEvolutions } from "../data/pokemon-evolutions"; import { addWindow } from "./ui-theme"; import { SpeciesFormChangeItemTrigger } from "../data/pokemon-forms"; import { getVariantTint } from "#app/data/variant"; +import {Button} from "../enums/buttons"; const defaultMessage = 'Choose a Pokémon.'; @@ -90,6 +91,7 @@ export default class PartyUiHandler extends MessageUiHandler { private selectFilter: PokemonSelectFilter | PokemonModifierTransferSelectFilter; private moveSelectFilter: PokemonMoveSelectFilter; private tmMoveId: Moves; + private showMovePp: boolean; private iconAnimHandler: PokemonIconAnimHandler; @@ -185,6 +187,7 @@ export default class PartyUiHandler extends MessageUiHandler { ? args[4] as PokemonMoveSelectFilter : PartyUiHandler.FilterAllMoves; this.tmMoveId = args.length > 5 && args[5] ? args[5] : Moves.NONE; + this.showMovePp = args.length > 6 && args[6]; this.partyContainer.setVisible(true); this.partyBg.setTexture(`party_bg${this.scene.currentBattle.double ? '_double' : ''}`); @@ -383,6 +386,7 @@ export default class PartyUiHandler extends MessageUiHandler { } const slotCount = this.partySlots.length; + const battlerCount = this.scene.currentBattle.getBattlerCount(); switch (button) { case Button.UP: @@ -392,14 +396,20 @@ export default class PartyUiHandler extends MessageUiHandler { success = this.setCursor(this.cursor < 6 ? this.cursor < slotCount - 1 ? this.cursor + 1 : 6 : 0); break; case Button.LEFT: - if (this.cursor >= this.scene.currentBattle.getBattlerCount() && this.cursor < 6) + if (this.cursor >= battlerCount && this.cursor <= 6) success = this.setCursor(0); break; case Button.RIGHT: - const battlerCount = this.scene.currentBattle.getBattlerCount(); - if (slotCount > battlerCount && this.cursor < battlerCount) - success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); + if (slotCount === battlerCount){ + success = this.setCursor(6); break; + } else if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1){ + success = this.setCursor(2); + break; + } else if (slotCount > battlerCount && this.cursor < battlerCount){ + success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); + break; + } } } @@ -656,7 +666,14 @@ export default class PartyUiHandler extends MessageUiHandler { case PartyOption.MOVE_2: case PartyOption.MOVE_3: case PartyOption.MOVE_4: - optionName = pokemon.moveset[option - PartyOption.MOVE_1].getName(); + const move = pokemon.moveset[option - PartyOption.MOVE_1]; + if(this.showMovePp) { + const maxPP = move.getMovePp(); + const currPP = maxPP - move.ppUsed; + optionName = `${move.getName()} ${currPP}/${maxPP}`; + } else { + optionName = move.getName(); + } break; default: if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) { diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index 4d8ecfe0b..572a28f10 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -161,8 +161,9 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { if (isFusion) this.pokemonFusionShinyIcon.setTint(getVariantTint(pokemon.fusionVariant)); - const originalIvs: integer[] = this.scene.gameData.dexData[pokemon.species.speciesId].caughtAttr - ? this.scene.gameData.dexData[pokemon.species.speciesId].ivs + const starterSpeciesId = pokemon.species.getRootSpeciesId(true); + const originalIvs: integer[] = this.scene.gameData.dexData[starterSpeciesId].caughtAttr + ? this.scene.gameData.dexData[starterSpeciesId].ivs : null; this.statsContainer.updateIvs(pokemon.ivs, originalIvs); diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index 181b0643c..a30e21c8f 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -1,4 +1,4 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { gameModes } from "../game-mode"; import { SessionSaveData } from "../system/game-data"; import { TextStyle, addTextObject } from "./text"; @@ -8,6 +8,8 @@ import * as Utils from "../utils"; import PokemonData from "../system/pokemon-data"; import { PokemonHeldItemModifier } from "../modifier/modifier"; import MessageUiHandler from "./message-ui-handler"; +import i18next from "i18next"; +import {Button} from "../enums/buttons"; const sessionSlotCount = 5; @@ -258,7 +260,7 @@ class SessionSlot extends Phaser.GameObjects.Container { async setupWithData(data: SessionSaveData) { this.remove(this.loadingLabel, true); - const gameModeLabel = addTextObject(this.scene, 8, 5, `${gameModes[data.gameMode].getName()} - Wave ${data.waveIndex}`, TextStyle.WINDOW); + const gameModeLabel = addTextObject(this.scene, 8, 5, `${gameModes[data.gameMode]?.getName() || 'Unknown'} - Wave ${data.waveIndex}`, TextStyle.WINDOW); this.add(gameModeLabel); const timestampLabel = addTextObject(this.scene, 8, 19, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW); @@ -314,7 +316,7 @@ class SessionSlot extends Phaser.GameObjects.Container { this.scene.gameData.getSession(this.slotId).then(async sessionData => { if (!sessionData) { this.hasData = false; - this.loadingLabel.setText('Empty'); + this.loadingLabel.setText(i18next.t("menu:empty")); resolve(false); return; } diff --git a/src/ui/settings-ui-handler.ts b/src/ui/settings-ui-handler.ts index 8f43b377d..3ed83268e 100644 --- a/src/ui/settings-ui-handler.ts +++ b/src/ui/settings-ui-handler.ts @@ -1,10 +1,11 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Setting, reloadSettings, settingDefaults, settingOptions } from "../system/settings"; import { hasTouchscreen, isMobile } from "../touch-controls"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; +import {Button} from "../enums/buttons"; export default class SettingsUiHandler extends UiHandler { private settingsContainer: Phaser.GameObjects.Container; diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 369dcf44f..aa97b655a 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1,5 +1,5 @@ -import BattleScene, { Button, starterColors } from "../battle-scene"; -import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters, starterPassiveAbilities } from "../data/pokemon-species"; +import BattleScene, { starterColors } from "../battle-scene"; +import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters, starterPassiveAbilities, getStarterValueFriendshipCap } from "../data/pokemon-species"; import { Species } from "../data/enums/species"; import { TextStyle, addBBCodeTextObject, addTextObject } from "./text"; import { Mode } from "./ui"; @@ -27,6 +27,8 @@ import { argbFromRgba } from "@material/material-color-utilities"; import { OptionSelectItem } from "./abstact-option-select-ui-handler"; import { pokemonPrevolutions } from "#app/data/pokemon-evolutions"; import { Variant, getVariantTint } from "#app/data/variant"; +import i18next from "i18next"; +import {Button} from "../enums/buttons"; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -97,6 +99,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private pokemonGrowthRateText: Phaser.GameObjects.Text; private type1Icon: Phaser.GameObjects.Sprite; private type2Icon: Phaser.GameObjects.Sprite; + private pokemonLuckLabelText: Phaser.GameObjects.Text; + private pokemonLuckText: Phaser.GameObjects.Text; private pokemonGenderText: Phaser.GameObjects.Text; private pokemonUncaughtText: Phaser.GameObjects.Text; private pokemonAbilityLabelText: Phaser.GameObjects.Text; @@ -115,6 +119,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private pokemonEggMoveBgs: Phaser.GameObjects.NineSlice[]; private pokemonEggMoveLabels: Phaser.GameObjects.Text[]; private pokemonCandyIcon: Phaser.GameObjects.Sprite; + private pokemonCandyDarknessOverlay: Phaser.GameObjects.Sprite; private pokemonCandyOverlayIcon: Phaser.GameObjects.Sprite; private pokemonCandyCountText: Phaser.GameObjects.Text; private pokemonCaughtHatchedContainer: Phaser.GameObjects.Container; @@ -125,6 +130,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private starterSelectMessageBox: Phaser.GameObjects.NineSlice; private starterSelectMessageBoxContainer: Phaser.GameObjects.Container; private statsContainer: StatsContainer; + private pokemonFormText: Phaser.GameObjects.Text; private genMode: boolean; private statsMode: boolean; @@ -201,7 +207,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterSelectContainer.add(this.shinyOverlay); const starterContainerWindow = addWindow(this.scene, 141, 1, 178, 178); - + this.starterSelectContainer.add(addWindow(this.scene, 107, 1, 34, 58)); this.starterSelectContainer.add(addWindow(this.scene, 107, 59, 34, 91)); this.starterSelectContainer.add(addWindow(this.scene, 107, 145, 34, 34, true)); @@ -221,7 +227,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonNameText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNameText); - this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, 'Growth Rate:', TextStyle.SUMMARY_ALT, { fontSize: '36px' }); + this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, i18next.t("starterSelectUiHandler:growthRate"), TextStyle.SUMMARY_ALT, { fontSize: '36px' }); this.pokemonGrowthRateLabelText.setOrigin(0, 0); this.pokemonGrowthRateLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonGrowthRateLabelText); @@ -238,7 +244,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonUncaughtText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonUncaughtText); - this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127, 'Ability:', TextStyle.SUMMARY_ALT, { fontSize: '56px' }); + this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: '56px' }); this.pokemonAbilityLabelText.setOrigin(0, 0); this.pokemonAbilityLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonAbilityLabelText); @@ -247,7 +253,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonAbilityText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonAbilityText); - this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136, 'Passive:', TextStyle.SUMMARY_ALT, { fontSize: '56px' }); + this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: '56px' }); this.pokemonPassiveLabelText.setOrigin(0, 0); this.pokemonPassiveLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonPassiveLabelText); @@ -256,7 +262,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonPassiveText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonPassiveText); - this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145, 'Nature:', TextStyle.SUMMARY_ALT, { fontSize: '56px' }); + this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: '56px' }); this.pokemonNatureLabelText.setOrigin(0, 0); this.pokemonNatureLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonNatureLabelText); @@ -316,12 +322,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.genCursorObj.setVisible(false); this.genCursorObj.setOrigin(0, 0); this.starterSelectContainer.add(this.genCursorObj); - + this.valueLimitLabel = addTextObject(this.scene, 124, 150, '0/10', TextStyle.TOOLTIP_CONTENT); this.valueLimitLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(this.valueLimitLabel); - const startLabel = addTextObject(this.scene, 124, 162, 'Start', TextStyle.TOOLTIP_CONTENT); + const startLabel = addTextObject(this.scene, 124, 162, i18next.t("starterSelectUiHandler:start"), TextStyle.TOOLTIP_CONTENT); startLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(startLabel); @@ -331,7 +337,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterSelectContainer.add(this.startCursorObj); const starterSpecies: Species[] = []; - + for (let g = 0; g < this.starterSelectGenIconContainers.length; g++) { let s = 0; this.genSpecies.push([]); @@ -418,16 +424,36 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.type2Icon.setOrigin(0, 0); this.starterSelectContainer.add(this.type2Icon); - this.pokemonCandyIcon = this.scene.add.sprite(1, 12, 'items', 'candy'); + this.pokemonLuckLabelText = addTextObject(this.scene, 8, 89, 'Luck:', TextStyle.WINDOW_ALT, { fontSize: '56px' }); + this.pokemonLuckLabelText.setOrigin(0, 0); + this.starterSelectContainer.add(this.pokemonLuckLabelText); + + this.pokemonLuckText = addTextObject(this.scene, 8 + this.pokemonLuckLabelText.displayWidth + 2, 89, '0', TextStyle.WINDOW, { fontSize: '56px' }); + this.pokemonLuckText.setOrigin(0, 0); + this.starterSelectContainer.add(this.pokemonLuckText); + + this.pokemonCandyIcon = this.scene.add.sprite(4.5, 18, 'candy'); this.pokemonCandyIcon.setScale(0.5); this.pokemonCandyIcon.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonCandyIcon); - this.pokemonCandyOverlayIcon = this.scene.add.sprite(1, 12, 'items', 'candy_overlay'); + this.pokemonFormText = addTextObject(this.scene, 6, 42, 'Form', TextStyle.WINDOW_ALT, { fontSize: '42px' }); + this.pokemonFormText.setOrigin(0, 0); + this.starterSelectContainer.add(this.pokemonFormText); + + this.pokemonCandyOverlayIcon = this.scene.add.sprite(4.5, 18, 'candy_overlay'); this.pokemonCandyOverlayIcon.setScale(0.5); this.pokemonCandyOverlayIcon.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonCandyOverlayIcon); + this.pokemonCandyDarknessOverlay = this.scene.add.sprite(4.5, 18, 'candy'); + this.pokemonCandyDarknessOverlay.setScale(0.5); + this.pokemonCandyDarknessOverlay.setOrigin(0, 0); + this.pokemonCandyDarknessOverlay.setTint(0x000000); + this.pokemonCandyDarknessOverlay.setAlpha(0.5); + this.pokemonCandyDarknessOverlay.setInteractive(new Phaser.Geom.Rectangle(0, 0, 16, 16), Phaser.Geom.Rectangle.Contains); + this.starterSelectContainer.add(this.pokemonCandyDarknessOverlay); + this.pokemonCandyCountText = addTextObject(this.scene, 14, 18, 'x0', TextStyle.WINDOW_ALT, { fontSize: '56px' }); this.pokemonCandyCountText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonCandyCountText); @@ -486,9 +512,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonEggMovesContainer = this.scene.add.container(102, 85); this.pokemonEggMovesContainer.setScale(0.375); - const eggMovesLabel = addTextObject(this.scene, -46, 0, 'Egg Moves', TextStyle.WINDOW_ALT); + const eggMovesLabel = addTextObject(this.scene, -46, 0, i18next.t("starterSelectUiHandler:eggMoves"), TextStyle.WINDOW_ALT); eggMovesLabel.setOrigin(0.5, 0); - + this.pokemonEggMovesContainer.add(eggMovesLabel); for (let m = 0; m < 4; m++) { @@ -542,7 +568,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { species = getPokemonSpecies(randomSpeciesId); pokerusCursor = this.genSpecies[species.generation - 1].indexOf(species); }; - + let dupe = false; do { @@ -708,7 +734,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { else if (this.starterCursors.length < 6) { const options = [ { - label: 'Add to Party', + label: i18next.t("starterSelectUiHandler:addToParty"), handler: () => { ui.setMode(Mode.STARTER_SELECT); let isDupe = false; @@ -745,7 +771,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { overrideSound: true }, { - label: 'Toggle IVs', + label: i18next.t("starterSelectUiHandler:toggleIVs"), handler: () => { this.toggleStatsMode(); ui.setMode(Mode.STARTER_SELECT); @@ -756,14 +782,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (this.speciesStarterMoves.length > 1) { const showSwapOptions = (moveset: StarterMoveset) => { ui.setMode(Mode.STARTER_SELECT).then(() => { - ui.showText('Select a move to swap out.', null, () => { + ui.showText(i18next.t("starterSelectUiHandler:selectMoveSwapOut"), null, () => { ui.setModeWithoutClear(Mode.OPTION_SELECT, { options: moveset.map((m: Moves, i: number) => { const option: OptionSelectItem = { label: allMoves[m].name, handler: () => { ui.setMode(Mode.STARTER_SELECT).then(() => { - ui.showText(`Select a move to swap with ${allMoves[m].name}.`, null, () => { + ui.showText(`${i18next.t("starterSelectUiHandler:selectMoveSwapWith")} ${allMoves[m].name}.`, null, () => { ui.setModeWithoutClear(Mode.OPTION_SELECT, { options: this.speciesStarterMoves.filter((sm: Moves) => sm !== m).map(sm => { // make an option for each available starter move @@ -777,7 +803,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }; return option; }).concat({ - label: 'Cancel', + label: i18next.t("menu:cancel"), handler: () => { showSwapOptions(this.starterMoveset); return true; @@ -793,7 +819,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }; return option; }).concat({ - label: 'Cancel', + label: i18next.t("menu:cancel"), handler: () => { this.clearText(); ui.setMode(Mode.STARTER_SELECT); @@ -807,7 +833,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); }; options.push({ - label: 'Manage Moves', + label: i18next.t("starterSelectUiHandler:manageMoves"), handler: () => { showSwapOptions(this.starterMoveset); return true; @@ -820,7 +846,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (passiveAttr & PassiveAttr.UNLOCKED) { if (!(passiveAttr & PassiveAttr.ENABLED)) { options.push({ - label: 'Enable Passive', + label: i18next.t("starterSelectUiHandler:enablePassive"), handler: () => { starterData.passiveAttr |= PassiveAttr.ENABLED; ui.setMode(Mode.STARTER_SELECT); @@ -830,7 +856,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } else { options.push({ - label: 'Disable Passive', + label: i18next.t("starterSelectUiHandler:disablePassive"), handler: () => { starterData.passiveAttr ^= PassiveAttr.ENABLED; ui.setMode(Mode.STARTER_SELECT); @@ -845,7 +871,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (!(passiveAttr & PassiveAttr.UNLOCKED)) { const passiveCost = getPassiveCandyCount(speciesStarters[this.lastSpecies.speciesId]); options.push({ - label: `x${passiveCost} Unlock Passive (${allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name})`, + label: `x${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")} (${allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name})`, handler: () => { if (candyCount >= passiveCost) { starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED; @@ -869,7 +895,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (valueReduction < 2) { const reductionCost = getValueReductionCandyCounts(speciesStarters[this.lastSpecies.speciesId])[valueReduction]; options.push({ - label: `x${reductionCost} Reduce Cost`, + label: `x${reductionCost} ${i18next.t("starterSelectUiHandler:reduceCost")}`, handler: () => { if (candyCount >= reductionCost) { starterData.valueReduction++; @@ -892,7 +918,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } options.push({ - label: 'Cancel', + label: i18next.t("menu:cancel"), handler: () => { ui.setMode(Mode.STARTER_SELECT); return true; @@ -905,7 +931,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }; if (!pokemonPrevolutions.hasOwnProperty(this.lastSpecies.speciesId)) { options.push({ - label: 'Use Candies', + label: i18next.t("starterSelectUiHandler:useCandies"), handler: () => { ui.setMode(Mode.STARTER_SELECT).then(() => showUseCandies()); return true; @@ -913,7 +939,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } options.push({ - label: 'Cancel', + label: i18next.t("menu:cancel"), handler: () => { ui.setMode(Mode.STARTER_SELECT); return true; @@ -1039,7 +1065,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } } - + if (success) ui.playSelect(); else if (error) @@ -1076,23 +1102,23 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.scene.gameData.starterData[speciesId].moveset = this.starterMoveset.slice(0) as StarterMoveset; this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, undefined, undefined, false); } - + updateInstructions(): void { let instructionLines = [ ]; let cycleInstructionLines = []; if (this.speciesStarterDexEntry?.caughtAttr) { if (this.canCycleShiny) - cycleInstructionLines.push('R: Cycle Shiny'); + cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleShiny")); if (this.canCycleForm) - cycleInstructionLines.push('F: Cycle Form'); + cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleForm")); if (this.canCycleGender) - cycleInstructionLines.push('G: Cycle Gender'); + cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleGender")); if (this.canCycleAbility) - cycleInstructionLines.push('E: Cycle Ability'); + cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleAbility")); if (this.canCycleNature) - cycleInstructionLines.push('N: Cycle Nature'); + cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleNature")); if (this.canCycleVariant) - cycleInstructionLines.push('V: Cycle Variant'); + cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleVariant")); } if (cycleInstructionLines.length > 2) { @@ -1202,7 +1228,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { setGenMode(genMode: boolean): boolean { this.genCursorObj.setVisible(genMode && !this.startCursorObj.visible); this.cursorObj.setVisible(!genMode && !this.startCursorObj.visible); - + if (genMode !== this.genMode) { this.genMode = genMode; @@ -1249,6 +1275,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (this.speciesStarterDexEntry?.caughtAttr) { const colorScheme = starterColors[species.speciesId]; + const luck = this.scene.gameData.getDexAttrLuck(this.speciesStarterDexEntry.caughtAttr); + this.pokemonLuckText.setVisible(!!luck); + this.pokemonLuckText.setText(luck.toString()); + this.pokemonLuckText.setTint(getVariantTint(Math.min(luck - 1, 2) as Variant)); + this.pokemonLuckLabelText.setVisible(this.pokemonLuckText.visible); + this.pokemonGrowthRateText.setText(Utils.toReadableString(GrowthRate[species.growthRate])); this.pokemonGrowthRateText.setColor(getGrowthRateColor(species.growthRate)); this.pokemonGrowthRateText.setShadowColor(getGrowthRateColor(species.growthRate, true)); @@ -1262,15 +1294,32 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonCaughtHatchedContainer.setVisible(true); if (pokemonPrevolutions.hasOwnProperty(species.speciesId)) { this.pokemonCaughtHatchedContainer.setY(16); - [ this.pokemonCandyIcon, this.pokemonCandyOverlayIcon, this.pokemonCandyCountText ].map(c => c.setVisible(false)); + [ this.pokemonCandyIcon, this.pokemonCandyOverlayIcon, this.pokemonCandyDarknessOverlay, this.pokemonCandyCountText ].map(c => c.setVisible(false)); } else { this.pokemonCaughtHatchedContainer.setY(25); this.pokemonCandyIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[0]))); this.pokemonCandyIcon.setVisible(true); this.pokemonCandyOverlayIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1]))); this.pokemonCandyOverlayIcon.setVisible(true); + this.pokemonCandyDarknessOverlay.setVisible(true); this.pokemonCandyCountText.setText(`x${this.scene.gameData.starterData[species.speciesId].candyCount}`); this.pokemonCandyCountText.setVisible(true); + this.pokemonFormText.setVisible(true); + + var currentFriendship = this.scene.gameData.starterData[this.lastSpecies.speciesId].friendship; + if (!currentFriendship || currentFriendship === undefined) + currentFriendship = 0; + + const friendshipCap = getStarterValueFriendshipCap(speciesStarters[this.lastSpecies.speciesId]); + const candyCropY = 16 - (16 * (currentFriendship / friendshipCap)); + + if (this.pokemonCandyDarknessOverlay.visible) { + this.pokemonCandyDarknessOverlay.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(null, `${currentFriendship}/${friendshipCap}`, true)); + this.pokemonCandyDarknessOverlay.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip()); + } + + this.pokemonCandyDarknessOverlay.setCrop(0,0,16, candyCropY); + this.pokemonCandyDarknessOverlay.setCrop(0,0,16, candyCropY); } this.iconAnimHandler.addOrUpdate(this.starterSelectGenIconContainers[species.generation - 1].getAt(this.genSpecies[species.generation - 1].indexOf(species)) as Phaser.GameObjects.Sprite, PokemonIconAnimMode.PASSIVE); @@ -1295,7 +1344,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); - + this.setSpeciesDetails(species, props.shiny, props.formIndex, props.female, props.variant, defaultAbilityIndex, defaultNature); } @@ -1303,13 +1352,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.setTypeIcons(speciesForm.type1, speciesForm.type2); this.pokemonSprite.clearTint(); - if (this.pokerusCursors.find((cursor: integer, i: integer) => cursor === this.cursor && this.pokerusGens[i] === this.genCursor)) + if (this.pokerusCursors.find((cursor: integer, i: integer) => cursor === this.cursor && this.pokerusGens[i] === this.getGenCursorWithScroll())) handleTutorial(this.scene, Tutorial.Pokerus); } else { this.pokemonGrowthRateText.setText(''); this.pokemonGrowthRateLabelText.setVisible(false); this.type1Icon.setVisible(false); this.type2Icon.setVisible(false); + this.pokemonLuckLabelText.setVisible(false); + this.pokemonLuckText.setVisible(false); this.pokemonUncaughtText.setVisible(true); this.pokemonAbilityLabelText.setVisible(false); this.pokemonPassiveLabelText.setVisible(false); @@ -1317,13 +1368,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonCaughtHatchedContainer.setVisible(false); this.pokemonCandyIcon.setVisible(false); this.pokemonCandyOverlayIcon.setVisible(false); + this.pokemonCandyDarknessOverlay.setVisible(false); this.pokemonCandyCountText.setVisible(false); + this.pokemonFormText.setVisible(false); const defaultDexAttr = this.scene.gameData.getSpeciesDefaultDexAttr(species, true, true); const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); const props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr); - + this.setSpeciesDetails(species, props.shiny, props.formIndex, props.female, props.variant, defaultAbilityIndex, defaultNature, true); this.pokemonSprite.setTint(0x808080); } @@ -1334,6 +1387,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonGrowthRateLabelText.setVisible(false); this.type1Icon.setVisible(false); this.type2Icon.setVisible(false); + this.pokemonLuckLabelText.setVisible(false); + this.pokemonLuckText.setVisible(false); this.pokemonUncaughtText.setVisible(!!species); this.pokemonAbilityLabelText.setVisible(false); this.pokemonPassiveLabelText.setVisible(false); @@ -1341,7 +1396,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonCaughtHatchedContainer.setVisible(false); this.pokemonCandyIcon.setVisible(false); this.pokemonCandyOverlayIcon.setVisible(false); + this.pokemonCandyDarknessOverlay.setVisible(false); this.pokemonCandyCountText.setVisible(false); + this.pokemonFormText.setVisible(false); this.setSpeciesDetails(species, false, 0, false, 0, 0, 0); this.pokemonSprite.clearTint(); @@ -1487,7 +1544,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.speciesStarterMoves.push(speciesEggMoves[species.speciesId][em]); } } - + const speciesMoveData = this.scene.gameData.starterData[species.speciesId].moveset; let moveData: StarterMoveset = speciesMoveData ? Array.isArray(speciesMoveData) @@ -1501,6 +1558,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterMoveset.push(...availableStarterMoves.filter(sm => this.starterMoveset.indexOf(sm) === -1).slice(0, 4 - this.starterMoveset.length)); const speciesForm = getPokemonSpeciesForm(species.speciesId, formIndex); + + const formText = species?.forms[formIndex]?.formKey.split('-'); + for (let i = 0; i < formText?.length; i++) + formText[i] = formText[i].charAt(0).toUpperCase() + formText[i].substring(1); + + this.pokemonFormText.setText(formText?.join(' ')); + this.setTypeIcons(speciesForm.type1, speciesForm.type2); } else { this.pokemonAbilityText.setText(''); @@ -1633,7 +1697,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.clearText(); }; - ui.showText('Begin with these Pokémon?', null, () => { + ui.showText(i18next.t("starterSelectUiHandler:confirmStartTeam"), null, () => { ui.setModeWithoutClear(Mode.CONFIRM, () => { const startRun = (gameMode: GameModes) => { this.scene.gameMode = gameModes[gameMode]; @@ -1676,7 +1740,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.statsContainer.updateIvs(null); } } - + showStats(): void { if (!this.speciesStarterDexEntry) return; diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts index 014465805..b8d9c59a4 100644 --- a/src/ui/stats-container.ts +++ b/src/ui/stats-container.ts @@ -4,7 +4,8 @@ import { Stat, getStatName } from "../data/pokemon-stat"; import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; const ivChartSize = 24; -const ivChartStatCoordMultipliers = [ [ 0, 1 ], [ 0.825, 0.5 ], [ 0.825, -0.5 ], [ 0, -1 ], [ -0.825, -0.5 ], [ -0.825, 0.5 ] ]; +const ivChartStatCoordMultipliers = [ [ 0, -1 ], [ 0.825, -0.5 ], [ 0.825, 0.5 ], [ -0.825, -0.5 ], [ -0.825, 0.5 ], [ 0, 1 ] ]; +const ivChartStatIndexes = [0,1,2,5,4,3] // swap special attack and speed const defaultIvChartData = new Array(12).fill(null).map(() => 0); export class StatsContainer extends Phaser.GameObjects.Container { @@ -22,7 +23,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { } setup() { - const ivChartBgData = new Array(6).fill(null).map((_, i: integer) => [ ivChartSize * ivChartStatCoordMultipliers[i][0], ivChartSize * ivChartStatCoordMultipliers[i][1] ] ).flat(); + const ivChartBgData = new Array(6).fill(null).map((_, i: integer) => [ ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat(); const ivChartBg = this.scene.add.polygon(48, 44, ivChartBgData, 0xd8e0f0, 0.625); ivChartBg.setOrigin(0, 0); @@ -62,7 +63,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { updateIvs(ivs: integer[], originalIvs?: integer[]): void { if (ivs) { - const ivChartData = new Array(6).fill(null).map((_, i) => [ (ivs[i] / 31) * ivChartSize * ivChartStatCoordMultipliers[i][0], (ivs[i] / 31) * ivChartSize * ivChartStatCoordMultipliers[i][1] ] ).flat(); + const ivChartData = new Array(6).fill(null).map((_, i) => [ (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat(); const lastIvChartData = this.statsIvsCache || defaultIvChartData; this.statsIvsCache = ivChartData.slice(0); diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index e6f3d2233..ac04d41be 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -1,8 +1,10 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene, { starterColors } from "../battle-scene"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import * as Utils from "../utils"; import { PlayerPokemon } from "../field/pokemon"; +import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species'; +import { argbFromRgba } from "@material/material-color-utilities"; import { Type, getTypeRgb } from "../data/type"; import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag, getTextColor } from "./text"; import Move, { MoveCategory } from "../data/move"; @@ -16,7 +18,8 @@ import { getBiomeName } from "../data/biomes"; import { Nature, getNatureStatMultiplier } from "../data/nature"; import { loggedInUser } from "../account"; import { PlayerGender } from "../system/game-data"; -import { getVariantTint } from "#app/data/variant"; +import { Variant, getVariantTint } from "#app/data/variant"; +import {Button} from "../enums/buttons"; enum Page { PROFILE, @@ -44,6 +47,9 @@ export default class SummaryUiHandler extends UiHandler { private genderText: Phaser.GameObjects.Text; private shinyIcon: Phaser.GameObjects.Image; private fusionShinyIcon: Phaser.GameObjects.Image; + private candyShadow: Phaser.GameObjects.Sprite; + private candyIcon: Phaser.GameObjects.Sprite; + private candyOverlay: Phaser.GameObjects.Sprite; private statusContainer: Phaser.GameObjects.Container; private status: Phaser.GameObjects.Image; private summaryPageContainer: Phaser.GameObjects.Container; @@ -136,6 +142,20 @@ export default class SummaryUiHandler extends UiHandler { this.pokeball.setOrigin(0, 1); this.summaryContainer.add(this.pokeball); + this.candyShadow = this.scene.add.sprite(13, -140, 'candy'); + this.candyShadow.setTint(0x141414) + this.candyShadow.setScale(0.8); + this.candyShadow.setInteractive(new Phaser.Geom.Rectangle(0, 0, 16, 16), Phaser.Geom.Rectangle.Contains); + this.summaryContainer.add(this.candyShadow); + + this.candyIcon = this.scene.add.sprite(13, -140, 'candy'); + this.candyIcon.setScale(0.8); + this.summaryContainer.add(this.candyIcon); + + this.candyOverlay = this.scene.add.sprite(13, -140, 'candy_overlay'); + this.candyOverlay.setScale(0.8); + this.summaryContainer.add(this.candyOverlay); + this.levelText = addTextObject(this.scene, 36, -17, '', TextStyle.SUMMARY_ALT); this.levelText.setOrigin(0, 1); this.summaryContainer.add(this.levelText); @@ -222,6 +242,10 @@ export default class SummaryUiHandler extends UiHandler { this.shinyOverlay.setVisible(this.pokemon.isShiny()); + const colorScheme = starterColors[this.pokemon.species.getRootSpeciesId()]; + this.candyIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[0]))); + this.candyOverlay.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1]))); + this.numberText.setText(Utils.padInt(this.pokemon.species.speciesId, 4)); this.numberText.setColor(this.getTextColor(!this.pokemon.isShiny() ? TextStyle.SUMMARY : TextStyle.SUMMARY_GOLD)); this.numberText.setShadowColor(this.getTextColor(!this.pokemon.isShiny() ? TextStyle.SUMMARY : TextStyle.SUMMARY_GOLD, true)); @@ -251,6 +275,21 @@ export default class SummaryUiHandler extends UiHandler { this.splicedIcon.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip()); } + var currentFriendship = this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].friendship; + if (!currentFriendship || currentFriendship === undefined) + currentFriendship = 0; + + const friendshipCap = getStarterValueFriendshipCap(speciesStarters[this.pokemon.species.getRootSpeciesId()]); + const candyCropY = 16 - (16 * (currentFriendship / friendshipCap)); + + if (this.candyShadow.visible) { + this.candyShadow.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(null, `${currentFriendship}/${friendshipCap}`, true)); + this.candyShadow.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip()); + } + + this.candyIcon.setCrop(0,candyCropY,16, 16); + this.candyOverlay.setCrop(0,candyCropY,16, 16); + const doubleShiny = isFusion && this.pokemon.shiny && this.pokemon.fusionShiny; const baseVariant = !doubleShiny ? this.pokemon.getVariant() : this.pokemon.variant; @@ -364,9 +403,16 @@ export default class SummaryUiHandler extends UiHandler { case Button.LEFT: this.moveSelect = false; this.setCursor(Page.STATS); - this.hideMoveEffect(); - success = true; - break; + if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE){ + this.hideMoveEffect(); + this.destroyBlinkCursor(); + success = true; + break; + } else { + this.hideMoveSelect(); + success = true; + break; + } } } } else { @@ -376,7 +422,10 @@ export default class SummaryUiHandler extends UiHandler { success = true; } } else if (button === Button.CANCEL) { - ui.setMode(Mode.PARTY); + if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE) + this.hideMoveSelect(); + else + ui.setMode(Mode.PARTY); success = true; } else { const pages = Utils.getEnumValues(Page); @@ -423,16 +472,15 @@ export default class SummaryUiHandler extends UiHandler { } setCursor(cursor: integer, overrideChanged: boolean = false): boolean { - let changed: boolean; + let changed: boolean = overrideChanged || this.moveCursor !== cursor; if (this.moveSelect) { - changed = overrideChanged || this.moveCursor !== cursor; - if (changed) { this.moveCursor = cursor; const selectedMove = this.getSelectedMove(); if (selectedMove) { + this.moveDescriptionText.setY(84); this.movePowerText.setText(selectedMove.power >= 0 ? selectedMove.power.toString() : '---'); this.moveAccuracyText.setText(selectedMove.accuracy >= 0 ? selectedMove.accuracy.toString() : '---'); this.moveCategoryIcon.setFrame(MoveCategory[selectedMove.category].toLowerCase()); @@ -449,7 +497,6 @@ export default class SummaryUiHandler extends UiHandler { } if (moveDescriptionLineCount > 3) { - this.moveDescriptionText.setY(84); this.descriptionScrollTween = this.scene.tweens.add({ targets: this.moveDescriptionText, delay: Utils.fixedInt(2000), @@ -459,7 +506,6 @@ export default class SummaryUiHandler extends UiHandler { y: `-=${14.83 * (moveDescriptionLineCount - 3)}` }); } - } if (!this.moveCursorObj) { this.moveCursorObj = this.scene.add.sprite(-2, 0, 'summary_moves_cursor', 'highlight'); @@ -524,6 +570,11 @@ export default class SummaryUiHandler extends UiHandler { this.setCursor(0, true); this.showMoveEffect(); } + else if (this.cursor===Page.MOVES) { + this.moveCursorObj = null; + this.showMoveSelect(); + this.showMoveEffect(); + } } else this.summaryPageTransitionContainer.x -= 214; @@ -604,6 +655,17 @@ export default class SummaryUiHandler extends UiHandler { if (this.pokemon.isTerastallized()) profileContainer.add(getTypeIcon(types.length, this.pokemon.getTeraType(), true)); + if (this.pokemon.getLuck()) { + const luckLabelText = addTextObject(this.scene, 141, 28, 'Luck:', TextStyle.SUMMARY_ALT); + luckLabelText.setOrigin(0, 0); + profileContainer.add(luckLabelText); + + const luckText = addTextObject(this.scene, 141 + luckLabelText.displayWidth + 2, 28, this.pokemon.getLuck().toString(), TextStyle.SUMMARY); + luckText.setOrigin(0, 0); + luckText.setTint(getVariantTint((Math.min(this.pokemon.getLuck() - 1, 2)) as Variant)); + profileContainer.add(luckText); + } + const ability = this.pokemon.getAbility(true); const abilityNameText = addTextObject(this.scene, 7, 66, ability.name, TextStyle.SUMMARY_ALT); @@ -857,6 +919,12 @@ export default class SummaryUiHandler extends UiHandler { this.moveSelect = false; this.extraMoveRowContainer.setVisible(false); this.moveDescriptionText.setText(''); + + this.destroyBlinkCursor(); + this.hideMoveEffect(); + } + + destroyBlinkCursor(){ if (this.moveCursorBlinkTimer) { this.moveCursorBlinkTimer.destroy(); this.moveCursorBlinkTimer = null; @@ -869,8 +937,6 @@ export default class SummaryUiHandler extends UiHandler { this.selectedMoveCursorObj.destroy(); this.selectedMoveCursorObj = null; } - - this.hideMoveEffect(); } showMoveEffect(instant?: boolean) { diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts index f8a7c9d28..36588dc47 100644 --- a/src/ui/target-select-ui-handler.ts +++ b/src/ui/target-select-ui-handler.ts @@ -1,10 +1,11 @@ import { BattlerIndex } from "../battle"; -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Moves } from "../data/enums/moves"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import * as Utils from "../utils"; import { getMoveTargets } from "../data/move"; +import {Button} from "../enums/buttons"; export type TargetSelectCallback = (cursor: integer) => void; diff --git a/src/ui/text.ts b/src/ui/text.ts index bfb02d06e..a8cce8782 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -19,6 +19,7 @@ export enum TextStyle { SUMMARY_PINK, SUMMARY_GOLD, SUMMARY_GRAY, + SUMMARY_GREEN, MONEY, SETTINGS_LABEL, SETTINGS_SELECTED, @@ -82,6 +83,7 @@ function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptio case TextStyle.SUMMARY_PINK: case TextStyle.SUMMARY_GOLD: case TextStyle.SUMMARY_GRAY: + case TextStyle.SUMMARY_GREEN: case TextStyle.WINDOW: case TextStyle.WINDOW_ALT: case TextStyle.MESSAGE: @@ -160,6 +162,8 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui return !shadow ? '#e8e8a8' : '#a0a060'; case TextStyle.SUMMARY_GRAY: return !shadow ? '#a0a0a0' : '#636363'; + case TextStyle.SUMMARY_GREEN: + return !shadow ? '#78c850' : '#306850'; case TextStyle.SETTINGS_LABEL: return !shadow ? '#f8b050' : '#c07800'; case TextStyle.SETTINGS_SELECTED: diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index 6c96e4759..6f873c6b0 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -5,6 +5,7 @@ import { Mode } from "./ui"; import * as Utils from "../utils"; import { TextStyle, addTextObject } from "./text"; import { battleCountSplashMessage, splashMessages } from "../data/splash-messages"; +import i18next from "i18next"; export default class TitleUiHandler extends OptionSelectUiHandler { private titleContainer: Phaser.GameObjects.Container; @@ -37,7 +38,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler { this.titleContainer.add(this.dailyRunScoreboard); - this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, '? Players Online', TextStyle.MESSAGE, { fontSize: '54px' }); + this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, `? ${i18next.t("menu:playersOnline")}`, TextStyle.MESSAGE, { fontSize: '54px' }); this.playerCountLabel.setOrigin(1, 0); this.titleContainer.add(this.playerCountLabel); @@ -61,9 +62,12 @@ export default class TitleUiHandler extends OptionSelectUiHandler { Utils.apiFetch(`game/titlestats`) .then(request => request.json()) .then(stats => { - this.playerCountLabel.setText(`${stats.playerCount} Players Online`); + this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`); if (this.splashMessage === battleCountSplashMessage) this.splashMessageText.setText(battleCountSplashMessage.replace('{COUNT}', stats.battleCount.toLocaleString('en-US'))); + }) + .catch(err => { + console.error("Failed to fetch title stats:\n", err); }); } diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts index e3c94b764..7fdb85d94 100644 --- a/src/ui/ui-handler.ts +++ b/src/ui/ui-handler.ts @@ -1,6 +1,7 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { TextStyle, getTextColor } from "./text"; import UI, { Mode } from "./ui"; +import {Button} from "../enums/buttons"; export default abstract class UiHandler { protected scene: BattleScene; diff --git a/src/ui/ui.ts b/src/ui/ui.ts index 6e20b2cb8..09deb2bdd 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -1,4 +1,4 @@ -import { Button, default as BattleScene } from '../battle-scene'; +import { default as BattleScene } from '../battle-scene'; import UiHandler from './ui-handler'; import BattleMessageUiHandler from './battle-message-ui-handler'; import CommandUiHandler from './command-ui-handler'; @@ -35,6 +35,7 @@ import SavingIconHandler from './saving-icon-handler'; import UnavailableModalUiHandler from './unavailable-modal-ui-handler'; import OutdatedModalUiHandler from './outdated-modal-ui-handler'; import SessionReloadModalUiHandler from './session-reload-modal-ui-handler'; +import {Button} from "../enums/buttons"; export enum Mode { MESSAGE, diff --git a/src/ui/vouchers-ui-handler.ts b/src/ui/vouchers-ui-handler.ts index 3f41cf9ae..e28e211ee 100644 --- a/src/ui/vouchers-ui-handler.ts +++ b/src/ui/vouchers-ui-handler.ts @@ -1,9 +1,10 @@ -import BattleScene, { Button } from "../battle-scene"; +import BattleScene from "../battle-scene"; import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from "../system/voucher"; import MessageUiHandler from "./message-ui-handler"; import { TextStyle, addTextObject } from "./text"; import { Mode } from "./ui"; import { addWindow } from "./ui-theme"; +import {Button} from "../enums/buttons"; const itemRows = 4; const itemCols = 17; diff --git a/src/utils.test.ts b/src/utils.test.ts index 8dc46371a..22ccbfc63 100644 --- a/src/utils.test.ts +++ b/src/utils.test.ts @@ -1,5 +1,5 @@ import { expect, describe, it } from "vitest"; -import { randomString } from "./utils"; +import { randomString, padInt } from "./utils"; import Phaser from "phaser"; @@ -19,4 +19,26 @@ describe("utils", () => { expect(str1).toBe(str2); }); }); + + describe("padInt", () => { + it("should return a string", () => { + const result = padInt(1, 10); + expect(typeof result).toBe('string'); + }); + + it("should return a padded result with default padWith", () => { + const result = padInt(1, 3); + expect(result).toBe('001'); + }); + + it("should return a padded result using a custom padWith", () => { + const result = padInt(1, 10, 'yes') + expect(result).toBe('yesyesyes1'); + }); + + it("should return inputted value when zero length is entered", () => { + const result = padInt(1, 0); + expect(result).toBe('1') + }) + }); }); diff --git a/src/utils.ts b/src/utils.ts index 577e35c74..822f02f05 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -62,6 +62,11 @@ export function padInt(value: integer, length: integer, padWith?: string): strin return valueStr; } +/** +* Returns a random integer between min and min + range +* @param range The amount of possible numbers +* @param min The starting number +*/ export function randInt(range: integer, min: integer = 0): integer { if (range === 1) return min; @@ -74,6 +79,11 @@ export function randSeedInt(range: integer, min: integer = 0): integer { return Phaser.Math.RND.integerInRange(min, (range - 1) + min); } +/** +* Returns a random integer between min and max (non-inclusive) +* @param min The lowest number +* @param max The highest number +*/ export function randIntRange(min: integer, max: integer): integer { return randInt(max - min, min); } @@ -216,7 +226,7 @@ export const apiUrl = isLocal ? serverUrl : 'api'; export function setCookie(cName: string, cValue: string): void { const expiration = new Date(); - expiration.setTime(new Date().getTime() + 3600000 * 24 * 7); + expiration.setTime(new Date().getTime() + 3600000 * 24 * 30 * 3/*7*/); document.cookie = `${cName}=${cValue};SameSite=Strict;path=/;expires=${expiration.toUTCString()}`; } diff --git a/tsconfig.json b/tsconfig.json index c07d12b01..ab6fd748b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "resolveJsonModule": true, "esModuleInterop": true, "strictNullChecks": false, - "sourceMap": true, + "sourceMap": false, "strict": false, "rootDir": "./src", "baseUrl": "./src", diff --git a/vite.config.js b/vite.config.js index f257239ca..220747b98 100644 --- a/vite.config.js +++ b/vite.config.js @@ -8,7 +8,7 @@ export default defineConfig(({ mode }) => { clearScreen: false, build: { minify: 'esbuild', - sourcemap: true + sourcemap: false }, esbuild: { pure: mode === 'production' ? [ 'console.log' ] : [],