diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e678a297852..07aed42a5a7 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 4cf3196a72b..55f9203a81d 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/index.css b/index.css index 9a507ad6766..dd47387adee 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 bd316330a99..177a92efce6 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 5521dcc86a8..7db944a4533 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 47408b13730..d5ffb651f54 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/se/shing.wav b/public/audio/se/shing.wav new file mode 100644 index 00000000000..e693cb207fc Binary files /dev/null and b/public/audio/se/shing.wav differ diff --git a/public/images/pbinfo_stat_numbers.json b/public/images/pbinfo_stat_numbers.json new file mode 100644 index 00000000000..32170690aa0 --- /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/676-dandy.png b/public/images/pokemon/676-dandy.png index f7303f7ec04..738b9eaec07 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.png b/public/images/pokemon/676-debutante.png index b33fb39c8a8..2be51b49d14 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.png b/public/images/pokemon/676-diamond.png index 1bd0628a543..5662825df7d 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.png b/public/images/pokemon/676-heart.png index de6d3ebb7f6..2747c376bca 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.png b/public/images/pokemon/676-kabuki.png index c402730a5e8..1a9a2ad1689 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.png b/public/images/pokemon/676-la-reine.png index b9cf78ac6a6..1ca19430e66 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.png b/public/images/pokemon/676-matron.png index 4f88ee06a1e..0ea64fcd55e 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.png b/public/images/pokemon/676-pharaoh.png index 6bcc2914010..d3019440c8a 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.png b/public/images/pokemon/676-star.png index 540ba4a2dba..de93346cb74 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 00000000000..fb8f0afb857 --- /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 00000000000..c6bf967942f 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 00000000000..419a5c70a55 --- /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 00000000000..88e238ece14 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 00000000000..aa1e47ae680 --- /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 00000000000..5e282236ceb 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 00000000000..3d103861c5c --- /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 00000000000..d67741eaa57 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 00000000000..b3ac889bcf4 --- /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 00000000000..2e75b933316 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 00000000000..f7af720c93b --- /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 00000000000..c699e109e08 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 00000000000..8773a4a9b80 --- /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 00000000000..3ce92c3e363 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 00000000000..b812a0c9823 --- /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 00000000000..d8f495476fe Binary files /dev/null and b/public/images/pokemon/869-salted-cream.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 00000000000..edf2b5a9a76 --- /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 00000000000..74556910bc1 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 00000000000..7e8eb3f1f08 --- /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 00000000000..749e7c7aa65 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 00000000000..261272c0247 --- /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 00000000000..32570610f13 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 00000000000..23db1b920ea --- /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 00000000000..ec1976d3568 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 00000000000..f19a4443388 --- /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 00000000000..5454202ef27 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 00000000000..ac2e4e0fa1d --- /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 00000000000..00cbd472026 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 00000000000..ac2d6213f18 --- /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 00000000000..96f91ba6c52 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 00000000000..995a0769f15 --- /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 00000000000..7b81e6e7fa3 Binary files /dev/null and b/public/images/pokemon/back/869-salted-cream.png differ diff --git a/public/images/pokemon/back/shiny/676-dandy.json b/public/images/pokemon/back/shiny/676-dandy.json index c2bbb272d46..b13560feb7d 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 634a2b0c8a9..f8c77d88326 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 b1067eed9f9..0469fb6702b 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 3a7a0d7abc2..965e0aaf86d 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 2df54c70a2d..50319863eb3 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 d737c62b507..9ea8ff97838 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 6ebd9b679e9..6202b4b2050 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 fac541f4438..e44c8218aba 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 140e74be3b3..87bcba2e93c 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 bbb1a776ece..e81aada06bd 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 88ddfdc23ac..a5b408946b3 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 e4d699e5fe8..78e43bc30af 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 6bf6d37dd2a..b24180fa85e 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 1867cf457aa..0324b0baf94 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 da483501127..9b18b969754 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 4c139a498d2..563c2f93e21 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 1ef3e6a6111..6ca9f42e5c3 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 0ad91515631..0f388480b4f 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 98341ac8e5c..14101a5b062 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 7bb6cfc0b88..3e9d72b066e 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 00000000000..c189169e6c0 --- /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 00000000000..5407d6e73de 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 00000000000..51ea7fa51ae --- /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 00000000000..5407d6e73de 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 00000000000..344546032ff --- /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 00000000000..5407d6e73de 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 00000000000..21eaa4e016c --- /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 00000000000..5407d6e73de 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 00000000000..cb5a4c26c96 --- /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 00000000000..5407d6e73de 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 00000000000..bd3277d2dd4 --- /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 00000000000..5407d6e73de 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 00000000000..8a487e00562 --- /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 00000000000..5407d6e73de 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 00000000000..e3aeb125b45 --- /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 00000000000..5407d6e73de Binary files /dev/null and b/public/images/pokemon/back/shiny/869-salted-cream.png differ 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 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 00000000000..32cb4cc7d56 Binary files /dev/null and b/public/images/pokemon/icons/869s-salted-cream.png differ diff --git a/public/images/pokemon/shiny/676-dandy.json b/public/images/pokemon/shiny/676-dandy.json index 2bb36e87e27..770db5763b3 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 f7303f7ec04..d0e19946a24 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 fa4859812ed..720b39294e4 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 b33fb39c8a8..ff8d8d76dbe 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 9098c46140e..8ceec5a6f3a 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 1bd0628a543..a29257968a3 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 43f03c195eb..a330e953d10 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 de6d3ebb7f6..39c7e8b900c 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 7121f0b3030..a892c23d256 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 c402730a5e8..d11cff6c87e 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 dc3c4d596a1..24299b06187 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 b9cf78ac6a6..7eed3ef20a2 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 fac13c6551f..def3de9d349 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 4f88ee06a1e..14e31ce77b7 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 6acf62a9f31..0cb4f035c81 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 6bcc2914010..32b78156f7d 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 0686d348789..db4d10dde76 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 540ba4a2dba..d7a327566b9 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 3b0b49acd46..681f8466719 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 f41018c9838..a2ec8d89519 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 00000000000..d08055197ee --- /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 00000000000..803686aed5d 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 00000000000..1160af92907 --- /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 00000000000..803686aed5d 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 00000000000..149ee6e1077 --- /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 00000000000..803686aed5d 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 00000000000..aac46fcf4c1 --- /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 00000000000..803686aed5d 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 00000000000..195e1077d76 --- /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 00000000000..803686aed5d 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 00000000000..1b2b9f59acc --- /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 00000000000..803686aed5d 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 00000000000..384a8d9f362 --- /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 00000000000..803686aed5d 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 00000000000..b3e92c77f8c --- /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 00000000000..803686aed5d Binary files /dev/null and b/public/images/pokemon/shiny/869-salted-cream.png differ diff --git a/public/images/pokemon_icons_6.json b/public/images/pokemon_icons_6.json index 48a676cc9ca..f0d7a46c7d4 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 9373aca8b70..46ff8597ce2 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 20f95930bed..430d114ff91 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 0d2ddcec281..70b4e280ccb 100644 Binary files a/public/images/pokemon_icons_8.png and b/public/images/pokemon_icons_8.png differ diff --git a/public/images/ui/achv_bar_4.png b/public/images/ui/achv_bar_4.png index cc06af91620..f14026c7a34 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 00000000000..cc06af91620 Binary files /dev/null and b/public/images/ui/achv_bar_5.png differ diff --git a/public/images/ui/legacy/achv_bar_4.png b/public/images/ui/legacy/achv_bar_4.png index dae7a30dec0..d52fbfd055e 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 00000000000..dae7a30dec0 Binary files /dev/null and b/public/images/ui/legacy/achv_bar_5.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 00000000000..94c9f2a1817 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 00000000000..eb32e694134 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 00000000000..dd2b7e65ba3 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 00000000000..078248624bc 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 00000000000..b7da47fc192 --- /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 00000000000..62ec3758772 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 00000000000..fa7d757990f --- /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 00000000000..ee1453b2107 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 58edefa164f..ff5ba661450 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 00000000000..7148a7af475 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 5250cb6f070..a7ff3cb9b82 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 00000000000..69ac5d49411 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 021a120070c..9bac63e5e72 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 89b84d7f630..6d94871e8da 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 d1f9818d7bd..56a1989f2cd 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 9d3e03bd66d..fee08f71044 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 db276227233..f12d46bb4ff 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 00000000000..7ce3bd1af1e 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 00000000000..cda978979aa Binary files /dev/null and b/public/images/ui/pbinfo_player_stats.png differ diff --git a/public/images/ui/pbinfo_player_type1.png b/public/images/ui/pbinfo_player_type1.png index d1f9818d7bd..56a1989f2cd 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 89b84d7f630..6d94871e8da 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 00000000000..f431e5afafd --- /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 00000000000..46169091e7c 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 00000000000..ec4f7117bb7 --- /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 00000000000..c778ba99273 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 e6eedd27e2f..4b5f2dbadd1 100644 --- a/public/manifest.webmanifest +++ b/public/manifest.webmanifest @@ -3,8 +3,8 @@ "short_name": "PokéRogue", "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", + "start_url": "https://pokerogue.net", + "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 512a196b175..cbf363f689a 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -60,23 +60,10 @@ 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'; 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; @@ -98,6 +85,7 @@ export enum Button { ACTION, CANCEL, MENU, + STATS, CYCLE_SHINY, CYCLE_FORM, CYCLE_GENDER, @@ -209,25 +197,26 @@ export default class BattleScene extends SceneBase { 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); + 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.STATS]: 8, // share + [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 = ''; @@ -531,10 +520,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(); }); @@ -615,6 +617,7 @@ export default class BattleScene extends SceneBase { [Button.ACTION]: [keyCodes.SPACE, keyCodes.ENTER, 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], @@ -1041,17 +1044,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: @@ -1423,8 +1435,16 @@ export default class BattleScene extends SceneBase { if (this.ui?.getMode() === Mode.SETTINGS) (this.ui.getHandler() as SettingsUiHandler).show([]); } - } else - return; + } else { + let pressed = false; + if (this.ui && (this.buttonJustReleased(Button.STATS) || (pressed = this.buttonJustPressed(Button.STATS)))) { + for (let p of this.getField().filter(p => p?.isActive(true))) + p.toggleStats(pressed); + if (pressed) + this.setLastProcessedMovementTime(Button.STATS); + } else + return; + } if (inputSuccess && this.enableVibration && typeof navigator.vibrate !== 'undefined') navigator.vibrate(vibrationLength || 10); } @@ -1434,7 +1454,7 @@ export default class BattleScene extends SceneBase { * or not. It will only return true once, until the key is released and pressed down * again. */ - gamepadButtonJustDown(button: Phaser.Input.Gamepad.Button) : boolean { + gamepadButtonJustDown(button: Phaser.Input.Gamepad.Button): boolean { if (!button || !this.gamepadSupport) return false; @@ -1454,6 +1474,23 @@ export default class BattleScene extends SceneBase { return this.buttonKeys[button].some(k => Phaser.Input.Keyboard.JustDown(k)) || this.gamepadButtonJustDown(gamepad?.buttons[this.gamepadKeyConfig[button]]); } + /** + * gamepadButtonJustUp returns true if @param button has just been released + * or not. It will only return true once, until the key is released and pressed down + * again. + */ + gamepadButtonJustUp(button: Phaser.Input.Gamepad.Button): boolean { + if (!button || !this.gamepadSupport) + return false; + + return !this.gamepadButtonStates[button.index]; + } + + buttonJustReleased(button: Button): boolean { + const gamepad = this.input.gamepad?.gamepads[0]; + return this.buttonKeys[button].some(k => Phaser.Input.Keyboard.JustUp(k)) || this.gamepadButtonJustUp(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 diff --git a/src/data/ability.ts b/src/data/ability.ts index fff85fcabc1..960818a24de 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -580,6 +580,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 +708,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; @@ -906,8 +948,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 +1018,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 +1193,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; @@ -1382,6 +1447,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 +1473,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 +1638,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; @@ -1695,6 +1785,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; @@ -2545,7 +2682,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(), @@ -2622,8 +2759,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 +2822,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 +2873,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,7 +2901,7 @@ 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(), @@ -2793,7 +2930,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) @@ -3030,7 +3167,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)), @@ -3067,17 +3204,21 @@ 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) - .unimplemented(), - new Ability(Abilities.POWER_CONSTRUCT, 7) + .partial(), + 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(), + .partial(), new Ability(Abilities.CORROSION, 7) .unimplemented(), new Ability(Abilities.COMATOSE, 7) @@ -3263,7 +3404,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) diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index bb76a9880b3..8942cfe4b3e 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 b12d15968f6..183306d5066 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; @@ -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 b28772373b1..1228bb54904 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,6 +108,8 @@ 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(); @@ -119,6 +123,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 +132,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 d6e84bcbc7c..61da0410dcf 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 f2b9a55d3fa..221496a177d 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -62,7 +62,7 @@ export const speciesEggMoves = { [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.DRAGON_ASCENT ], [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.SIZZLY_SLIDE, Moves.NO_RETREAT ], + [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.SCALD, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STRENGTH_SAP ], [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.DRILL_RUN, Moves.AQUA_CUTTER, Moves.MIGHTY_CLEAVE ], @@ -81,7 +81,7 @@ export const speciesEggMoves = { [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.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.VOLT_SWITCH, Moves.TAIL_GLOW ], - [Species.PICHU]: [ Moves.PIKA_PAPOW, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.ZIPPY_ZAP ], + [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.SCORCHING_SANDS, Moves.ROOST, Moves.MOONBLAST, Moves.FIERY_DANCE ], @@ -458,9 +458,9 @@ export const speciesEggMoves = { [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.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.FIRE_LASH, Moves.DRAGON_DANCE ], - [Species.ARCTOZOLT]: [ Moves.TRIPLE_AXEL, Moves.EARTHQUAKE, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], + [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.EARTHQUAKE, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], + [Species.ARCTOVISH]: [ Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], [Species.DURALUDON]: [ Moves.CALM_MIND, Moves.BODY_PRESS, Moves.EARTH_POWER, Moves.RECOVER ], [Species.DREEPY]: [ Moves.DRAGON_ENERGY, Moves.SHED_TAIL, Moves.BLAZING_TORQUE, Moves.SPECTRAL_THIEF ], [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.BITTER_BLADE, Moves.LEAF_BLADE, Moves.VICTORY_DANCE ], diff --git a/src/data/enums/arena-tag-type.ts b/src/data/enums/arena-tag-type.ts index cc08ca4fdcf..2ecac8b5677 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 4d810b737aa..d18ccf1c52f 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 9329d21c1d4..0fedea1ec0e 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -557,7 +557,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; } @@ -685,7 +685,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; @@ -1009,6 +1009,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); @@ -1306,10 +1325,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); + } }); } @@ -1551,6 +1573,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!`)); @@ -1565,6 +1589,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!`)); @@ -1579,6 +1605,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!`)); @@ -1745,13 +1773,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; } @@ -1993,6 +2021,17 @@ 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 VariableAtkAttr extends MoveAttr { constructor() { super(); @@ -2466,7 +2505,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 { @@ -2590,7 +2629,7 @@ export class CurseAttr extends MoveEffectAttr { } let curseRecoilDamage = 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 { @@ -3099,11 +3138,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; @@ -3557,6 +3608,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 => { @@ -3608,6 +3676,20 @@ 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; + }; + } +} + const failOnGravityCondition: MoveConditionFunc = (user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY); const failOnBossCondition: MoveConditionFunc = (user, target, move) => !target.isBossImmune(); @@ -3669,6 +3751,19 @@ 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; @@ -4152,9 +4247,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) @@ -4481,7 +4574,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(), @@ -4501,6 +4594,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) @@ -4726,8 +4820,8 @@ export function initMoves() { .partial(), 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) .target(MoveTarget.USER_OR_NEAR_ALLY), @@ -4769,7 +4863,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) @@ -4788,15 +4882,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) @@ -4809,6 +4895,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) @@ -5035,6 +5125,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) @@ -5052,7 +5144,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(), @@ -5122,7 +5215,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) @@ -5252,7 +5345,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(), @@ -5355,7 +5448,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() @@ -5397,6 +5490,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) @@ -5968,9 +6063,7 @@ export function initMoves() { .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) @@ -6285,8 +6378,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() @@ -6340,6 +6432,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 0c1dfe06ca1..0d09277ad47 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 e8dbef822d5..87094af2028 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -542,11 +542,21 @@ 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.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 +640,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 5788c9c61c8..0b545d1bd63 100644 --- a/src/data/pokemon-level-moves.ts +++ b/src/data/pokemon-level-moves.ts @@ -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 ], @@ -2231,9 +2234,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 +2251,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 +2278,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 +2304,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 ], @@ -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 ], @@ -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 8be93672f34..d118adc0fd8 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 @@ -1748,8 +1748,14 @@ 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.BATTLE_BOND, 530, 72, 95, 67, 103, 71, 122, 45, 70, 239, 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, @@ -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), @@ -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 11629cf05d7..198ff07cec9 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/tms.ts b/src/data/tms.ts index 71264d16c62..332eb2234b1 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, @@ -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-names.ts b/src/data/trainer-names.ts index a1c83af0779..348976eae92 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/field/arena.ts b/src/field/arena.ts index 910d998d68e..5b14560d407 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; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index d834ffb35b0..27728680c5f 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1,16 +1,16 @@ 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'; @@ -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 } 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 { BerryType } from '../data/berry'; +import { ABILITY_OVERRIDE, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../overrides'; +import i18next from '../plugins/i18n'; export enum FieldPosition { CENTER, @@ -454,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()); } @@ -580,6 +589,11 @@ 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) @@ -657,7 +671,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 { @@ -997,11 +1011,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { let shinyThreshold = new Utils.IntegerHolder(32); if (thresholdOverride === undefined) { - if (!this.hasTrainer()) { - if (new Date() < new Date('4/29/2024')) - shinyThreshold.value *= 2; + if (!this.hasTrainer()) this.scene.applyModifiers(ShinyRateBoosterModifier, true, shinyThreshold); - } } else shinyThreshold.value = thresholdOverride; @@ -1181,6 +1192,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; @@ -1317,7 +1332,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); @@ -1340,7 +1356,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); @@ -1408,7 +1424,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); @@ -1426,16 +1442,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; } } @@ -1452,7 +1468,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; } @@ -1622,6 +1638,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[] { @@ -1922,6 +1939,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } this.summonDataPrimer = null; } + this.updateInfo(); } resetBattleData(): void { @@ -2350,6 +2368,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 => { @@ -2417,12 +2466,17 @@ 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.moveset = this.moveset.slice(); + newPokemon.moveset = this.copyMoveset(); + newPokemon.luck = this.luck; + newPokemon.fusionSpecies = this.fusionSpecies; newPokemon.fusionFormIndex = this.fusionFormIndex; newPokemon.fusionAbilityIndex = this.fusionAbilityIndex; @@ -2430,8 +2484,9 @@ export class PlayerPokemon extends Pokemon { 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 => { @@ -2529,6 +2584,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 { @@ -2549,9 +2613,15 @@ 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); @@ -2661,9 +2731,13 @@ export class EnemyPokemon extends Pokemon { let targetScores: integer[] = []; for (let mt of moveTargets[move.id]) { + // Prevent a target score from being calculated when there isn't a target + if (mt === -1) + 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); @@ -2731,8 +2805,14 @@ export class EnemyPokemon extends Pokemon { return scoreA < scoreB ? 1 : scoreA > scoreB ? -1 : 0; }); - if (!sortedBenefitScores.length) + if (!sortedBenefitScores.length) { + // Set target to -1 when using a counter move + // This is the same as when the player does so + if (!!move.findAttr(attr => attr instanceof CounterDamageAttr)) + return [-1]; + return []; + } let targetWeights = sortedBenefitScores.map(s => s[1]); const lowestWeight = targetWeights[targetWeights.length - 1]; @@ -2983,6 +3063,7 @@ export class PokemonSummonData { export class PokemonBattleData { public hitCount: integer = 0; public endured: boolean = false; + public berriesEaten: BerryType[] = []; } export class PokemonBattleSummonData { diff --git a/src/game-mode.ts b/src/game-mode.ts index 0ac3f0503f1..76c97b4c9ac 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, diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 2f37b900ab5..05b6c9f50b1 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -39,15 +39,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 +67,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 +223,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 00000000000..61191a1165a --- /dev/null +++ b/src/locales/de/battle.ts @@ -0,0 +1,52 @@ +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.", + "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 00000000000..1ce9e0317bf --- /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 d70cd83c50d..3f86ae41a7e 100644 --- a/src/locales/de/menu.ts +++ b/src/locales/de/menu.ts @@ -35,28 +35,13 @@ 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", + "confirmStartTeam":'Begin with these Pokémon?', } as const; \ No newline at end of file diff --git a/src/locales/de/pokemon.ts b/src/locales/de/pokemon.ts index 09be8894eb4..9efecb819cd 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/tutorial.ts b/src/locales/de/tutorial.ts new file mode 100644 index 00000000000..2773b6710ba --- /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 00000000000..599672a1b19 --- /dev/null +++ b/src/locales/en/battle.ts @@ -0,0 +1,52 @@ +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.", + "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 bce59c02c11..887f3d87834 100644 --- a/src/locales/en/menu.ts +++ b/src/locales/en/menu.ts @@ -35,47 +35,13 @@ 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", + "confirmStartTeam":'Begin with these Pokémon?', } as const; \ 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 00000000000..2773b6710ba --- /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 00000000000..1d4345a6f5b --- /dev/null +++ b/src/locales/es/battle.ts @@ -0,0 +1,52 @@ +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 {{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}}?" +} 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 237e779db03..66a892f8fd3 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 00000000000..b431e3b7065 --- /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 dc1c50b3821..5569c1e1668 100644 --- a/src/locales/es/menu.ts +++ b/src/locales/es/menu.ts @@ -19,47 +19,13 @@ export const menu: SimpleTranslationEntries = { "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", + "confirmStartTeam":'¿Comenzar con estos Pokémon?', } as const; \ 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 00000000000..e179ca55cee --- /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 la configuración y otras funciones.`, + + "menu": `Desde este menú podrás acceder a la configuración. + $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 00000000000..742a8f63d77 --- /dev/null +++ b/src/locales/fr/battle.ts @@ -0,0 +1,52 @@ +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\n{{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é.", + "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 684a8cc07ba..54328a05eb1 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 015132bc6c5..7cea2c6d306 100644 --- a/src/locales/fr/menu.ts +++ b/src/locales/fr/menu.ts @@ -30,47 +30,13 @@ export const menu: SimpleTranslationEntries = { "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": `Vous avez battu\n{{trainerName}} !`, - "pokemonCaught": "Vous avez attrapé {{pokemonName}} !", - "pokemon": "Pokémon", - "sendOutPokemon": "{{pokemonName}} ! Go !", - "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é.", - "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}} ?", + "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", + "confirmStartTeam":'Commencer avec ces Pokémon ?', } as const; diff --git a/src/locales/fr/move.ts b/src/locales/fr/move.ts index ba3d1e2badc..b6d17252b59 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": { @@ -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 fa543852b19..fc0ed5e1074 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/tutorial.ts b/src/locales/fr/tutorial.ts new file mode 100644 index 00000000000..bcd76d61da2 --- /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/battle.ts b/src/locales/it/battle.ts new file mode 100644 index 00000000000..599672a1b19 --- /dev/null +++ b/src/locales/it/battle.ts @@ -0,0 +1,52 @@ +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.", + "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/it/fight-ui-handler.ts b/src/locales/it/fight-ui-handler.ts new file mode 100644 index 00000000000..1ce9e0317bf --- /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": "POWER", +} as const; \ No newline at end of file diff --git a/src/locales/it/menu.ts b/src/locales/it/menu.ts index 872315d77c0..33c128c137e 100644 --- a/src/locales/it/menu.ts +++ b/src/locales/it/menu.ts @@ -1,10 +1,47 @@ 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": "Log in or create an account to start. No email required!", + "username": "Username", + "password": "Password", + "login": "Login", + "register": "Register", + "emptyUsername": "Username must not be empty", + "invalidLoginUsername": "The provided username is invalid", + "invalidRegisterUsername": "Username must only contain letters, numbers, or underscores", + "invalidLoginPassword": "The provided password is invalid", + "invalidRegisterPassword": "Password must be 6 characters or longer", + "usernameAlreadyUsed": "The provided username is already in use", + "accountNonExistent": "The provided user does not exist", + "unmatchingPassword": "The provided password does not match", + "passwordNotMatchingConfirmPassword": "Password must match confirm password", + "confirmPassword": "Confirm Password", + "registrationAgeWarning": "By registering, you confirm you are of 13 years of age or older.", + "backToLogin": "Back to Login", + "failedToLoadSaveData": "Failed to load save data. Please reload the page.\nIf this continues, please contact the administrator.", + "sessionSuccess": "Session loaded successfully.", + "failedToLoadSession": "Your session data could not be loaded.\nIt may be corrupted.", + "boyOrGirl": "Are you a boy or a girl?", + "boy": "Boy", + "girl": "Girl", + "dailyRankings": "Daily Rankings", + "weeklyRankings": "Weekly Rankings", + "noRankings": "No Rankings", + "loading": "Loading…", + "playersOnline": "Players Online", + "empty":"Empty", + "yes":"Yes", + "no":"No", + "confirmStartTeam":'Begin with these Pokémon?', } 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 7a209461b11..b2c023aa383 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/tutorial.ts b/src/locales/it/tutorial.ts new file mode 100644 index 00000000000..898dcead8a4 --- /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 6a00693fc71..b3b4d5f3cc6 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 6237e8b5a50..4229b8be3b7 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), diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index d8fad1466b9..88b009d3a48 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 00000000000..732b1a5a45b --- /dev/null +++ b/src/overrides.ts @@ -0,0 +1,23 @@ +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 OPP_SPECIES_OVERRIDE = 0; +export const OPP_ABILITY_OVERRIDE = Abilities.NONE; +export const OPP_MOVE_OVERRIDE = 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 9b288510dab..3d80b22ebd2 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 } 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"; @@ -58,6 +58,7 @@ 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; @@ -331,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); }); }); } @@ -815,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) { @@ -1187,7 +1190,7 @@ export class SummonPhase extends PartyMemberPokemonPhase { } 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`); @@ -1355,8 +1358,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 }) @@ -1396,8 +1399,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 }) @@ -1421,9 +1424,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) @@ -1542,7 +1547,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); @@ -1562,7 +1567,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()); } } @@ -1577,7 +1582,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)); }); } @@ -1671,7 +1676,7 @@ export class CommandPhase extends FieldPhase { 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.showText(i18next.t('battle:moveNotImplemented', { moveName: move.getName().slice(0, -4) }), null, () => { this.scene.ui.clearText(); this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); }, null, true); @@ -1682,6 +1687,8 @@ export class CommandPhase extends FieldPhase { 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; @@ -1690,7 +1697,7 @@ export class CommandPhase extends FieldPhase { 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.showText(i18next.t('battle:moveDisabled', { moveName: move.getName() }), null, () => { this.scene.ui.clearText(); this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); }, null, true); @@ -1698,17 +1705,17 @@ export class CommandPhase extends FieldPhase { } 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); @@ -1717,7 +1724,7 @@ 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); @@ -1726,7 +1733,7 @@ export class CommandPhase extends FieldPhase { 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); @@ -1746,14 +1753,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); @@ -1776,10 +1783,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, () => { @@ -2029,7 +2036,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; } @@ -2323,13 +2330,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); @@ -2337,7 +2345,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() { @@ -2400,7 +2408,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(); @@ -2484,7 +2492,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); } } @@ -2546,7 +2554,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); @@ -2669,7 +2677,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; @@ -2710,8 +2717,11 @@ 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(); + 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) { @@ -3148,8 +3158,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({ @@ -3220,13 +3230,8 @@ export class VictoryPhase extends PokemonPhase { for (let partyMember of expPartyMembers) { 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); - } + if (participated) + partyMember.addFriendship(2); else if (!expShareModifier) { partyMemberExp.push(0); continue; @@ -3335,10 +3340,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; @@ -3605,7 +3610,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); @@ -3693,7 +3698,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) @@ -3742,7 +3747,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); @@ -3751,15 +3756,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)); @@ -3770,7 +3775,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(); @@ -3778,7 +3783,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)); @@ -4091,9 +4096,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(); @@ -4179,7 +4184,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(), @@ -4200,7 +4205,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(); } @@ -4232,7 +4237,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); @@ -4336,6 +4341,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; const partyUiMode = isMoveModifier ? PartyUiMode.MOVE_MODIFIER : isTmModifier ? PartyUiMode.TM_MODIFIER : isRememberMoveModifier ? PartyUiMode.REMEMBER_MOVE_MODIFIER @@ -4355,7 +4361,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()); @@ -4410,7 +4416,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)); @@ -4504,7 +4510,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 adc1f3d5295..4d770ae0a12 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,6 +13,12 @@ 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 frMove } from '../locales/fr/move'; @@ -43,13 +51,21 @@ import { commandUiHandler as frCommandUiHandler } from '../locales/fr/command-ui 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'; export interface SimpleTranslationEntries { [key: string]: string } - export interface MoveTranslationEntry { name: string, effect: string @@ -72,10 +88,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 +100,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 +122,7 @@ export function initI18n(): void { en: { menu: enMenu, menuUiHandler: enMenuUiHandler, + battle: enBattle, move: enMove, ability: enAbility, pokeball: enPokeball, @@ -113,20 +130,25 @@ export function initI18n(): void { pokemonStat: enPokemonStat, commandUiHandler: enCommandUiHandler, fightUiHandler: enFightUiHandler, + tutorial: enTutorial, }, es: { menu: esMenu, menuUiHandler: esMenuUiHandler, + battle: esBattle, move: esMove, ability: esAbility, pokeball: esPokeball, pokemon: esPokemon, pokemonStat: esPokemonStat, commandUiHandler: esCommandUiHandler, + fightUiHandler: esFightUiHandler, + tutorial: esTutorial, }, fr: { menu: frMenu, menuUiHandler: frMenuUiHandler, + battle: frBattle, move: frMove, ability: frAbility, pokeball: frPokeball, @@ -134,21 +156,28 @@ export function initI18n(): void { pokemonStat: frPokemonStat, commandUiHandler: frCommandUiHandler, fightUiHandler: frFightUiHandler, + tutorial: frTutorial, }, it: { menu: itMenu, menuUiHandler: itMenuUiHandler, + battle: itBattle, pokemonStat: itPokemonStat, + fightUiHandler: itFightUiHandler, + tutorial: itTutorial, }, de: { menu: deMenu, menuUiHandler: deMenuUiHandler, + battle: deBattle, move: deMove, ability: deAbility, pokeball: dePokeball, pokemon: dePokemon, pokemonStat: dePokemonStat, commandUiHandler: deCommandUiHandler, + fightUiHandler: deFightUiHandler, + tutorial: deTutorial, } }, }); @@ -161,12 +190,14 @@ 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; }; } } diff --git a/src/system/achv.ts b/src/system/achv.ts index 2307347db3a..f63dd5b2810 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) diff --git a/src/system/game-data.ts b/src/system/game-data.ts index e11c2dcc572..6410c52a2b8 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; @@ -988,6 +989,7 @@ export class GameData { moveset: null, eggMoves: 0, candyCount: 0, + friendship: 0, abilityAttr: defaultStarterSpecies.includes(speciesId) ? AbilityAttr.ABILITY_1 : 0, passiveAttr: 0, valueReduction: 0 @@ -1035,6 +1037,7 @@ export class GameData { const hasPrevolution = pokemonPrevolutions.hasOwnProperty(species.speciesId); const newCatch = !caughtAttr; + const hasNewAttr = (caughtAttr & dexAttr) !== dexAttr; if (incrementCount) { if (!fromEgg) { @@ -1057,7 +1060,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)); } diff --git a/src/system/voucher.ts b/src/system/voucher.ts index c3bae6f0878..276e74eeb0d 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 a924243ac33..88e88fa809c 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/battle-info.ts b/src/ui/battle-info.ts index ae794a256fa..2ca0457c801 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 7bf983c34ed..5e2cb56518f 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -1,15 +1,16 @@ import BattleScene, { Button } from "../battle-scene"; -import { addTextObject, TextStyle } from "./text"; +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"; 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 +30,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 +96,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 +116,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 +210,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 +223,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 +258,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 2219e07479d..a4cc1295028 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/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index d9e7726d826..a220b6f3a3d 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -1,6 +1,7 @@ import BattleScene, { Button } from "../battle-scene"; import AbstractOptionSelectUiHandler, { OptionSelectConfig } from "./abstact-option-select-ui-handler"; import { Mode } from "./ui"; +import i18next from "i18next"; export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { private switchCheck: boolean; @@ -19,14 +20,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 90fef5ba5e4..8b258b3a702 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/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 30558b5bda0..35014fa7027 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -90,6 +90,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 +186,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 +385,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 +395,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 +665,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 4d8ecfe0b03..572a28f10c8 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 181b0643cb9..69ac94d99ba 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -8,6 +8,7 @@ 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"; const sessionSlotCount = 5; @@ -258,7 +259,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 +315,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/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 2fd67ac0485..7cc99d81fb7 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -27,6 +27,7 @@ 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"; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -203,7 +204,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)); @@ -318,7 +319,7 @@ 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); @@ -333,7 +334,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([]); @@ -498,7 +499,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const eggMovesLabel = addTextObject(this.scene, -46, 0, 'Egg Moves', TextStyle.WINDOW_ALT); eggMovesLabel.setOrigin(0.5, 0); - + this.pokemonEggMovesContainer.add(eggMovesLabel); for (let m = 0; m < 4; m++) { @@ -552,7 +553,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { species = getPokemonSpecies(randomSpeciesId); pokerusCursor = this.genSpecies[species.generation - 1].indexOf(species); }; - + let dupe = false; do { @@ -1049,7 +1050,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } } - + if (success) ui.playSelect(); else if (error) @@ -1086,7 +1087,7 @@ 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 = []; @@ -1212,7 +1213,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; @@ -1311,7 +1312,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); } @@ -1319,7 +1320,7 @@ 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(''); @@ -1341,7 +1342,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { 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); } @@ -1507,7 +1508,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) @@ -1653,7 +1654,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.clearText(); }; - ui.showText('Begin with these Pokémon?', null, () => { + ui.showText(i18next.t("menu:confirmStartTeam"), null, () => { ui.setModeWithoutClear(Mode.CONFIRM, () => { const startRun = (gameMode: GameModes) => { this.scene.gameMode = gameModes[gameMode]; @@ -1696,7 +1697,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 0144658051f..b8d9c59a4d7 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 44003a7c8fc..7776e21782f 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -364,9 +364,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 { @@ -426,16 +433,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()); @@ -452,7 +458,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), @@ -462,7 +467,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'); @@ -527,6 +531,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; @@ -871,6 +880,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; @@ -883,8 +898,6 @@ export default class SummaryUiHandler extends UiHandler { this.selectedMoveCursorObj.destroy(); this.selectedMoveCursorObj = null; } - - this.hideMoveEffect(); } showMoveEffect(instant?: boolean) { diff --git a/src/ui/text.ts b/src/ui/text.ts index bfb02d06e27..a8cce878240 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 6c96e475929..6f873c6b0a1 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/tsconfig.json b/tsconfig.json index c07d12b010c..ab6fd748bfc 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 f257239cafa..220747b98e3 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' ] : [],