diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index e678a2978..07aed42a5 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -41,4 +41,6 @@ jobs:
files: |
https://pokerogue.net/
https://pokerogue.net/index.html
- https://pokerogue.net/manifest.json
\ No newline at end of file
+ https://pokerogue.net/manifest.json
+ https://pokerogue.net/manifest.webmanifest
+ https://pokerogue.net/service-worker.js
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 4cf3196a7..55f9203a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,5 +33,6 @@ public/images/pokemon/icons/input/output/*
public/images/character/*/
src/data/battle-anim-raw-data*.ts
src/data/battle-anim-data.ts
+src/overrides.ts
coverage
\ No newline at end of file
diff --git a/README.md b/README.md
index b2955f8c4..d08107867 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ If you have the motivation and experience with Typescript/Javascript (or are wil
### ❔ FAQ
**How do I test a new _______?**
-- In the `battle-scene.ts` file there are overrides for most values you'll need to change for testing
+- In the `src/overrides.ts` file there are overrides for most values you'll need to change for testing
## 🪧 To Do
diff --git a/index.css b/index.css
index 9a507ad67..dd47387ad 100644
--- a/index.css
+++ b/index.css
@@ -150,6 +150,10 @@ body {
display: none;
}
+#touchControls:not([data-ui-mode='COMMAND']):not([data-ui-mode='FIGHT']):not([data-ui-mode='BALL']):not([data-ui-mode='TARGET_SELECT']) #apad #apadStats {
+ display: none;
+}
+
#apad .apadRectBtnContainer + .apadSqBtnContainer {
top: calc(var(--controls-size) * -1.9);
left: calc(var(--controls-size) * -0.9);
diff --git a/index.html b/index.html
index bd316330a..177a92efc 100644
--- a/index.html
+++ b/index.html
@@ -74,6 +74,9 @@
V
+
+ C
+
diff --git a/package-lock.json b/package-lock.json
index 5521dcc86..7db944a45 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,16 +1,17 @@
{
"name": "pokemon-rogue-battle",
- "version": "1.0.1",
+ "version": "1.0.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pokemon-rogue-battle",
- "version": "1.0.1",
+ "version": "1.0.4",
"dependencies": {
"@material/material-color-utilities": "^0.2.7",
"crypto-js": "^4.2.0",
"i18next": "^23.11.1",
+ "i18next-browser-languagedetector": "^7.2.1",
"json-stable-stringify": "^1.1.0",
"phaser": "^3.70.0",
"phaser3-rex-plugins": "^1.1.84"
@@ -2772,6 +2773,14 @@
"@babel/runtime": "^7.23.2"
}
},
+ "node_modules/i18next-browser-languagedetector": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz",
+ "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.2"
+ }
+ },
"node_modules/i18next-http-backend": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.5.0.tgz",
diff --git a/package.json b/package.json
index a8c20cc49..d5ffb651f 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"@material/material-color-utilities": "^0.2.7",
"crypto-js": "^4.2.0",
"i18next": "^23.11.1",
+ "i18next-browser-languagedetector": "^7.2.1",
"json-stable-stringify": "^1.1.0",
"phaser": "^3.70.0",
"phaser3-rex-plugins": "^1.1.84"
diff --git a/public/audio/bgm/battle_legendary_k.mp3 b/public/audio/bgm/battle_legendary_kyurem.mp3
similarity index 100%
rename from public/audio/bgm/battle_legendary_k.mp3
rename to public/audio/bgm/battle_legendary_kyurem.mp3
diff --git a/public/audio/bgm/battle_legendary_regis.mp3 b/public/audio/bgm/battle_legendary_regis.mp3
new file mode 100644
index 000000000..227d544d9
Binary files /dev/null and b/public/audio/bgm/battle_legendary_regis.mp3 differ
diff --git a/public/audio/bgm/battle_legendary_rz.mp3 b/public/audio/bgm/battle_legendary_res_zek.mp3
similarity index 100%
rename from public/audio/bgm/battle_legendary_rz.mp3
rename to public/audio/bgm/battle_legendary_res_zek.mp3
diff --git a/public/audio/bgm/battle_legendary.mp3 b/public/audio/bgm/battle_legendary_unova.mp3
similarity index 100%
rename from public/audio/bgm/battle_legendary.mp3
rename to public/audio/bgm/battle_legendary_unova.mp3
diff --git a/public/audio/se/shing.wav b/public/audio/se/shing.wav
new file mode 100644
index 000000000..e693cb207
Binary files /dev/null and b/public/audio/se/shing.wav differ
diff --git a/public/images/items.json b/public/images/items.json
index a878c7db5..939b3927e 100644
--- a/public/images/items.json
+++ b/public/images/items.json
@@ -4,8 +4,8 @@
"image": "items.png",
"format": "RGBA8888",
"size": {
- "w": 391,
- "h": 391
+ "w": 396,
+ "h": 396
},
"scale": 1,
"frames": [
@@ -72,6 +72,48 @@
"h": 28
}
},
+ {
+ "filename": "bronze_ribbon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 1,
+ "w": 22,
+ "h": 31
+ },
+ "frame": {
+ "x": 29,
+ "y": 27,
+ "w": 22,
+ "h": 31
+ }
+ },
+ {
+ "filename": "great_ribbon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 1,
+ "w": 22,
+ "h": 31
+ },
+ "frame": {
+ "x": 0,
+ "y": 58,
+ "w": 22,
+ "h": 31
+ }
+ },
{
"filename": "linking_cord",
"rotated": false,
@@ -87,12 +129,75 @@
"h": 26
},
"frame": {
- "x": 29,
- "y": 27,
+ "x": 61,
+ "y": 0,
"w": 27,
"h": 26
}
},
+ {
+ "filename": "master_ribbon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 1,
+ "w": 22,
+ "h": 31
+ },
+ "frame": {
+ "x": 0,
+ "y": 89,
+ "w": 22,
+ "h": 31
+ }
+ },
+ {
+ "filename": "rogue_ribbon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 1,
+ "w": 22,
+ "h": 31
+ },
+ "frame": {
+ "x": 22,
+ "y": 58,
+ "w": 22,
+ "h": 31
+ }
+ },
+ {
+ "filename": "ultra_ribbon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 1,
+ "w": 22,
+ "h": 31
+ },
+ "frame": {
+ "x": 0,
+ "y": 120,
+ "w": 22,
+ "h": 31
+ }
+ },
{
"filename": "cornerstone_mask",
"rotated": false,
@@ -108,7 +213,7 @@
"h": 26
},
"frame": {
- "x": 61,
+ "x": 88,
"y": 0,
"w": 24,
"h": 26
@@ -129,8 +234,8 @@
"h": 26
},
"frame": {
- "x": 0,
- "y": 58,
+ "x": 112,
+ "y": 0,
"w": 23,
"h": 26
}
@@ -150,7 +255,7 @@
"h": 22
},
"frame": {
- "x": 85,
+ "x": 135,
"y": 0,
"w": 27,
"h": 22
@@ -171,7 +276,7 @@
"h": 21
},
"frame": {
- "x": 112,
+ "x": 162,
"y": 0,
"w": 28,
"h": 21
@@ -192,7 +297,7 @@
"h": 21
},
"frame": {
- "x": 140,
+ "x": 190,
"y": 0,
"w": 28,
"h": 21
@@ -213,7 +318,7 @@
"h": 21
},
"frame": {
- "x": 168,
+ "x": 218,
"y": 0,
"w": 28,
"h": 21
@@ -234,7 +339,7 @@
"h": 21
},
"frame": {
- "x": 196,
+ "x": 246,
"y": 0,
"w": 28,
"h": 21
@@ -255,7 +360,7 @@
"h": 21
},
"frame": {
- "x": 224,
+ "x": 274,
"y": 0,
"w": 28,
"h": 21
@@ -276,7 +381,7 @@
"h": 21
},
"frame": {
- "x": 252,
+ "x": 302,
"y": 0,
"w": 28,
"h": 21
@@ -297,8 +402,8 @@
"h": 31
},
"frame": {
- "x": 0,
- "y": 84,
+ "x": 22,
+ "y": 89,
"w": 17,
"h": 31
}
@@ -319,7 +424,7 @@
},
"frame": {
"x": 0,
- "y": 115,
+ "y": 151,
"w": 17,
"h": 31
}
@@ -339,12 +444,33 @@
"h": 31
},
"frame": {
- "x": 0,
- "y": 146,
+ "x": 22,
+ "y": 120,
"w": 17,
"h": 31
}
},
+ {
+ "filename": "black_augurite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 3,
+ "w": 22,
+ "h": 25
+ },
+ "frame": {
+ "x": 17,
+ "y": 151,
+ "w": 22,
+ "h": 25
+ }
+ },
{
"filename": "prison_bottle",
"rotated": false,
@@ -361,11 +487,32 @@
},
"frame": {
"x": 0,
- "y": 177,
+ "y": 182,
"w": 17,
"h": 30
}
},
+ {
+ "filename": "big_root",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 4,
+ "w": 23,
+ "h": 24
+ },
+ "frame": {
+ "x": 17,
+ "y": 176,
+ "w": 23,
+ "h": 24
+ }
+ },
{
"filename": "chipped_pot",
"rotated": false,
@@ -381,7 +528,7 @@
"h": 20
},
"frame": {
- "x": 280,
+ "x": 330,
"y": 0,
"w": 26,
"h": 20
@@ -402,12 +549,33 @@
"h": 20
},
"frame": {
- "x": 306,
+ "x": 356,
"y": 0,
"w": 26,
"h": 20
}
},
+ {
+ "filename": "catching_charm",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 21,
+ "h": 24
+ },
+ "frame": {
+ "x": 0,
+ "y": 212,
+ "w": 21,
+ "h": 24
+ }
+ },
{
"filename": "choice_scarf",
"rotated": false,
@@ -423,8 +591,8 @@
"h": 24
},
"frame": {
- "x": 332,
- "y": 0,
+ "x": 0,
+ "y": 236,
"w": 24,
"h": 24
}
@@ -444,54 +612,12 @@
"h": 24
},
"frame": {
- "x": 356,
- "y": 0,
+ "x": 0,
+ "y": 260,
"w": 24,
"h": 24
}
},
- {
- "filename": "black_augurite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 3,
- "w": 22,
- "h": 25
- },
- "frame": {
- "x": 0,
- "y": 207,
- "w": 22,
- "h": 25
- }
- },
- {
- "filename": "big_root",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 4,
- "w": 23,
- "h": 24
- },
- "frame": {
- "x": 0,
- "y": 232,
- "w": 23,
- "h": 24
- }
- },
{
"filename": "golden_punch",
"rotated": false,
@@ -508,7 +634,7 @@
},
"frame": {
"x": 0,
- "y": 256,
+ "y": 284,
"w": 24,
"h": 24
}
@@ -529,7 +655,7 @@
},
"frame": {
"x": 0,
- "y": 280,
+ "y": 308,
"w": 24,
"h": 24
}
@@ -550,7 +676,7 @@
},
"frame": {
"x": 0,
- "y": 304,
+ "y": 332,
"w": 24,
"h": 24
}
@@ -571,11 +697,74 @@
},
"frame": {
"x": 0,
- "y": 328,
+ "y": 356,
"w": 24,
"h": 24
}
},
+ {
+ "filename": "mega_bracelet",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 16
+ },
+ "frame": {
+ "x": 0,
+ "y": 380,
+ "w": 20,
+ "h": 16
+ }
+ },
+ {
+ "filename": "relic_band",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 9,
+ "w": 17,
+ "h": 16
+ },
+ "frame": {
+ "x": 20,
+ "y": 380,
+ "w": 17,
+ "h": 16
+ }
+ },
+ {
+ "filename": "calcium",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 51,
+ "y": 27,
+ "w": 16,
+ "h": 24
+ }
+ },
{
"filename": "lucky_punch_great",
"rotated": false,
@@ -591,117 +780,12 @@
"h": 24
},
"frame": {
- "x": 0,
- "y": 352,
+ "x": 67,
+ "y": 26,
"w": 24,
"h": 24
}
},
- {
- "filename": "silver_powder",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 11,
- "w": 24,
- "h": 15
- },
- "frame": {
- "x": 0,
- "y": 376,
- "w": 24,
- "h": 15
- }
- },
- {
- "filename": "calcium",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 17,
- "y": 84,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "carbos",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 17,
- "y": 108,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "catching_charm",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 21,
- "h": 24
- },
- "frame": {
- "x": 17,
- "y": 132,
- "w": 21,
- "h": 24
- }
- },
- {
- "filename": "kings_rock",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 23,
- "h": 24
- },
- "frame": {
- "x": 17,
- "y": 156,
- "w": 23,
- "h": 24
- }
- },
{
"filename": "lucky_punch_master",
"rotated": false,
@@ -717,12 +801,33 @@
"h": 24
},
"frame": {
- "x": 17,
- "y": 180,
+ "x": 91,
+ "y": 26,
"w": 24,
"h": 24
}
},
+ {
+ "filename": "kings_rock",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 23,
+ "h": 24
+ },
+ "frame": {
+ "x": 115,
+ "y": 26,
+ "w": 23,
+ "h": 24
+ }
+ },
{
"filename": "lucky_punch_ultra",
"rotated": false,
@@ -738,8 +843,8 @@
"h": 24
},
"frame": {
- "x": 22,
- "y": 204,
+ "x": 138,
+ "y": 22,
"w": 24,
"h": 24
}
@@ -759,8 +864,8 @@
"h": 24
},
"frame": {
- "x": 23,
- "y": 228,
+ "x": 162,
+ "y": 21,
"w": 24,
"h": 24
}
@@ -780,8 +885,8 @@
"h": 24
},
"frame": {
- "x": 24,
- "y": 252,
+ "x": 186,
+ "y": 21,
"w": 24,
"h": 24
}
@@ -801,8 +906,8 @@
"h": 24
},
"frame": {
- "x": 24,
- "y": 276,
+ "x": 210,
+ "y": 21,
"w": 24,
"h": 24
}
@@ -822,8 +927,8 @@
"h": 24
},
"frame": {
- "x": 24,
- "y": 300,
+ "x": 234,
+ "y": 21,
"w": 24,
"h": 24
}
@@ -843,8 +948,8 @@
"h": 24
},
"frame": {
- "x": 24,
- "y": 324,
+ "x": 258,
+ "y": 21,
"w": 24,
"h": 24
}
@@ -864,327 +969,12 @@
"h": 24
},
"frame": {
- "x": 24,
- "y": 348,
+ "x": 282,
+ "y": 21,
"w": 24,
"h": 24
}
},
- {
- "filename": "coupon",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 23,
- "h": 19
- },
- "frame": {
- "x": 24,
- "y": 372,
- "w": 23,
- "h": 19
- }
- },
- {
- "filename": "golden_mystic_ticket",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 23,
- "h": 19
- },
- "frame": {
- "x": 47,
- "y": 372,
- "w": 23,
- "h": 19
- }
- },
- {
- "filename": "elixir",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 18,
- "h": 24
- },
- "frame": {
- "x": 23,
- "y": 58,
- "w": 18,
- "h": 24
- }
- },
- {
- "filename": "ether",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 18,
- "h": 24
- },
- "frame": {
- "x": 41,
- "y": 53,
- "w": 18,
- "h": 24
- }
- },
- {
- "filename": "full_restore",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 18,
- "h": 24
- },
- "frame": {
- "x": 33,
- "y": 82,
- "w": 18,
- "h": 24
- }
- },
- {
- "filename": "max_elixir",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 18,
- "h": 24
- },
- "frame": {
- "x": 33,
- "y": 106,
- "w": 18,
- "h": 24
- }
- },
- {
- "filename": "hp_up",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 38,
- "y": 130,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "iron",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 40,
- "y": 154,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "lure",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 41,
- "y": 178,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "max_ether",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 18,
- "h": 24
- },
- "frame": {
- "x": 46,
- "y": 202,
- "w": 18,
- "h": 24
- }
- },
- {
- "filename": "max_lure",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 47,
- "y": 226,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "max_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 18,
- "h": 24
- },
- "frame": {
- "x": 48,
- "y": 250,
- "w": 18,
- "h": 24
- }
- },
- {
- "filename": "max_revive",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 22,
- "h": 24
- },
- "frame": {
- "x": 48,
- "y": 274,
- "w": 22,
- "h": 24
- }
- },
- {
- "filename": "reveal_glass",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 4,
- "w": 23,
- "h": 24
- },
- "frame": {
- "x": 48,
- "y": 298,
- "w": 23,
- "h": 24
- }
- },
- {
- "filename": "berry_pouch",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 23,
- "h": 23
- },
- "frame": {
- "x": 48,
- "y": 322,
- "w": 23,
- "h": 23
- }
- },
{
"filename": "clefairy_doll",
"rotated": false,
@@ -1200,8 +990,8 @@
"h": 23
},
"frame": {
- "x": 48,
- "y": 345,
+ "x": 306,
+ "y": 21,
"w": 24,
"h": 23
}
@@ -1221,14 +1011,56 @@
"h": 23
},
"frame": {
- "x": 70,
- "y": 368,
+ "x": 330,
+ "y": 20,
"w": 24,
"h": 23
}
},
{
- "filename": "max_repel",
+ "filename": "expert_belt",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 4,
+ "w": 24,
+ "h": 23
+ },
+ "frame": {
+ "x": 354,
+ "y": 20,
+ "w": 24,
+ "h": 23
+ }
+ },
+ {
+ "filename": "elixir",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 378,
+ "y": 20,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "carbos",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1242,12 +1074,33 @@
"h": 24
},
"frame": {
- "x": 56,
- "y": 27,
+ "x": 44,
+ "y": 58,
"w": 16,
"h": 24
}
},
+ {
+ "filename": "max_revive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 22,
+ "h": 24
+ },
+ "frame": {
+ "x": 21,
+ "y": 200,
+ "w": 22,
+ "h": 24
+ }
+ },
{
"filename": "oval_charm",
"rotated": false,
@@ -1263,14 +1116,14 @@
"h": 24
},
"frame": {
- "x": 72,
- "y": 26,
+ "x": 24,
+ "y": 224,
"w": 21,
"h": 24
}
},
{
- "filename": "red_orb",
+ "filename": "reveal_glass",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1278,62 +1131,20 @@
"h": 32
},
"spriteSourceSize": {
- "x": 6,
+ "x": 4,
"y": 4,
- "w": 20,
+ "w": 23,
"h": 24
},
"frame": {
- "x": 93,
- "y": 22,
- "w": 20,
+ "x": 24,
+ "y": 248,
+ "w": 23,
"h": 24
}
},
{
- "filename": "expert_belt",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 4,
- "w": 24,
- "h": 23
- },
- "frame": {
- "x": 113,
- "y": 21,
- "w": 24,
- "h": 23
- }
- },
- {
- "filename": "hearthflame_mask",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 4,
- "w": 24,
- "h": 23
- },
- "frame": {
- "x": 137,
- "y": 21,
- "w": 24,
- "h": 23
- }
- },
- {
- "filename": "leppa_berry",
+ "filename": "berry_pouch",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1343,55 +1154,13 @@
"spriteSourceSize": {
"x": 4,
"y": 5,
- "w": 24,
+ "w": 23,
"h": 23
},
"frame": {
- "x": 161,
- "y": 21,
- "w": 24,
- "h": 23
- }
- },
- {
- "filename": "scope_lens",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 24,
- "h": 23
- },
- "frame": {
- "x": 185,
- "y": 21,
- "w": 24,
- "h": 23
- }
- },
- {
- "filename": "twisted_spoon",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 24,
- "h": 23
- },
- "frame": {
- "x": 209,
- "y": 21,
- "w": 24,
+ "x": 24,
+ "y": 272,
+ "w": 23,
"h": 23
}
},
@@ -1410,14 +1179,14 @@
"h": 23
},
"frame": {
- "x": 233,
- "y": 21,
+ "x": 24,
+ "y": 295,
"w": 23,
"h": 23
}
},
{
- "filename": "exp_balance",
+ "filename": "griseous_core",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1425,20 +1194,20 @@
"h": 32
},
"spriteSourceSize": {
- "x": 4,
+ "x": 5,
"y": 5,
- "w": 24,
- "h": 22
+ "w": 23,
+ "h": 23
},
"frame": {
- "x": 256,
- "y": 21,
- "w": 24,
- "h": 22
+ "x": 24,
+ "y": 318,
+ "w": 23,
+ "h": 23
}
},
{
- "filename": "exp_share",
+ "filename": "hearthflame_mask",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1447,19 +1216,166 @@
},
"spriteSourceSize": {
"x": 4,
- "y": 5,
+ "y": 4,
"w": 24,
- "h": 22
+ "h": 23
},
"frame": {
- "x": 280,
- "y": 20,
+ "x": 24,
+ "y": 341,
"w": 24,
- "h": 22
+ "h": 23
}
},
{
- "filename": "peat_block",
+ "filename": "abomasite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 16
+ },
+ "frame": {
+ "x": 24,
+ "y": 364,
+ "w": 16,
+ "h": 16
+ }
+ },
+ {
+ "filename": "absolite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 16
+ },
+ "frame": {
+ "x": 37,
+ "y": 380,
+ "w": 16,
+ "h": 16
+ }
+ },
+ {
+ "filename": "aerodactylite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 16
+ },
+ "frame": {
+ "x": 40,
+ "y": 364,
+ "w": 16,
+ "h": 16
+ }
+ },
+ {
+ "filename": "aggronite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 16
+ },
+ "frame": {
+ "x": 53,
+ "y": 380,
+ "w": 16,
+ "h": 16
+ }
+ },
+ {
+ "filename": "ether",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 39,
+ "y": 89,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "full_restore",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 39,
+ "y": 113,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "max_elixir",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 39,
+ "y": 137,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "silver_powder",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1468,15 +1384,267 @@
},
"spriteSourceSize": {
"x": 4,
- "y": 5,
+ "y": 11,
"w": 24,
- "h": 22
+ "h": 15
},
"frame": {
- "x": 304,
- "y": 20,
+ "x": 39,
+ "y": 161,
"w": 24,
- "h": 22
+ "h": 15
+ }
+ },
+ {
+ "filename": "shiny_charm",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 21,
+ "h": 24
+ },
+ "frame": {
+ "x": 40,
+ "y": 176,
+ "w": 21,
+ "h": 24
+ }
+ },
+ {
+ "filename": "max_ether",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 43,
+ "y": 200,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "hp_up",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 45,
+ "y": 224,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "iron",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 47,
+ "y": 248,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "lure",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 17,
+ "h": 24
+ },
+ "frame": {
+ "x": 47,
+ "y": 272,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "max_lure",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 17,
+ "h": 24
+ },
+ "frame": {
+ "x": 47,
+ "y": 296,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "adamant_crystal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 6,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 47,
+ "y": 320,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "black_belt",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 48,
+ "y": 341,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "alakazite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 16
+ },
+ "frame": {
+ "x": 56,
+ "y": 364,
+ "w": 16,
+ "h": 16
+ }
+ },
+ {
+ "filename": "altarianite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 16
+ },
+ "frame": {
+ "x": 69,
+ "y": 380,
+ "w": 16,
+ "h": 16
+ }
+ },
+ {
+ "filename": "revive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 12,
+ "h": 17
+ },
+ "frame": {
+ "x": 382,
+ "y": 0,
+ "w": 12,
+ "h": 17
+ }
+ },
+ {
+ "filename": "ability_capsule",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 9,
+ "w": 24,
+ "h": 14
+ },
+ "frame": {
+ "x": 138,
+ "y": 46,
+ "w": 24,
+ "h": 14
}
},
{
@@ -1494,8 +1662,8 @@
"h": 18
},
"frame": {
- "x": 328,
- "y": 24,
+ "x": 162,
+ "y": 45,
"w": 24,
"h": 18
}
@@ -1515,119 +1683,14 @@
"h": 18
},
"frame": {
- "x": 352,
- "y": 24,
+ "x": 186,
+ "y": 45,
"w": 24,
"h": 18
}
},
{
- "filename": "full_heal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 15,
- "h": 23
- },
- "frame": {
- "x": 376,
- "y": 24,
- "w": 15,
- "h": 23
- }
- },
- {
- "filename": "pp_max",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 59,
- "y": 51,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "shiny_charm",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 21,
- "h": 24
- },
- "frame": {
- "x": 75,
- "y": 50,
- "w": 21,
- "h": 24
- }
- },
- {
- "filename": "super_lure",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 96,
- "y": 46,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "griseous_core",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 23,
- "h": 23
- },
- "frame": {
- "x": 113,
- "y": 44,
- "w": 23,
- "h": 23
- }
- },
- {
- "filename": "rare_candy",
+ "filename": "exp_balance",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1637,18 +1700,18 @@
"spriteSourceSize": {
"x": 4,
"y": 5,
- "w": 23,
- "h": 23
+ "w": 24,
+ "h": 22
},
"frame": {
- "x": 136,
- "y": 44,
- "w": 23,
- "h": 23
+ "x": 210,
+ "y": 45,
+ "w": 24,
+ "h": 22
}
},
{
- "filename": "rarer_candy",
+ "filename": "exp_share",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1658,18 +1721,18 @@
"spriteSourceSize": {
"x": 4,
"y": 5,
- "w": 23,
- "h": 23
+ "w": 24,
+ "h": 22
},
"frame": {
- "x": 159,
- "y": 44,
- "w": 23,
- "h": 23
+ "x": 234,
+ "y": 45,
+ "w": 24,
+ "h": 22
}
},
{
- "filename": "stick",
+ "filename": "leppa_berry",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1679,18 +1742,18 @@
"spriteSourceSize": {
"x": 4,
"y": 5,
- "w": 23,
+ "w": 24,
"h": 23
},
"frame": {
- "x": 182,
- "y": 44,
- "w": 23,
+ "x": 258,
+ "y": 45,
+ "w": 24,
"h": 23
}
},
{
- "filename": "black_belt",
+ "filename": "scope_lens",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1698,20 +1761,20 @@
"h": 32
},
"spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 22,
+ "x": 4,
+ "y": 5,
+ "w": 24,
"h": 23
},
"frame": {
- "x": 205,
- "y": 44,
- "w": 22,
+ "x": 282,
+ "y": 45,
+ "w": 24,
"h": 23
}
},
{
- "filename": "bug_tera_shard",
+ "filename": "twisted_spoon",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1719,20 +1782,20 @@
"h": 32
},
"spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
+ "x": 4,
+ "y": 5,
+ "w": 24,
"h": 23
},
"frame": {
- "x": 227,
+ "x": 306,
"y": 44,
- "w": 22,
+ "w": 24,
"h": 23
}
},
{
- "filename": "dark_tera_shard",
+ "filename": "peat_block",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1740,100 +1803,16 @@
"h": 32
},
"spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
+ "x": 4,
+ "y": 5,
+ "w": 24,
+ "h": 22
},
"frame": {
- "x": 249,
- "y": 44,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "pp_up",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 271,
+ "x": 330,
"y": 43,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "dragon_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 287,
- "y": 42,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "electric_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 309,
- "y": 42,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "fairy_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 331,
- "y": 42,
- "w": 22,
- "h": 23
+ "w": 24,
+ "h": 22
}
},
{
@@ -1851,14 +1830,14 @@
"h": 22
},
"frame": {
- "x": 353,
- "y": 42,
+ "x": 354,
+ "y": 43,
"w": 23,
"h": 22
}
},
{
- "filename": "leftovers",
+ "filename": "lock_capsule",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1866,81 +1845,18 @@
"h": 32
},
"spriteSourceSize": {
- "x": 8,
+ "x": 7,
"y": 5,
- "w": 15,
+ "w": 19,
"h": 22
},
"frame": {
- "x": 376,
- "y": 47,
- "w": 15,
+ "x": 377,
+ "y": 44,
+ "w": 19,
"h": 22
}
},
- {
- "filename": "adamant_crystal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 6,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 353,
- "y": 64,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "prism_scale",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 15,
- "h": 15
- },
- "frame": {
- "x": 376,
- "y": 69,
- "w": 15,
- "h": 15
- }
- },
- {
- "filename": "ability_capsule",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 9,
- "w": 24,
- "h": 14
- },
- "frame": {
- "x": 113,
- "y": 67,
- "w": 24,
- "h": 14
- }
- },
{
"filename": "icy_reins_of_unity",
"rotated": false,
@@ -1956,12 +1872,54 @@
"h": 20
},
"frame": {
- "x": 137,
- "y": 67,
+ "x": 330,
+ "y": 65,
"w": 24,
"h": 20
}
},
+ {
+ "filename": "amulet_coin",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 354,
+ "y": 65,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "metal_coat",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 19,
+ "h": 22
+ },
+ "frame": {
+ "x": 377,
+ "y": 66,
+ "w": 19,
+ "h": 22
+ }
+ },
{
"filename": "rusted_shield",
"rotated": false,
@@ -1977,7 +1935,7 @@
"h": 20
},
"frame": {
- "x": 161,
+ "x": 306,
"y": 67,
"w": 24,
"h": 20
@@ -1998,222 +1956,12 @@
"h": 20
},
"frame": {
- "x": 185,
- "y": 67,
+ "x": 330,
+ "y": 85,
"w": 24,
"h": 20
}
},
- {
- "filename": "shadow_reins_of_unity",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 24,
- "h": 20
- },
- "frame": {
- "x": 209,
- "y": 67,
- "w": 24,
- "h": 20
- }
- },
- {
- "filename": "soft_sand",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 24,
- "h": 20
- },
- "frame": {
- "x": 233,
- "y": 67,
- "w": 24,
- "h": 20
- }
- },
- {
- "filename": "amulet_coin",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 5,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 257,
- "y": 67,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "golden_egg",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 6,
- "w": 17,
- "h": 20
- },
- "frame": {
- "x": 96,
- "y": 70,
- "w": 17,
- "h": 20
- }
- },
- {
- "filename": "dragon_fang",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 21,
- "h": 23
- },
- "frame": {
- "x": 75,
- "y": 74,
- "w": 21,
- "h": 23
- }
- },
- {
- "filename": "protein",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 59,
- "y": 75,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "fighting_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 51,
- "y": 99,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "fire_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 54,
- "y": 122,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "fire_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 56,
- "y": 145,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "flying_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 58,
- "y": 168,
- "w": 22,
- "h": 23
- }
- },
{
"filename": "auspicious_armor",
"rotated": false,
@@ -2229,3078 +1977,12 @@
"h": 21
},
"frame": {
- "x": 113,
- "y": 81,
+ "x": 354,
+ "y": 86,
"w": 23,
"h": 21
}
},
- {
- "filename": "binding_band",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 23,
- "h": 20
- },
- "frame": {
- "x": 136,
- "y": 87,
- "w": 23,
- "h": 20
- }
- },
- {
- "filename": "moon_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 6,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 159,
- "y": 87,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "n_lunarizer",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 6,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 182,
- "y": 87,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "n_solarizer",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 6,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 205,
- "y": 87,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "rusted_sword",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 23,
- "h": 22
- },
- "frame": {
- "x": 228,
- "y": 87,
- "w": 23,
- "h": 22
- }
- },
- {
- "filename": "wellspring_mask",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 251,
- "y": 88,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "hyper_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 17,
- "h": 23
- },
- "frame": {
- "x": 96,
- "y": 90,
- "w": 17,
- "h": 23
- }
- },
- {
- "filename": "black_glasses",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 8,
- "w": 23,
- "h": 17
- },
- "frame": {
- "x": 113,
- "y": 102,
- "w": 23,
- "h": 17
- }
- },
- {
- "filename": "dusk_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 75,
- "y": 97,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "focus_sash",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 76,
- "y": 118,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "ghost_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 78,
- "y": 141,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "grass_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 80,
- "y": 164,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "mystic_ticket",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 23,
- "h": 19
- },
- "frame": {
- "x": 136,
- "y": 107,
- "w": 23,
- "h": 19
- }
- },
- {
- "filename": "pair_of_tickets",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 23,
- "h": 19
- },
- "frame": {
- "x": 159,
- "y": 108,
- "w": 23,
- "h": 19
- }
- },
- {
- "filename": "reviver_seed",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 8,
- "w": 23,
- "h": 20
- },
- "frame": {
- "x": 182,
- "y": 108,
- "w": 23,
- "h": 20
- }
- },
- {
- "filename": "shell_bell",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 23,
- "h": 20
- },
- "frame": {
- "x": 205,
- "y": 108,
- "w": 23,
- "h": 20
- }
- },
- {
- "filename": "blunder_policy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 19
- },
- "frame": {
- "x": 228,
- "y": 109,
- "w": 22,
- "h": 19
- }
- },
- {
- "filename": "charcoal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 250,
- "y": 109,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "relic_gold",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 11,
- "w": 15,
- "h": 11
- },
- "frame": {
- "x": 58,
- "y": 191,
- "w": 15,
- "h": 11
- }
- },
- {
- "filename": "repel",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 64,
- "y": 202,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "super_repel",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 64,
- "y": 226,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "unknown",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 66,
- "y": 250,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "zinc",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 70,
- "y": 274,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "ground_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 71,
- "y": 298,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "ice_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 71,
- "y": 321,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "lansat_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 21,
- "h": 23
- },
- "frame": {
- "x": 72,
- "y": 344,
- "w": 21,
- "h": 23
- }
- },
- {
- "filename": "never_melt_ice",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 80,
- "y": 187,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "normal_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 80,
- "y": 210,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "wise_glasses",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 8,
- "w": 23,
- "h": 17
- },
- "frame": {
- "x": 80,
- "y": 233,
- "w": 23,
- "h": 17
- }
- },
- {
- "filename": "leaf_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 21,
- "h": 23
- },
- "frame": {
- "x": 82,
- "y": 250,
- "w": 21,
- "h": 23
- }
- },
- {
- "filename": "mystic_water",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 5,
- "w": 20,
- "h": 23
- },
- "frame": {
- "x": 86,
- "y": 273,
- "w": 20,
- "h": 23
- }
- },
- {
- "filename": "petaya_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 93,
- "y": 296,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "poison_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 93,
- "y": 319,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "psychic_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 93,
- "y": 342,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "reaper_cloth",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 94,
- "y": 365,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "dire_hit",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 98,
- "y": 119,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "rock_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 100,
- "y": 141,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "sharp_beak",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 21,
- "h": 23
- },
- "frame": {
- "x": 102,
- "y": 164,
- "w": 21,
- "h": 23
- }
- },
- {
- "filename": "steel_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 102,
- "y": 187,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "stellar_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 102,
- "y": 210,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "water_tera_shard",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 103,
- "y": 233,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "mystery_egg",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 8,
- "w": 16,
- "h": 18
- },
- "frame": {
- "x": 120,
- "y": 119,
- "w": 16,
- "h": 18
- }
- },
- {
- "filename": "everstone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 17
- },
- "frame": {
- "x": 103,
- "y": 256,
- "w": 20,
- "h": 17
- }
- },
- {
- "filename": "potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 17,
- "h": 23
- },
- "frame": {
- "x": 106,
- "y": 273,
- "w": 17,
- "h": 23
- }
- },
- {
- "filename": "relic_crown",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 23,
- "h": 18
- },
- "frame": {
- "x": 136,
- "y": 126,
- "w": 23,
- "h": 18
- }
- },
- {
- "filename": "deep_sea_scale",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 20
- },
- "frame": {
- "x": 159,
- "y": 127,
- "w": 22,
- "h": 20
- }
- },
- {
- "filename": "deep_sea_tooth",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 181,
- "y": 128,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "dna_splicers",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 203,
- "y": 128,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "electirizer",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 225,
- "y": 128,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "dubious_disc",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 22,
- "h": 19
- },
- "frame": {
- "x": 247,
- "y": 131,
- "w": 22,
- "h": 19
- }
- },
- {
- "filename": "sachet",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 18,
- "h": 23
- },
- "frame": {
- "x": 115,
- "y": 296,
- "w": 18,
- "h": 23
- }
- },
- {
- "filename": "whipped_dream",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 21,
- "h": 23
- },
- "frame": {
- "x": 115,
- "y": 319,
- "w": 21,
- "h": 23
- }
- },
- {
- "filename": "wide_lens",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 115,
- "y": 342,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "enigma_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 116,
- "y": 365,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "fairy_feather",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 22,
- "h": 20
- },
- "frame": {
- "x": 122,
- "y": 144,
- "w": 22,
- "h": 20
- }
- },
- {
- "filename": "ganlon_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 123,
- "y": 164,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "guard_spec",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 124,
- "y": 186,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "ice_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 124,
- "y": 208,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "magmarizer",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 125,
- "y": 230,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "revive",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 12,
- "h": 17
- },
- "frame": {
- "x": 144,
- "y": 144,
- "w": 12,
- "h": 17
- }
- },
- {
- "filename": "liechi_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 156,
- "y": 147,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "malicious_armor",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 20
- },
- "frame": {
- "x": 178,
- "y": 149,
- "w": 22,
- "h": 20
- }
- },
- {
- "filename": "memory_bug",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 200,
- "y": 150,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_dark",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 222,
- "y": 150,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_dragon",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 244,
- "y": 150,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "masterpiece_teacup",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 21,
- "h": 18
- },
- "frame": {
- "x": 145,
- "y": 168,
- "w": 21,
- "h": 18
- }
- },
- {
- "filename": "hard_meteorite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 20,
- "h": 22
- },
- "frame": {
- "x": 146,
- "y": 186,
- "w": 20,
- "h": 22
- }
- },
- {
- "filename": "memory_electric",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 146,
- "y": 208,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_fairy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 147,
- "y": 230,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_fighting",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 166,
- "y": 169,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "mega_bracelet",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 16
- },
- "frame": {
- "x": 166,
- "y": 191,
- "w": 20,
- "h": 16
- }
- },
- {
- "filename": "super_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 17,
- "h": 23
- },
- "frame": {
- "x": 168,
- "y": 207,
- "w": 17,
- "h": 23
- }
- },
- {
- "filename": "berry_pot",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 18,
- "h": 22
- },
- "frame": {
- "x": 169,
- "y": 230,
- "w": 18,
- "h": 22
- }
- },
- {
- "filename": "memory_fire",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 188,
- "y": 172,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_flying",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 210,
- "y": 172,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_ghost",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 232,
- "y": 172,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "lock_capsule",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 19,
- "h": 22
- },
- "frame": {
- "x": 254,
- "y": 172,
- "w": 19,
- "h": 22
- }
- },
- {
- "filename": "memory_grass",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 186,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_ground",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 208,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_ice",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 230,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_normal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 252,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_normal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 252,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_poison",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 266,
- "y": 150,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "big_mushroom",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 19,
- "h": 19
- },
- "frame": {
- "x": 269,
- "y": 131,
- "w": 19,
- "h": 19
- }
- },
- {
- "filename": "memory_psychic",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 272,
- "y": 109,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "dawn_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 21
- },
- "frame": {
- "x": 274,
- "y": 88,
- "w": 20,
- "h": 21
- }
- },
- {
- "filename": "poison_barb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 280,
- "y": 67,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "memory_rock",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 301,
- "y": 65,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_steel",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 323,
- "y": 65,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "memory_water",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 273,
- "y": 172,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "mini_black_hole",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 274,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "protector",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 187,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "scroll_of_darkness",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 209,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "scroll_of_waters",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 231,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "shed_shell",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 253,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "starf_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 275,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "sweet_apple",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 187,
- "y": 238,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "syrupy_apple",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 209,
- "y": 238,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "tart_apple",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 231,
- "y": 238,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "thunder_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 253,
- "y": 238,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_bug",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 275,
- "y": 238,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "metal_coat",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 5,
- "w": 19,
- "h": 22
- },
- "frame": {
- "x": 294,
- "y": 88,
- "w": 19,
- "h": 22
- }
- },
- {
- "filename": "tm_dark",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 313,
- "y": 87,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "shiny_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 294,
- "y": 110,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "tm_dragon",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 288,
- "y": 131,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "upgrade",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 22,
- "h": 19
- },
- "frame": {
- "x": 288,
- "y": 153,
- "w": 22,
- "h": 19
- }
- },
- {
- "filename": "sitrus_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 5,
- "w": 20,
- "h": 22
- },
- "frame": {
- "x": 315,
- "y": 109,
- "w": 20,
- "h": 22
- }
- },
- {
- "filename": "tm_electric",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 310,
- "y": 131,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tera_orb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 22,
- "h": 20
- },
- "frame": {
- "x": 310,
- "y": 153,
- "w": 22,
- "h": 20
- }
- },
- {
- "filename": "metronome",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 17,
- "h": 22
- },
- "frame": {
- "x": 335,
- "y": 87,
- "w": 17,
- "h": 22
- }
- },
- {
- "filename": "tm_fairy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 352,
- "y": 85,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "soothe_bell",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 17,
- "h": 22
- },
- "frame": {
- "x": 374,
- "y": 85,
- "w": 17,
- "h": 22
- }
- },
- {
- "filename": "tm_fighting",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 335,
- "y": 109,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_fire",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 332,
- "y": 131,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_flying",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 357,
- "y": 107,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_ghost",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 332,
- "y": 153,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "zoom_lens",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 6,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 295,
- "y": 173,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "tm_grass",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 296,
- "y": 194,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_ground",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 297,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_ice",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 297,
- "y": 238,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "abomasite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 8,
- "w": 16,
- "h": 16
- },
- "frame": {
- "x": 316,
- "y": 173,
- "w": 16,
- "h": 16
- }
- },
- {
- "filename": "tm_poison",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 332,
- "y": 175,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "metal_alloy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 21,
- "h": 19
- },
- "frame": {
- "x": 318,
- "y": 197,
- "w": 21,
- "h": 19
- }
- },
- {
- "filename": "tm_psychic",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 319,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_rock",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 319,
- "y": 238,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "lum_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 20,
- "h": 19
- },
- "frame": {
- "x": 339,
- "y": 197,
- "w": 20,
- "h": 19
- }
- },
- {
- "filename": "tm_steel",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 341,
- "y": 216,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "tm_water",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 341,
- "y": 238,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "water_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 125,
- "y": 252,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "x_accuracy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 123,
- "y": 274,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "x_attack",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 147,
- "y": 252,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "razor_fang",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 6,
- "w": 18,
- "h": 20
- },
- "frame": {
- "x": 169,
- "y": 252,
- "w": 18,
- "h": 20
- }
- },
- {
- "filename": "x_defense",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 145,
- "y": 274,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "x_sp_atk",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 133,
- "y": 296,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "x_sp_def",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 136,
- "y": 318,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "x_speed",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 137,
- "y": 340,
- "w": 22,
- "h": 22
- }
- },
- {
- "filename": "big_nugget",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 138,
- "y": 362,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "sharp_meteorite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 21,
- "h": 18
- },
- "frame": {
- "x": 187,
- "y": 259,
- "w": 21,
- "h": 18
- }
- },
- {
- "filename": "unremarkable_teacup",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 21,
- "h": 18
- },
- "frame": {
- "x": 208,
- "y": 259,
- "w": 21,
- "h": 18
- }
- },
- {
- "filename": "blue_orb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 229,
- "y": 259,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "gb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 249,
- "y": 260,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "magnet",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 269,
- "y": 260,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "mb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 289,
- "y": 260,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "pb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 309,
- "y": 260,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "pb_gold",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 329,
- "y": 260,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "apicot_berry",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 19,
- "h": 20
- },
- "frame": {
- "x": 349,
- "y": 260,
- "w": 19,
- "h": 20
- }
- },
{
"filename": "spell_tag",
"rotated": false,
@@ -5316,119 +1998,14 @@
"h": 21
},
"frame": {
- "x": 155,
- "y": 296,
+ "x": 377,
+ "y": 88,
"w": 19,
"h": 21
}
},
{
- "filename": "candy_jar",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 19,
- "h": 20
- },
- "frame": {
- "x": 158,
- "y": 317,
- "w": 19,
- "h": 20
- }
- },
- {
- "filename": "hard_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 19,
- "h": 20
- },
- "frame": {
- "x": 159,
- "y": 337,
- "w": 19,
- "h": 20
- }
- },
- {
- "filename": "miracle_seed",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 19,
- "h": 19
- },
- "frame": {
- "x": 167,
- "y": 277,
- "w": 19,
- "h": 19
- }
- },
- {
- "filename": "razor_claw",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 20,
- "h": 19
- },
- "frame": {
- "x": 186,
- "y": 277,
- "w": 20,
- "h": 19
- }
- },
- {
- "filename": "rb",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 174,
- "y": 296,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "smooth_meteorite",
+ "filename": "max_potion",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -5437,208 +2014,19 @@
},
"spriteSourceSize": {
"x": 7,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 206,
- "y": 277,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "lucky_egg",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 6,
- "w": 17,
- "h": 20
- },
- "frame": {
- "x": 177,
- "y": 316,
- "w": 17,
- "h": 20
- }
- },
- {
- "filename": "strange_ball",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 226,
- "y": 279,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "ub",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 246,
- "y": 280,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "wl_ability_urge",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 266,
- "y": 280,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_antidote",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 286,
- "y": 280,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_awakening",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 306,
- "y": 280,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_burn_heal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 326,
- "y": 280,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_custom_spliced",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 346,
- "y": 280,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "oval_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 7,
+ "y": 4,
"w": 18,
- "h": 19
+ "h": 24
},
"frame": {
- "x": 178,
- "y": 336,
+ "x": 61,
+ "y": 176,
"w": 18,
- "h": 19
+ "h": 24
}
},
{
- "filename": "wl_custom_thief",
+ "filename": "red_orb",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -5647,19 +2035,19 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 8,
+ "y": 4,
"w": 20,
- "h": 18
+ "h": 24
},
"frame": {
- "x": 194,
- "y": 297,
+ "x": 61,
+ "y": 200,
"w": 20,
- "h": 18
+ "h": 24
}
},
{
- "filename": "wl_elixir",
+ "filename": "bug_tera_shard",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -5668,40 +2056,19 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 8,
- "w": 20,
- "h": 18
+ "y": 4,
+ "w": 22,
+ "h": 23
},
"frame": {
- "x": 194,
- "y": 315,
- "w": 20,
- "h": 18
+ "x": 61,
+ "y": 224,
+ "w": 22,
+ "h": 23
}
},
{
- "filename": "candy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 11,
- "w": 18,
- "h": 18
- },
- "frame": {
- "x": 196,
- "y": 333,
- "w": 18,
- "h": 18
- }
- },
- {
- "filename": "wl_ether",
+ "filename": "dark_tera_shard",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -5710,19 +2077,40 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 8,
- "w": 20,
- "h": 18
+ "y": 4,
+ "w": 22,
+ "h": 23
},
"frame": {
- "x": 214,
- "y": 299,
- "w": 20,
- "h": 18
+ "x": 63,
+ "y": 247,
+ "w": 22,
+ "h": 23
}
},
{
- "filename": "wl_full_heal",
+ "filename": "dragon_fang",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 21,
+ "h": 23
+ },
+ "frame": {
+ "x": 64,
+ "y": 270,
+ "w": 21,
+ "h": 23
+ }
+ },
+ {
+ "filename": "dragon_tera_shard",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -5731,397 +2119,19 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 8,
- "w": 20,
- "h": 18
+ "y": 4,
+ "w": 22,
+ "h": 23
},
"frame": {
- "x": 214,
- "y": 317,
- "w": 20,
- "h": 18
+ "x": 64,
+ "y": 293,
+ "w": 22,
+ "h": 23
}
},
{
- "filename": "wl_full_restore",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 214,
- "y": 335,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_guard_spec",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 234,
- "y": 300,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_hyper_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 234,
- "y": 318,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_ice_heal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 234,
- "y": 336,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "dark_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 7,
- "w": 18,
- "h": 18
- },
- "frame": {
- "x": 254,
- "y": 300,
- "w": 18,
- "h": 18
- }
- },
- {
- "filename": "light_stone",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 7,
- "w": 18,
- "h": 18
- },
- "frame": {
- "x": 254,
- "y": 318,
- "w": 18,
- "h": 18
- }
- },
- {
- "filename": "wl_item_drop",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 272,
- "y": 298,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_item_urge",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 272,
- "y": 316,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_max_elixir",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 292,
- "y": 298,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_max_ether",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 292,
- "y": 316,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_max_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 312,
- "y": 298,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_max_revive",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 312,
- "y": 316,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_paralyze_heal",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 332,
- "y": 298,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 332,
- "y": 316,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_reset_urge",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 254,
- "y": 336,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_revive",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 274,
- "y": 334,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "wl_super_potion",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 8,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 294,
- "y": 334,
- "w": 20,
- "h": 18
- }
- },
- {
- "filename": "relic_band",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 9,
- "w": 17,
- "h": 16
- },
- "frame": {
- "x": 314,
- "y": 334,
- "w": 17,
- "h": 16
- }
- },
- {
- "filename": "absolite",
+ "filename": "max_repel",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -6130,19 +2140,19 @@
},
"spriteSourceSize": {
"x": 8,
- "y": 8,
+ "y": 4,
"w": 16,
- "h": 16
+ "h": 24
},
"frame": {
- "x": 331,
- "y": 334,
+ "x": 70,
+ "y": 316,
"w": 16,
- "h": 16
+ "h": 24
}
},
{
- "filename": "aerodactylite",
+ "filename": "pp_max",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -6151,78 +2161,15 @@
},
"spriteSourceSize": {
"x": 8,
- "y": 8,
+ "y": 4,
"w": 16,
- "h": 16
+ "h": 24
},
"frame": {
- "x": 352,
- "y": 298,
+ "x": 70,
+ "y": 340,
"w": 16,
- "h": 16
- }
- },
- {
- "filename": "aggronite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 8,
- "w": 16,
- "h": 16
- },
- "frame": {
- "x": 352,
- "y": 314,
- "w": 16,
- "h": 16
- }
- },
- {
- "filename": "alakazite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 8,
- "w": 16,
- "h": 16
- },
- "frame": {
- "x": 159,
- "y": 357,
- "w": 16,
- "h": 16
- }
- },
- {
- "filename": "altarianite",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 8,
- "w": 16,
- "h": 16
- },
- "frame": {
- "x": 158,
- "y": 373,
- "w": 16,
- "h": 16
+ "h": 24
}
},
{
@@ -6240,8 +2187,8 @@
"h": 16
},
"frame": {
- "x": 347,
- "y": 334,
+ "x": 72,
+ "y": 364,
"w": 16,
"h": 16
}
@@ -6261,12 +2208,705 @@
"h": 16
},
"frame": {
- "x": 196,
- "y": 351,
+ "x": 85,
+ "y": 380,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "shadow_reins_of_unity",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 24,
+ "h": 20
+ },
+ "frame": {
+ "x": 67,
+ "y": 50,
+ "w": 24,
+ "h": 20
+ }
+ },
+ {
+ "filename": "soft_sand",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 24,
+ "h": 20
+ },
+ "frame": {
+ "x": 91,
+ "y": 50,
+ "w": 24,
+ "h": 20
+ }
+ },
+ {
+ "filename": "binding_band",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 23,
+ "h": 20
+ },
+ "frame": {
+ "x": 115,
+ "y": 50,
+ "w": 23,
+ "h": 20
+ }
+ },
+ {
+ "filename": "black_glasses",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 8,
+ "w": 23,
+ "h": 17
+ },
+ "frame": {
+ "x": 138,
+ "y": 60,
+ "w": 23,
+ "h": 17
+ }
+ },
+ {
+ "filename": "burn_drive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 8,
+ "w": 23,
+ "h": 17
+ },
+ "frame": {
+ "x": 161,
+ "y": 63,
+ "w": 23,
+ "h": 17
+ }
+ },
+ {
+ "filename": "chill_drive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 8,
+ "w": 23,
+ "h": 17
+ },
+ "frame": {
+ "x": 184,
+ "y": 63,
+ "w": 23,
+ "h": 17
+ }
+ },
+ {
+ "filename": "coupon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 23,
+ "h": 19
+ },
+ "frame": {
+ "x": 207,
+ "y": 67,
+ "w": 23,
+ "h": 19
+ }
+ },
+ {
+ "filename": "golden_mystic_ticket",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 23,
+ "h": 19
+ },
+ "frame": {
+ "x": 230,
+ "y": 67,
+ "w": 23,
+ "h": 19
+ }
+ },
+ {
+ "filename": "moon_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 6,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 253,
+ "y": 68,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "n_lunarizer",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 6,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 276,
+ "y": 68,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "douse_drive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 8,
+ "w": 23,
+ "h": 17
+ },
+ "frame": {
+ "x": 60,
+ "y": 70,
+ "w": 23,
+ "h": 17
+ }
+ },
+ {
+ "filename": "rare_candy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 23,
+ "h": 23
+ },
+ "frame": {
+ "x": 57,
+ "y": 87,
+ "w": 23,
+ "h": 23
+ }
+ },
+ {
+ "filename": "rarer_candy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 23,
+ "h": 23
+ },
+ "frame": {
+ "x": 57,
+ "y": 110,
+ "w": 23,
+ "h": 23
+ }
+ },
+ {
+ "filename": "stick",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 23,
+ "h": 23
+ },
+ "frame": {
+ "x": 57,
+ "y": 133,
+ "w": 23,
+ "h": 23
+ }
+ },
+ {
+ "filename": "apicot_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 19,
+ "h": 20
+ },
+ "frame": {
+ "x": 63,
+ "y": 156,
+ "w": 19,
+ "h": 20
+ }
+ },
+ {
+ "filename": "mystic_ticket",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 23,
+ "h": 19
+ },
+ "frame": {
+ "x": 83,
+ "y": 70,
+ "w": 23,
+ "h": 19
+ }
+ },
+ {
+ "filename": "electric_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 80,
+ "y": 89,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "fairy_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 80,
+ "y": 112,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "deep_sea_tooth",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 80,
+ "y": 135,
+ "w": 22,
+ "h": 21
+ }
+ },
+ {
+ "filename": "n_solarizer",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 6,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 106,
+ "y": 70,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "fighting_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 102,
+ "y": 91,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "fire_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 102,
+ "y": 114,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "blunder_policy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 19
+ },
+ "frame": {
+ "x": 102,
+ "y": 137,
+ "w": 22,
+ "h": 19
+ }
+ },
+ {
+ "filename": "reviver_seed",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 8,
+ "w": 23,
+ "h": 20
+ },
+ "frame": {
+ "x": 82,
+ "y": 156,
+ "w": 23,
+ "h": 20
+ }
+ },
+ {
+ "filename": "fire_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 79,
+ "y": 176,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "flying_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 81,
+ "y": 199,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "focus_sash",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 83,
+ "y": 222,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "ghost_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 85,
+ "y": 245,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "grass_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 85,
+ "y": 268,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "ground_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 86,
+ "y": 291,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "ice_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 86,
+ "y": 314,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "never_melt_ice",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 86,
+ "y": 337,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "big_nugget",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 88,
+ "y": 360,
+ "w": 20,
+ "h": 20
+ }
+ },
{
"filename": "banettite",
"rotated": false,
@@ -6282,12 +2922,222 @@
"h": 16
},
"frame": {
- "x": 212,
- "y": 353,
+ "x": 101,
+ "y": 380,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "blue_orb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 105,
+ "y": 156,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "normal_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 101,
+ "y": 176,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "lansat_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 21,
+ "h": 23
+ },
+ "frame": {
+ "x": 103,
+ "y": 199,
+ "w": 21,
+ "h": 23
+ }
+ },
+ {
+ "filename": "leaf_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 21,
+ "h": 23
+ },
+ "frame": {
+ "x": 105,
+ "y": 222,
+ "w": 21,
+ "h": 23
+ }
+ },
+ {
+ "filename": "mystic_water",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 20,
+ "h": 23
+ },
+ "frame": {
+ "x": 107,
+ "y": 245,
+ "w": 20,
+ "h": 23
+ }
+ },
+ {
+ "filename": "petaya_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 107,
+ "y": 268,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "poison_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 108,
+ "y": 291,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "psychic_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 108,
+ "y": 314,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "reaper_cloth",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 108,
+ "y": 337,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "deep_sea_scale",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 20
+ },
+ "frame": {
+ "x": 108,
+ "y": 360,
+ "w": 22,
+ "h": 20
+ }
+ },
{
"filename": "beedrillite",
"rotated": false,
@@ -6303,12 +3153,285 @@
"h": 16
},
"frame": {
- "x": 228,
- "y": 354,
+ "x": 117,
+ "y": 380,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "pp_up",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 124,
+ "y": 91,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "protein",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 124,
+ "y": 115,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "everstone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 17
+ },
+ "frame": {
+ "x": 124,
+ "y": 139,
+ "w": 20,
+ "h": 17
+ }
+ },
+ {
+ "filename": "candy_jar",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 19,
+ "h": 20
+ },
+ "frame": {
+ "x": 125,
+ "y": 156,
+ "w": 19,
+ "h": 20
+ }
+ },
+ {
+ "filename": "rock_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 123,
+ "y": 176,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "sharp_beak",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 21,
+ "h": 23
+ },
+ "frame": {
+ "x": 124,
+ "y": 199,
+ "w": 21,
+ "h": 23
+ }
+ },
+ {
+ "filename": "steel_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 126,
+ "y": 222,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "stellar_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 127,
+ "y": 245,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "water_tera_shard",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 129,
+ "y": 268,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "whipped_dream",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 21,
+ "h": 23
+ },
+ "frame": {
+ "x": 130,
+ "y": 291,
+ "w": 21,
+ "h": 23
+ }
+ },
+ {
+ "filename": "wide_lens",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 130,
+ "y": 314,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "charcoal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 130,
+ "y": 337,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "liechi_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 130,
+ "y": 359,
+ "w": 22,
+ "h": 21
+ }
+ },
{
"filename": "blastoisinite",
"rotated": false,
@@ -6324,8 +3447,8 @@
"h": 16
},
"frame": {
- "x": 244,
- "y": 354,
+ "x": 133,
+ "y": 380,
"w": 16,
"h": 16
}
@@ -6345,12 +3468,915 @@
"h": 16
},
"frame": {
- "x": 260,
- "y": 354,
+ "x": 149,
+ "y": 380,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "dusk_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 140,
+ "y": 77,
+ "w": 21,
+ "h": 21
+ }
+ },
+ {
+ "filename": "dire_hit",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 140,
+ "y": 98,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "dubious_disc",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 22,
+ "h": 19
+ },
+ "frame": {
+ "x": 140,
+ "y": 120,
+ "w": 22,
+ "h": 19
+ }
+ },
+ {
+ "filename": "relic_crown",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 23,
+ "h": 18
+ },
+ "frame": {
+ "x": 161,
+ "y": 80,
+ "w": 23,
+ "h": 18
+ }
+ },
+ {
+ "filename": "pair_of_tickets",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 23,
+ "h": 19
+ },
+ "frame": {
+ "x": 184,
+ "y": 80,
+ "w": 23,
+ "h": 19
+ }
+ },
+ {
+ "filename": "dna_splicers",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 162,
+ "y": 98,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "rusted_sword",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 23,
+ "h": 22
+ },
+ "frame": {
+ "x": 184,
+ "y": 99,
+ "w": 23,
+ "h": 22
+ }
+ },
+ {
+ "filename": "electirizer",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 207,
+ "y": 86,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "enigma_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 229,
+ "y": 86,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "fairy_feather",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 22,
+ "h": 20
+ },
+ "frame": {
+ "x": 162,
+ "y": 120,
+ "w": 22,
+ "h": 20
+ }
+ },
+ {
+ "filename": "sachet",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 18,
+ "h": 23
+ },
+ "frame": {
+ "x": 144,
+ "y": 139,
+ "w": 18,
+ "h": 23
+ }
+ },
+ {
+ "filename": "ganlon_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 162,
+ "y": 140,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "guard_spec",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 184,
+ "y": 121,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "ice_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 184,
+ "y": 143,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "shell_bell",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 23,
+ "h": 20
+ },
+ "frame": {
+ "x": 251,
+ "y": 89,
+ "w": 23,
+ "h": 20
+ }
+ },
+ {
+ "filename": "wellspring_mask",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 274,
+ "y": 89,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "shock_drive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 8,
+ "w": 23,
+ "h": 17
+ },
+ "frame": {
+ "x": 207,
+ "y": 108,
+ "w": 23,
+ "h": 17
+ }
+ },
+ {
+ "filename": "magmarizer",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 206,
+ "y": 125,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "malicious_armor",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 20
+ },
+ "frame": {
+ "x": 206,
+ "y": 147,
+ "w": 22,
+ "h": 20
+ }
+ },
+ {
+ "filename": "masterpiece_teacup",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 21,
+ "h": 18
+ },
+ "frame": {
+ "x": 230,
+ "y": 108,
+ "w": 21,
+ "h": 18
+ }
+ },
+ {
+ "filename": "memory_bug",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 228,
+ "y": 126,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_dark",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 228,
+ "y": 148,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "wise_glasses",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 8,
+ "w": 23,
+ "h": 17
+ },
+ "frame": {
+ "x": 251,
+ "y": 109,
+ "w": 23,
+ "h": 17
+ }
+ },
+ {
+ "filename": "memory_dragon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 250,
+ "y": 126,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_electric",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 250,
+ "y": 148,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_fairy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 274,
+ "y": 110,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_fighting",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 272,
+ "y": 132,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_fire",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 272,
+ "y": 154,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_flying",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 145,
+ "y": 162,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_ghost",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 145,
+ "y": 184,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "super_lure",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 17,
+ "h": 24
+ },
+ "frame": {
+ "x": 167,
+ "y": 162,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "memory_grass",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 184,
+ "y": 165,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_ground",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 206,
+ "y": 167,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_ice",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 228,
+ "y": 170,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_normal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 250,
+ "y": 170,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_normal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 250,
+ "y": 170,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "golden_egg",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 6,
+ "w": 17,
+ "h": 20
+ },
+ "frame": {
+ "x": 167,
+ "y": 186,
+ "w": 17,
+ "h": 20
+ }
+ },
+ {
+ "filename": "memory_poison",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 184,
+ "y": 187,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_psychic",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 206,
+ "y": 189,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_rock",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 228,
+ "y": 192,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_steel",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 250,
+ "y": 192,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "memory_water",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 272,
+ "y": 176,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "mini_black_hole",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 272,
+ "y": 198,
+ "w": 22,
+ "h": 22
+ }
+ },
{
"filename": "cameruptite",
"rotated": false,
@@ -6366,12 +4392,1692 @@
"h": 16
},
"frame": {
- "x": 276,
- "y": 352,
+ "x": 145,
+ "y": 206,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "protector",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 161,
+ "y": 206,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "scroll_of_darkness",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 183,
+ "y": 209,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "scroll_of_waters",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 205,
+ "y": 211,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "shed_shell",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 227,
+ "y": 214,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "starf_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 249,
+ "y": 214,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "sweet_apple",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 271,
+ "y": 220,
+ "w": 22,
+ "h": 21
+ }
+ },
+ {
+ "filename": "repel",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 294,
+ "y": 132,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "super_repel",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 294,
+ "y": 156,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "unknown",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 294,
+ "y": 180,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "dawn_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 21
+ },
+ "frame": {
+ "x": 310,
+ "y": 87,
+ "w": 20,
+ "h": 21
+ }
+ },
+ {
+ "filename": "berry_pot",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 18,
+ "h": 22
+ },
+ "frame": {
+ "x": 296,
+ "y": 110,
+ "w": 18,
+ "h": 22
+ }
+ },
+ {
+ "filename": "zinc",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 314,
+ "y": 108,
+ "w": 16,
+ "h": 24
+ }
+ },
+ {
+ "filename": "thunder_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 330,
+ "y": 105,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "hard_meteorite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 20,
+ "h": 22
+ },
+ "frame": {
+ "x": 310,
+ "y": 132,
+ "w": 20,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_bug",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 330,
+ "y": 127,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "sitrus_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 20,
+ "h": 22
+ },
+ "frame": {
+ "x": 310,
+ "y": 154,
+ "w": 20,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_dark",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 330,
+ "y": 149,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_dragon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 352,
+ "y": 107,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_electric",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 109,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_fairy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 352,
+ "y": 129,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_fighting",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 131,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "syrupy_apple",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 352,
+ "y": 151,
+ "w": 22,
+ "h": 21
+ }
+ },
+ {
+ "filename": "tm_fire",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 153,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_flying",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 310,
+ "y": 176,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "gb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 332,
+ "y": 171,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "tart_apple",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 352,
+ "y": 172,
+ "w": 22,
+ "h": 21
+ }
+ },
+ {
+ "filename": "tm_ghost",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 175,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "big_mushroom",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 19,
+ "h": 19
+ },
+ "frame": {
+ "x": 294,
+ "y": 204,
+ "w": 19,
+ "h": 19
+ }
+ },
+ {
+ "filename": "lum_berry",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 20,
+ "h": 19
+ },
+ "frame": {
+ "x": 293,
+ "y": 223,
+ "w": 20,
+ "h": 19
+ }
+ },
+ {
+ "filename": "tm_grass",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 313,
+ "y": 198,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_ground",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 313,
+ "y": 220,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "hyper_potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 17,
+ "h": 23
+ },
+ "frame": {
+ "x": 335,
+ "y": 191,
+ "w": 17,
+ "h": 23
+ }
+ },
+ {
+ "filename": "tm_ice",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 352,
+ "y": 193,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_poison",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 197,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 17,
+ "h": 23
+ },
+ "frame": {
+ "x": 335,
+ "y": 214,
+ "w": 17,
+ "h": 23
+ }
+ },
+ {
+ "filename": "tm_psychic",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 352,
+ "y": 215,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tm_rock",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 219,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "tera_orb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 22,
+ "h": 20
+ },
+ "frame": {
+ "x": 335,
+ "y": 237,
+ "w": 22,
+ "h": 20
+ }
+ },
+ {
+ "filename": "lucky_egg",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 6,
+ "w": 17,
+ "h": 20
+ },
+ "frame": {
+ "x": 357,
+ "y": 237,
+ "w": 17,
+ "h": 20
+ }
+ },
+ {
+ "filename": "tm_steel",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 374,
+ "y": 241,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "candy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 11,
+ "w": 18,
+ "h": 18
+ },
+ "frame": {
+ "x": 165,
+ "y": 228,
+ "w": 18,
+ "h": 18
+ }
+ },
+ {
+ "filename": "tm_water",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 183,
+ "y": 231,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "water_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 205,
+ "y": 233,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "upgrade",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 22,
+ "h": 19
+ },
+ "frame": {
+ "x": 227,
+ "y": 236,
+ "w": 22,
+ "h": 19
+ }
+ },
+ {
+ "filename": "x_accuracy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 249,
+ "y": 236,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "x_attack",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 271,
+ "y": 241,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "x_defense",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 293,
+ "y": 242,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "magnet",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 315,
+ "y": 242,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "x_sp_atk",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 149,
+ "y": 246,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "x_sp_def",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 151,
+ "y": 268,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "x_speed",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 151,
+ "y": 290,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "poison_barb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 152,
+ "y": 312,
+ "w": 21,
+ "h": 21
+ }
+ },
+ {
+ "filename": "shiny_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 152,
+ "y": 333,
+ "w": 21,
+ "h": 21
+ }
+ },
+ {
+ "filename": "zoom_lens",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 6,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 152,
+ "y": 354,
+ "w": 21,
+ "h": 21
+ }
+ },
+ {
+ "filename": "mystery_egg",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 16,
+ "h": 18
+ },
+ "frame": {
+ "x": 149,
+ "y": 228,
+ "w": 16,
+ "h": 18
+ }
+ },
+ {
+ "filename": "metal_alloy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 21,
+ "h": 19
+ },
+ "frame": {
+ "x": 335,
+ "y": 257,
+ "w": 21,
+ "h": 19
+ }
+ },
+ {
+ "filename": "oval_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 7,
+ "w": 18,
+ "h": 19
+ },
+ "frame": {
+ "x": 356,
+ "y": 257,
+ "w": 18,
+ "h": 19
+ }
+ },
+ {
+ "filename": "mb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 315,
+ "y": 262,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "sharp_meteorite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 21,
+ "h": 18
+ },
+ "frame": {
+ "x": 374,
+ "y": 263,
+ "w": 21,
+ "h": 18
+ }
+ },
+ {
+ "filename": "unremarkable_teacup",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 21,
+ "h": 18
+ },
+ "frame": {
+ "x": 335,
+ "y": 276,
+ "w": 21,
+ "h": 18
+ }
+ },
+ {
+ "filename": "dark_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 7,
+ "w": 18,
+ "h": 18
+ },
+ "frame": {
+ "x": 356,
+ "y": 276,
+ "w": 18,
+ "h": 18
+ }
+ },
+ {
+ "filename": "pb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 374,
+ "y": 281,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "full_heal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 15,
+ "h": 23
+ },
+ "frame": {
+ "x": 173,
+ "y": 282,
+ "w": 15,
+ "h": 23
+ }
+ },
+ {
+ "filename": "super_potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 17,
+ "h": 23
+ },
+ "frame": {
+ "x": 173,
+ "y": 305,
+ "w": 17,
+ "h": 23
+ }
+ },
+ {
+ "filename": "metronome",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 17,
+ "h": 22
+ },
+ "frame": {
+ "x": 173,
+ "y": 328,
+ "w": 17,
+ "h": 22
+ }
+ },
+ {
+ "filename": "soothe_bell",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 17,
+ "h": 22
+ },
+ "frame": {
+ "x": 173,
+ "y": 350,
+ "w": 17,
+ "h": 22
+ }
+ },
+ {
+ "filename": "light_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 7,
+ "w": 18,
+ "h": 18
+ },
+ "frame": {
+ "x": 173,
+ "y": 264,
+ "w": 18,
+ "h": 18
+ }
+ },
+ {
+ "filename": "relic_gold",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 11,
+ "w": 15,
+ "h": 11
+ },
+ "frame": {
+ "x": 171,
+ "y": 253,
+ "w": 15,
+ "h": 11
+ }
+ },
+ {
+ "filename": "leftovers",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 15,
+ "h": 22
+ },
+ "frame": {
+ "x": 188,
+ "y": 282,
+ "w": 15,
+ "h": 22
+ }
+ },
+ {
+ "filename": "hard_stone",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 19,
+ "h": 20
+ },
+ "frame": {
+ "x": 190,
+ "y": 304,
+ "w": 19,
+ "h": 20
+ }
+ },
+ {
+ "filename": "pb_gold",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 190,
+ "y": 324,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "rb",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 190,
+ "y": 344,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "miracle_seed",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 19,
+ "h": 19
+ },
+ "frame": {
+ "x": 191,
+ "y": 263,
+ "w": 19,
+ "h": 19
+ }
+ },
+ {
+ "filename": "smooth_meteorite",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 210,
+ "y": 255,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "razor_fang",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 6,
+ "w": 18,
+ "h": 20
+ },
+ "frame": {
+ "x": 230,
+ "y": 255,
+ "w": 18,
+ "h": 20
+ }
+ },
+ {
+ "filename": "razor_claw",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 20,
+ "h": 19
+ },
+ "frame": {
+ "x": 248,
+ "y": 258,
+ "w": 20,
+ "h": 19
+ }
+ },
+ {
+ "filename": "strange_ball",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 268,
+ "y": 263,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "ub",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 288,
+ "y": 264,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "wl_ability_urge",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 190,
+ "y": 364,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_antidote",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 210,
+ "y": 275,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "charizardite_x",
"rotated": false,
@@ -6387,12 +6093,222 @@
"h": 16
},
"frame": {
- "x": 292,
- "y": 352,
+ "x": 230,
+ "y": 275,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "wl_awakening",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 246,
+ "y": 277,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_burn_heal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 266,
+ "y": 283,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_custom_spliced",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 286,
+ "y": 284,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_custom_thief",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 209,
+ "y": 293,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_elixir",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 210,
+ "y": 311,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_ether",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 210,
+ "y": 329,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_full_heal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 210,
+ "y": 347,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_full_restore",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 210,
+ "y": 365,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "candy_overlay",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 12,
+ "w": 16,
+ "h": 15
+ },
+ "frame": {
+ "x": 230,
+ "y": 291,
+ "w": 16,
+ "h": 15
+ }
+ },
+ {
+ "filename": "wl_guard_spec",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 246,
+ "y": 295,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "charizardite_y",
"rotated": false,
@@ -6408,12 +6324,117 @@
"h": 16
},
"frame": {
- "x": 308,
- "y": 352,
+ "x": 230,
+ "y": 306,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "wl_hyper_potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 230,
+ "y": 322,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_ice_heal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 230,
+ "y": 340,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_item_drop",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 230,
+ "y": 358,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_item_urge",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 266,
+ "y": 301,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_max_elixir",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 286,
+ "y": 302,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "diancite",
"rotated": false,
@@ -6429,12 +6450,96 @@
"h": 16
},
"frame": {
- "x": 324,
- "y": 350,
+ "x": 250,
+ "y": 313,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "wl_max_ether",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 250,
+ "y": 329,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_max_potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 250,
+ "y": 347,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_max_revive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 250,
+ "y": 365,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_paralyze_heal",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 230,
+ "y": 376,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "galladite",
"rotated": false,
@@ -6450,12 +6555,33 @@
"h": 16
},
"frame": {
- "x": 340,
- "y": 350,
+ "x": 270,
+ "y": 319,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "wl_potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 286,
+ "y": 320,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "garchompite",
"rotated": false,
@@ -6471,12 +6597,75 @@
"h": 16
},
"frame": {
- "x": 356,
- "y": 350,
+ "x": 270,
+ "y": 335,
"w": 16,
"h": 16
}
},
+ {
+ "filename": "wl_reset_urge",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 270,
+ "y": 351,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_revive",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 270,
+ "y": 369,
+ "w": 20,
+ "h": 18
+ }
+ },
+ {
+ "filename": "wl_super_potion",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 8,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 165,
+ "y": 375,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "gardevoirite",
"rotated": false,
@@ -6492,8 +6681,8 @@
"h": 16
},
"frame": {
- "x": 354,
- "y": 131,
+ "x": 290,
+ "y": 338,
"w": 16,
"h": 16
}
@@ -6513,8 +6702,8 @@
"h": 16
},
"frame": {
- "x": 354,
- "y": 147,
+ "x": 290,
+ "y": 354,
"w": 16,
"h": 16
}
@@ -6534,8 +6723,8 @@
"h": 16
},
"frame": {
- "x": 354,
- "y": 163,
+ "x": 290,
+ "y": 370,
"w": 16,
"h": 16
}
@@ -6555,8 +6744,8 @@
"h": 16
},
"frame": {
- "x": 354,
- "y": 179,
+ "x": 306,
+ "y": 284,
"w": 16,
"h": 16
}
@@ -6576,8 +6765,8 @@
"h": 16
},
"frame": {
- "x": 359,
- "y": 195,
+ "x": 306,
+ "y": 300,
"w": 16,
"h": 16
}
@@ -6597,8 +6786,8 @@
"h": 16
},
"frame": {
- "x": 370,
- "y": 129,
+ "x": 306,
+ "y": 316,
"w": 16,
"h": 16
}
@@ -6618,8 +6807,8 @@
"h": 16
},
"frame": {
- "x": 370,
- "y": 145,
+ "x": 306,
+ "y": 332,
"w": 16,
"h": 16
}
@@ -6639,8 +6828,8 @@
"h": 16
},
"frame": {
- "x": 370,
- "y": 161,
+ "x": 306,
+ "y": 348,
"w": 16,
"h": 16
}
@@ -6660,8 +6849,8 @@
"h": 16
},
"frame": {
- "x": 370,
- "y": 177,
+ "x": 306,
+ "y": 364,
"w": 16,
"h": 16
}
@@ -6681,8 +6870,8 @@
"h": 16
},
"frame": {
- "x": 375,
- "y": 193,
+ "x": 306,
+ "y": 380,
"w": 16,
"h": 16
}
@@ -6702,8 +6891,8 @@
"h": 16
},
"frame": {
- "x": 375,
- "y": 209,
+ "x": 322,
+ "y": 294,
"w": 16,
"h": 16
}
@@ -6723,8 +6912,8 @@
"h": 16
},
"frame": {
- "x": 363,
- "y": 225,
+ "x": 338,
+ "y": 294,
"w": 16,
"h": 16
}
@@ -6744,8 +6933,8 @@
"h": 16
},
"frame": {
- "x": 363,
- "y": 241,
+ "x": 322,
+ "y": 310,
"w": 16,
"h": 16
}
@@ -6765,33 +6954,12 @@
"h": 16
},
"frame": {
- "x": 368,
- "y": 257,
+ "x": 354,
+ "y": 294,
"w": 16,
"h": 16
}
},
- {
- "filename": "candy_overlay",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 32,
- "h": 32
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 12,
- "w": 16,
- "h": 15
- },
- "frame": {
- "x": 368,
- "y": 273,
- "w": 16,
- "h": 15
- }
- },
{
"filename": "metagrossite",
"rotated": false,
@@ -6807,8 +6975,8 @@
"h": 16
},
"frame": {
- "x": 368,
- "y": 288,
+ "x": 322,
+ "y": 326,
"w": 16,
"h": 16
}
@@ -6828,8 +6996,8 @@
"h": 16
},
"frame": {
- "x": 368,
- "y": 304,
+ "x": 338,
+ "y": 310,
"w": 16,
"h": 16
}
@@ -6849,8 +7017,8 @@
"h": 16
},
"frame": {
- "x": 368,
- "y": 320,
+ "x": 322,
+ "y": 342,
"w": 16,
"h": 16
}
@@ -6870,8 +7038,8 @@
"h": 16
},
"frame": {
- "x": 175,
- "y": 357,
+ "x": 338,
+ "y": 326,
"w": 16,
"h": 16
}
@@ -6891,8 +7059,8 @@
"h": 16
},
"frame": {
- "x": 174,
- "y": 373,
+ "x": 354,
+ "y": 310,
"w": 16,
"h": 16
}
@@ -6912,8 +7080,8 @@
"h": 16
},
"frame": {
- "x": 276,
- "y": 368,
+ "x": 322,
+ "y": 358,
"w": 16,
"h": 16
}
@@ -6933,8 +7101,8 @@
"h": 16
},
"frame": {
- "x": 292,
- "y": 368,
+ "x": 338,
+ "y": 342,
"w": 16,
"h": 16
}
@@ -6954,8 +7122,8 @@
"h": 16
},
"frame": {
- "x": 308,
- "y": 368,
+ "x": 354,
+ "y": 326,
"w": 16,
"h": 16
}
@@ -6975,8 +7143,8 @@
"h": 16
},
"frame": {
- "x": 324,
- "y": 366,
+ "x": 322,
+ "y": 374,
"w": 16,
"h": 16
}
@@ -6996,8 +7164,8 @@
"h": 16
},
"frame": {
- "x": 340,
- "y": 366,
+ "x": 338,
+ "y": 358,
"w": 16,
"h": 16
}
@@ -7017,8 +7185,8 @@
"h": 16
},
"frame": {
- "x": 356,
- "y": 366,
+ "x": 354,
+ "y": 342,
"w": 16,
"h": 16
}
@@ -7038,8 +7206,8 @@
"h": 16
},
"frame": {
- "x": 191,
- "y": 367,
+ "x": 338,
+ "y": 374,
"w": 16,
"h": 16
}
@@ -7059,8 +7227,8 @@
"h": 16
},
"frame": {
- "x": 207,
- "y": 369,
+ "x": 354,
+ "y": 358,
"w": 16,
"h": 16
}
@@ -7080,8 +7248,8 @@
"h": 16
},
"frame": {
- "x": 223,
- "y": 370,
+ "x": 354,
+ "y": 374,
"w": 16,
"h": 16
}
@@ -7101,8 +7269,8 @@
"h": 16
},
"frame": {
- "x": 239,
- "y": 370,
+ "x": 370,
+ "y": 301,
"w": 16,
"h": 16
}
@@ -7122,8 +7290,8 @@
"h": 16
},
"frame": {
- "x": 255,
- "y": 370,
+ "x": 370,
+ "y": 317,
"w": 16,
"h": 16
}
@@ -7143,8 +7311,8 @@
"h": 16
},
"frame": {
- "x": 372,
- "y": 336,
+ "x": 370,
+ "y": 333,
"w": 16,
"h": 16
}
@@ -7164,8 +7332,8 @@
"h": 16
},
"frame": {
- "x": 372,
- "y": 352,
+ "x": 370,
+ "y": 349,
"w": 16,
"h": 16
}
@@ -7185,11 +7353,32 @@
"h": 16
},
"frame": {
- "x": 372,
- "y": 368,
+ "x": 370,
+ "y": 365,
"w": 16,
"h": 16
}
+ },
+ {
+ "filename": "prism_scale",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 32,
+ "h": 32
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 15,
+ "h": 15
+ },
+ "frame": {
+ "x": 370,
+ "y": 381,
+ "w": 15,
+ "h": 15
+ }
}
]
}
@@ -7197,6 +7386,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:bda718c15def8b97caee75dc31add8c1:50d57f91c9db9f806a878fdee40ed0cb:110e074689c9edd2c54833ce2e4d9270$"
+ "smartupdate": "$TexturePacker:SmartUpdate:e6d832697add1029764f6145e5fa98b7:47250d3d95167f73038d290f7a73b96e:110e074689c9edd2c54833ce2e4d9270$"
}
}
diff --git a/public/images/items.png b/public/images/items.png
index 53ba858c5..7ddd284fa 100644
Binary files a/public/images/items.png and b/public/images/items.png differ
diff --git a/public/images/items/bronze_ribbon.png b/public/images/items/bronze_ribbon.png
new file mode 100644
index 000000000..eb9b926c5
Binary files /dev/null and b/public/images/items/bronze_ribbon.png differ
diff --git a/public/images/items/burn_drive.png b/public/images/items/burn_drive.png
new file mode 100644
index 000000000..47ad9cc8f
Binary files /dev/null and b/public/images/items/burn_drive.png differ
diff --git a/public/images/items/chill_drive.png b/public/images/items/chill_drive.png
new file mode 100644
index 000000000..d5ef99b16
Binary files /dev/null and b/public/images/items/chill_drive.png differ
diff --git a/public/images/items/douse_drive.png b/public/images/items/douse_drive.png
new file mode 100644
index 000000000..0f9f780e5
Binary files /dev/null and b/public/images/items/douse_drive.png differ
diff --git a/public/images/items/great_ribbon.png b/public/images/items/great_ribbon.png
new file mode 100644
index 000000000..720c0d853
Binary files /dev/null and b/public/images/items/great_ribbon.png differ
diff --git a/public/images/items/master_ribbon.png b/public/images/items/master_ribbon.png
new file mode 100644
index 000000000..86be493b7
Binary files /dev/null and b/public/images/items/master_ribbon.png differ
diff --git a/public/images/items/rogue_ribbon.png b/public/images/items/rogue_ribbon.png
new file mode 100644
index 000000000..85986d93c
Binary files /dev/null and b/public/images/items/rogue_ribbon.png differ
diff --git a/public/images/items/shock_drive.png b/public/images/items/shock_drive.png
new file mode 100644
index 000000000..e0bcc66f2
Binary files /dev/null and b/public/images/items/shock_drive.png differ
diff --git a/public/images/items/ultra_ribbon.png b/public/images/items/ultra_ribbon.png
new file mode 100644
index 000000000..69dc7365b
Binary files /dev/null and b/public/images/items/ultra_ribbon.png differ
diff --git a/public/images/pbinfo_stat_numbers.json b/public/images/pbinfo_stat_numbers.json
new file mode 100644
index 000000000..32170690a
--- /dev/null
+++ b/public/images/pbinfo_stat_numbers.json
@@ -0,0 +1,293 @@
+{
+ "textures": [
+ {
+ "image": "pbinfo_stat_numbers.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 117,
+ "h": 8
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "+1",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "+2",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 9,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "+3",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 18,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "+4",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 27,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "+5",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 36,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "+6",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 45,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-1",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 54,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-2",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 63,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-3",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 72,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-4",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 81,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-5",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 90,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-6",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 99,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "0",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 108,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:794aa4af3291db5abd8a2667626c1998:1a6706ad557b92f9bf099c23e02af4a6:6537c634087637bb27e8a1edb1ee2e35$"
+ }
+}
diff --git a/public/images/pokemon/676-dandy.json b/public/images/pokemon/676-dandy.json
index 44ac790a4..f7a72a0d5 100644
--- a/public/images/pokemon/676-dandy.json
+++ b/public/images/pokemon/676-dandy.json
@@ -4,30 +4,30 @@
"image": "676-dandy.png",
"format": "RGBA8888",
"size": {
- "w": 71,
- "h": 71
+ "w": 65,
+ "h": 65
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 56,
- "h": 71
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 56,
- "h": 71
+ "x": 22,
+ "y": 15,
+ "w": 50,
+ "h": 65
},
"frame": {
"x": 0,
"y": 0,
- "w": 56,
- "h": 71
+ "w": 50,
+ "h": 65
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:29165e5c573c8a4235076355ce5d29d5:17a1912fd81d23ce8a7209e27ad3e9ed:b5a287256e260744fe6660dc2ceefd11$"
+ "smartupdate": "$TexturePacker:SmartUpdate:c09947cc1f66b7a7bf844a7caaa3bd76:20ba7e14cce8a9ee80955d94d19ae46f:b5a287256e260744fe6660dc2ceefd11$"
}
}
diff --git a/public/images/pokemon/676-dandy.png b/public/images/pokemon/676-dandy.png
index 738b9eaec..1e9f9b7bb 100644
Binary files a/public/images/pokemon/676-dandy.png and b/public/images/pokemon/676-dandy.png differ
diff --git a/public/images/pokemon/676-debutante.json b/public/images/pokemon/676-debutante.json
index f547be68f..13f12a90a 100644
--- a/public/images/pokemon/676-debutante.json
+++ b/public/images/pokemon/676-debutante.json
@@ -4,30 +4,30 @@
"image": "676-debutante.png",
"format": "RGBA8888",
"size": {
- "w": 67,
- "h": 67
+ "w": 61,
+ "h": 61
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 56,
- "h": 67
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 56,
- "h": 67
+ "x": 20,
+ "y": 19,
+ "w": 50,
+ "h": 61
},
"frame": {
"x": 0,
"y": 0,
- "w": 56,
- "h": 67
+ "w": 50,
+ "h": 61
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:689efba1d73755e99f598016fd321c3c:07d06d321fff31976e1b993edb972e4f:bf2f862a1c8881133f9f3ffbf44602fa$"
+ "smartupdate": "$TexturePacker:SmartUpdate:107780a0e7447bf89ae4998e24021f8b:7623c7ab8d7b6bc5f755e8a1f81ea257:bf2f862a1c8881133f9f3ffbf44602fa$"
}
}
diff --git a/public/images/pokemon/676-debutante.png b/public/images/pokemon/676-debutante.png
index 2be51b49d..92390b17f 100644
Binary files a/public/images/pokemon/676-debutante.png and b/public/images/pokemon/676-debutante.png differ
diff --git a/public/images/pokemon/676-diamond.json b/public/images/pokemon/676-diamond.json
index dec7fd8ea..4fbb88966 100644
--- a/public/images/pokemon/676-diamond.json
+++ b/public/images/pokemon/676-diamond.json
@@ -4,30 +4,30 @@
"image": "676-diamond.png",
"format": "RGBA8888",
"size": {
- "w": 74,
- "h": 74
+ "w": 68,
+ "h": 68
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 53,
- "h": 74
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 53,
- "h": 74
+ "x": 24,
+ "y": 12,
+ "w": 47,
+ "h": 68
},
"frame": {
"x": 0,
"y": 0,
- "w": 53,
- "h": 74
+ "w": 47,
+ "h": 68
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:b33f3de937219e7763316531398d7bbd:c7e104da9393ec52b9e6d37f92fc20d9:88c467fc09249b0d2f579d44eacd528d$"
+ "smartupdate": "$TexturePacker:SmartUpdate:90477dc67c3429f2f0430f0a868ed85c:bd69660307b7d945313b73a256c24d57:88c467fc09249b0d2f579d44eacd528d$"
}
}
diff --git a/public/images/pokemon/676-diamond.png b/public/images/pokemon/676-diamond.png
index 5662825df..3915b78ec 100644
Binary files a/public/images/pokemon/676-diamond.png and b/public/images/pokemon/676-diamond.png differ
diff --git a/public/images/pokemon/676-heart.json b/public/images/pokemon/676-heart.json
index a16c480e3..ac8ea41b3 100644
--- a/public/images/pokemon/676-heart.json
+++ b/public/images/pokemon/676-heart.json
@@ -4,30 +4,30 @@
"image": "676-heart.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 54,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 72
+ "x": 24,
+ "y": 14,
+ "w": 48,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 54,
- "h": 72
+ "w": 48,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:15e433a2269dd4043b1614811a1b8fbd:421a40542b16cdb2cc154c85e963b40d:e11d4dd16bff2ef69bc5ca683c44ca7c$"
+ "smartupdate": "$TexturePacker:SmartUpdate:a9b1c7a73abb563b1ecadad8b517794e:2273c7342204f52860d8e96670ddf46a:e11d4dd16bff2ef69bc5ca683c44ca7c$"
}
}
diff --git a/public/images/pokemon/676-heart.png b/public/images/pokemon/676-heart.png
index 2747c376b..993272086 100644
Binary files a/public/images/pokemon/676-heart.png and b/public/images/pokemon/676-heart.png differ
diff --git a/public/images/pokemon/676-kabuki.json b/public/images/pokemon/676-kabuki.json
index fa358e848..68e5b1839 100644
--- a/public/images/pokemon/676-kabuki.json
+++ b/public/images/pokemon/676-kabuki.json
@@ -4,30 +4,30 @@
"image": "676-kabuki.png",
"format": "RGBA8888",
"size": {
- "w": 70,
- "h": 70
+ "w": 64,
+ "h": 64
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 58,
- "h": 70
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 58,
- "h": 70
+ "x": 22,
+ "y": 16,
+ "w": 52,
+ "h": 64
},
"frame": {
"x": 0,
"y": 0,
- "w": 58,
- "h": 70
+ "w": 52,
+ "h": 64
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:7f4056b1c055475f905d048c8d8d2969:08eecd31f557298e1570ec3490acffe2:c3cad56aa65d2ee971ceebc435a14ee6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:d36abbc31bcd28664e28eb50f8e4719d:43c9d8bb344b7a1373b93f493badb47e:c3cad56aa65d2ee971ceebc435a14ee6$"
}
}
diff --git a/public/images/pokemon/676-kabuki.png b/public/images/pokemon/676-kabuki.png
index 1a9a2ad16..c4f6473c7 100644
Binary files a/public/images/pokemon/676-kabuki.png and b/public/images/pokemon/676-kabuki.png differ
diff --git a/public/images/pokemon/676-la-reine.json b/public/images/pokemon/676-la-reine.json
index 1b7457c31..39ffdb2a6 100644
--- a/public/images/pokemon/676-la-reine.json
+++ b/public/images/pokemon/676-la-reine.json
@@ -4,30 +4,30 @@
"image": "676-la-reine.png",
"format": "RGBA8888",
"size": {
- "w": 69,
- "h": 69
+ "w": 63,
+ "h": 63
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 55,
- "h": 69
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 55,
- "h": 69
+ "x": 23,
+ "y": 17,
+ "w": 49,
+ "h": 63
},
"frame": {
"x": 0,
"y": 0,
- "w": 55,
- "h": 69
+ "w": 49,
+ "h": 63
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:d209428aca72f49f1e9ee3e97f1c18ab:c56ae957d7acb10c7373b842af3a8786:b99821e87dffda3297dd25a224a9029f$"
+ "smartupdate": "$TexturePacker:SmartUpdate:81b2b5d853a3d2527630ca0b2fea6569:98097941483e509b7962c50b179d132f:b99821e87dffda3297dd25a224a9029f$"
}
}
diff --git a/public/images/pokemon/676-la-reine.png b/public/images/pokemon/676-la-reine.png
index 1ca19430e..e649e6d74 100644
Binary files a/public/images/pokemon/676-la-reine.png and b/public/images/pokemon/676-la-reine.png differ
diff --git a/public/images/pokemon/676-matron.json b/public/images/pokemon/676-matron.json
index b85aebf61..1479610e7 100644
--- a/public/images/pokemon/676-matron.json
+++ b/public/images/pokemon/676-matron.json
@@ -4,30 +4,30 @@
"image": "676-matron.png",
"format": "RGBA8888",
"size": {
- "w": 68,
- "h": 68
+ "w": 62,
+ "h": 62
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 52,
- "h": 68
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 52,
- "h": 68
+ "x": 23,
+ "y": 18,
+ "w": 46,
+ "h": 62
},
"frame": {
"x": 0,
"y": 0,
- "w": 52,
- "h": 68
+ "w": 46,
+ "h": 62
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:698fab0e5221743b912637e774bfaecd:72a9977db421d061829c639e3b50a617:020798583d07c479020bb0af34cf8bb6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:50d9857668a013306b96adc3777a22b2:7d3708f1b5b6eeb8419815fc6734bf06:020798583d07c479020bb0af34cf8bb6$"
}
}
diff --git a/public/images/pokemon/676-matron.png b/public/images/pokemon/676-matron.png
index 0ea64fcd5..98142c416 100644
Binary files a/public/images/pokemon/676-matron.png and b/public/images/pokemon/676-matron.png differ
diff --git a/public/images/pokemon/676-pharaoh.json b/public/images/pokemon/676-pharaoh.json
index abd2fab06..6497ddaf1 100644
--- a/public/images/pokemon/676-pharaoh.json
+++ b/public/images/pokemon/676-pharaoh.json
@@ -4,30 +4,30 @@
"image": "676-pharaoh.png",
"format": "RGBA8888",
"size": {
- "w": 69,
- "h": 69
+ "w": 63,
+ "h": 63
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 52,
- "h": 69
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 52,
- "h": 69
+ "x": 25,
+ "y": 17,
+ "w": 46,
+ "h": 63
},
"frame": {
"x": 0,
"y": 0,
- "w": 52,
- "h": 69
+ "w": 46,
+ "h": 63
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:5c1df95bcf0d53d4f1b9f1bf77690598:623b4bc6698ef1a984b6bad42e68115b:904b7ab6f57249c96beea4b5f72deb53$"
+ "smartupdate": "$TexturePacker:SmartUpdate:69f1be06f9a7175f294267b08e7ba275:42e7e4068e30b78248d3629cffa5d2ec:904b7ab6f57249c96beea4b5f72deb53$"
}
}
diff --git a/public/images/pokemon/676-pharaoh.png b/public/images/pokemon/676-pharaoh.png
index d3019440c..cced07231 100644
Binary files a/public/images/pokemon/676-pharaoh.png and b/public/images/pokemon/676-pharaoh.png differ
diff --git a/public/images/pokemon/676-star.json b/public/images/pokemon/676-star.json
index e5442941a..aeb84ebb1 100644
--- a/public/images/pokemon/676-star.json
+++ b/public/images/pokemon/676-star.json
@@ -4,30 +4,30 @@
"image": "676-star.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 56,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 56,
- "h": 72
+ "x": 24,
+ "y": 14,
+ "w": 50,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 56,
- "h": 72
+ "w": 50,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:31c1ce60aa953fb647ff40c50ac54cf1:d7eefc05e299310d05d389e05997e449:dd7fedf66b493b0bbdef5d25e0041dd8$"
+ "smartupdate": "$TexturePacker:SmartUpdate:fde8824a7749541f5af1cc14e6281670:204c6eb602358a5c7c1389b42317ffce:dd7fedf66b493b0bbdef5d25e0041dd8$"
}
}
diff --git a/public/images/pokemon/676-star.png b/public/images/pokemon/676-star.png
index de93346cb..7a1044bda 100644
Binary files a/public/images/pokemon/676-star.png and b/public/images/pokemon/676-star.png differ
diff --git a/public/images/pokemon/back/676-dandy.json b/public/images/pokemon/back/676-dandy.json
index 15491bd02..a1086d11f 100644
--- a/public/images/pokemon/back/676-dandy.json
+++ b/public/images/pokemon/back/676-dandy.json
@@ -4,30 +4,30 @@
"image": "676-dandy.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 62,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 62,
- "h": 72
+ "x": 20,
+ "y": 14,
+ "w": 56,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 62,
- "h": 72
+ "w": 56,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:92d02eca8d05166d15bfa8b79ac478b9:f01538e7a19ca3d0d2fea48cd27d8a4c:b5a287256e260744fe6660dc2ceefd11$"
+ "smartupdate": "$TexturePacker:SmartUpdate:24899e1e616c6a0b9143d36903f9249e:8132d78c7f1f4ab0f673c82868b6a090:b5a287256e260744fe6660dc2ceefd11$"
}
}
diff --git a/public/images/pokemon/back/676-dandy.png b/public/images/pokemon/back/676-dandy.png
index 634a2b0c8..f80525496 100644
Binary files a/public/images/pokemon/back/676-dandy.png and b/public/images/pokemon/back/676-dandy.png differ
diff --git a/public/images/pokemon/back/676-debutante.json b/public/images/pokemon/back/676-debutante.json
index b0405824a..038880720 100644
--- a/public/images/pokemon/back/676-debutante.json
+++ b/public/images/pokemon/back/676-debutante.json
@@ -4,30 +4,30 @@
"image": "676-debutante.png",
"format": "RGBA8888",
"size": {
- "w": 68,
- "h": 68
+ "w": 62,
+ "h": 62
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 57,
- "h": 68
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 57,
- "h": 68
+ "x": 25,
+ "y": 18,
+ "w": 51,
+ "h": 62
},
"frame": {
"x": 0,
"y": 0,
- "w": 57,
- "h": 68
+ "w": 51,
+ "h": 62
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:76ef75ea5c9561531c220cdb7f78934d:6f39eb82deb32d251df708f5d4edc9f1:bf2f862a1c8881133f9f3ffbf44602fa$"
+ "smartupdate": "$TexturePacker:SmartUpdate:ba172ad89c93e6e6f36f621c38e54754:7c9d0d13f309221141cd334833e412a5:bf2f862a1c8881133f9f3ffbf44602fa$"
}
}
diff --git a/public/images/pokemon/back/676-debutante.png b/public/images/pokemon/back/676-debutante.png
index 3a7a0d7ab..507ea4add 100644
Binary files a/public/images/pokemon/back/676-debutante.png and b/public/images/pokemon/back/676-debutante.png differ
diff --git a/public/images/pokemon/back/676-diamond.json b/public/images/pokemon/back/676-diamond.json
index 365afd2bd..ef5a64e38 100644
--- a/public/images/pokemon/back/676-diamond.json
+++ b/public/images/pokemon/back/676-diamond.json
@@ -4,30 +4,30 @@
"image": "676-diamond.png",
"format": "RGBA8888",
"size": {
- "w": 74,
- "h": 74
+ "w": 68,
+ "h": 68
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 51,
- "h": 74
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 51,
- "h": 74
+ "x": 27,
+ "y": 12,
+ "w": 45,
+ "h": 68
},
"frame": {
"x": 0,
"y": 0,
- "w": 51,
- "h": 74
+ "w": 45,
+ "h": 68
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:d2b094f0534f6acd2e5bbe67b8e94fa8:47037a1746645a551e31781cb8262e1f:88c467fc09249b0d2f579d44eacd528d$"
+ "smartupdate": "$TexturePacker:SmartUpdate:0a6f3993923b87e1c16c84b1aa8c3705:6d59d20d1b0cd07c3e7a16eadf0de4cf:88c467fc09249b0d2f579d44eacd528d$"
}
}
diff --git a/public/images/pokemon/back/676-diamond.png b/public/images/pokemon/back/676-diamond.png
index d737c62b5..9498e4e75 100644
Binary files a/public/images/pokemon/back/676-diamond.png and b/public/images/pokemon/back/676-diamond.png differ
diff --git a/public/images/pokemon/back/676-heart.json b/public/images/pokemon/back/676-heart.json
index 81c1c4d89..b51d7b201 100644
--- a/public/images/pokemon/back/676-heart.json
+++ b/public/images/pokemon/back/676-heart.json
@@ -4,30 +4,30 @@
"image": "676-heart.png",
"format": "RGBA8888",
"size": {
- "w": 71,
- "h": 71
+ "w": 65,
+ "h": 65
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 52,
- "h": 71
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 52,
- "h": 71
+ "x": 26,
+ "y": 15,
+ "w": 46,
+ "h": 65
},
"frame": {
"x": 0,
"y": 0,
- "w": 52,
- "h": 71
+ "w": 46,
+ "h": 65
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:537e6149183f630be038f053dd62d27d:dce25f0e6474cad17709f18c96ffb3e5:e11d4dd16bff2ef69bc5ca683c44ca7c$"
+ "smartupdate": "$TexturePacker:SmartUpdate:f99ca7d216355ffd449999125499d32e:cf2dd50594846ac631d9da32cd66dceb:e11d4dd16bff2ef69bc5ca683c44ca7c$"
}
}
diff --git a/public/images/pokemon/back/676-heart.png b/public/images/pokemon/back/676-heart.png
index fac541f44..49c83c6c1 100644
Binary files a/public/images/pokemon/back/676-heart.png and b/public/images/pokemon/back/676-heart.png differ
diff --git a/public/images/pokemon/back/676-kabuki.json b/public/images/pokemon/back/676-kabuki.json
index 3ead18ecd..e5aa1171f 100644
--- a/public/images/pokemon/back/676-kabuki.json
+++ b/public/images/pokemon/back/676-kabuki.json
@@ -4,30 +4,30 @@
"image": "676-kabuki.png",
"format": "RGBA8888",
"size": {
- "w": 71,
- "h": 71
+ "w": 65,
+ "h": 65
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 55,
- "h": 71
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 55,
- "h": 71
+ "x": 23,
+ "y": 15,
+ "w": 49,
+ "h": 65
},
"frame": {
"x": 0,
"y": 0,
- "w": 55,
- "h": 71
+ "w": 49,
+ "h": 65
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:dfc02a08763810a151fc4e22c23a3093:2f6c7f2792f64728b478333fc2c65138:c3cad56aa65d2ee971ceebc435a14ee6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:8de2d15ea2537eb2104a72a133418e94:903840ea77662ae31175e482a712402a:c3cad56aa65d2ee971ceebc435a14ee6$"
}
}
diff --git a/public/images/pokemon/back/676-kabuki.png b/public/images/pokemon/back/676-kabuki.png
index bbb1a776e..2aa6fccce 100644
Binary files a/public/images/pokemon/back/676-kabuki.png and b/public/images/pokemon/back/676-kabuki.png differ
diff --git a/public/images/pokemon/back/676-la-reine.json b/public/images/pokemon/back/676-la-reine.json
index b5de6c65b..57e55b121 100644
--- a/public/images/pokemon/back/676-la-reine.json
+++ b/public/images/pokemon/back/676-la-reine.json
@@ -4,30 +4,30 @@
"image": "676-la-reine.png",
"format": "RGBA8888",
"size": {
- "w": 69,
- "h": 69
+ "w": 63,
+ "h": 63
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 54,
- "h": 69
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 69
+ "x": 24,
+ "y": 17,
+ "w": 48,
+ "h": 63
},
"frame": {
"x": 0,
"y": 0,
- "w": 54,
- "h": 69
+ "w": 48,
+ "h": 63
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:014beffd470b78d94c3234500d9dee5b:3261fa54b4c9574937d670de782ca3e8:b99821e87dffda3297dd25a224a9029f$"
+ "smartupdate": "$TexturePacker:SmartUpdate:b72b1f5723bb276f4a555ccdbb3ed4c0:0ab778e99ee37c883a0b1a0f918f1bee:b99821e87dffda3297dd25a224a9029f$"
}
}
diff --git a/public/images/pokemon/back/676-la-reine.png b/public/images/pokemon/back/676-la-reine.png
index e4d699e5f..2147e5cab 100644
Binary files a/public/images/pokemon/back/676-la-reine.png and b/public/images/pokemon/back/676-la-reine.png differ
diff --git a/public/images/pokemon/back/676-matron.json b/public/images/pokemon/back/676-matron.json
index c9cca4f56..864b6b476 100644
--- a/public/images/pokemon/back/676-matron.json
+++ b/public/images/pokemon/back/676-matron.json
@@ -4,30 +4,30 @@
"image": "676-matron.png",
"format": "RGBA8888",
"size": {
- "w": 68,
- "h": 68
+ "w": 62,
+ "h": 62
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 53,
- "h": 68
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 53,
- "h": 68
+ "x": 26,
+ "y": 18,
+ "w": 47,
+ "h": 62
},
"frame": {
"x": 0,
"y": 0,
- "w": 53,
- "h": 68
+ "w": 47,
+ "h": 62
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:a9199442be3400b8a70f8ad212790732:18b55adc9c377d1b24d6b236e1f39177:020798583d07c479020bb0af34cf8bb6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:d447de0737ae7f9ca8690e7f039a884d:1ffc2bfd67fda79ede1d0e489bf36c94:020798583d07c479020bb0af34cf8bb6$"
}
}
diff --git a/public/images/pokemon/back/676-matron.png b/public/images/pokemon/back/676-matron.png
index 1867cf457..38092e4fe 100644
Binary files a/public/images/pokemon/back/676-matron.png and b/public/images/pokemon/back/676-matron.png differ
diff --git a/public/images/pokemon/back/676-pharaoh.json b/public/images/pokemon/back/676-pharaoh.json
index b43902fd6..428354fdb 100644
--- a/public/images/pokemon/back/676-pharaoh.json
+++ b/public/images/pokemon/back/676-pharaoh.json
@@ -4,30 +4,30 @@
"image": "676-pharaoh.png",
"format": "RGBA8888",
"size": {
- "w": 70,
- "h": 70
+ "w": 64,
+ "h": 64
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 53,
- "h": 70
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 53,
- "h": 70
+ "x": 25,
+ "y": 16,
+ "w": 47,
+ "h": 64
},
"frame": {
"x": 0,
"y": 0,
- "w": 53,
- "h": 70
+ "w": 47,
+ "h": 64
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:be799b3acab0a591e7b2d4a2ad903c94:6260eeb9aa48a1047c8ec12842ac28c6:904b7ab6f57249c96beea4b5f72deb53$"
+ "smartupdate": "$TexturePacker:SmartUpdate:729eefb95778889aa11840e684f35af8:9c72a2d345e9be40096dffd6b99a7ba0:904b7ab6f57249c96beea4b5f72deb53$"
}
}
diff --git a/public/images/pokemon/back/676-pharaoh.png b/public/images/pokemon/back/676-pharaoh.png
index 4c139a498..a7ca04640 100644
Binary files a/public/images/pokemon/back/676-pharaoh.png and b/public/images/pokemon/back/676-pharaoh.png differ
diff --git a/public/images/pokemon/back/676-star.json b/public/images/pokemon/back/676-star.json
index bbc9eebe3..2e0b0f309 100644
--- a/public/images/pokemon/back/676-star.json
+++ b/public/images/pokemon/back/676-star.json
@@ -4,30 +4,30 @@
"image": "676-star.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 54,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 72
+ "x": 24,
+ "y": 14,
+ "w": 48,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 54,
- "h": 72
+ "w": 48,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:8a18f8f110bc4f6f6e86ca95b9a566b8:c9e3d3db02b6ea0720a20b9bbd159d79:dd7fedf66b493b0bbdef5d25e0041dd8$"
+ "smartupdate": "$TexturePacker:SmartUpdate:37e89522e7b92408df9d52c3d98137ea:241a531f0918e0a4b616569e7d4bc186:dd7fedf66b493b0bbdef5d25e0041dd8$"
}
}
diff --git a/public/images/pokemon/back/676-star.png b/public/images/pokemon/back/676-star.png
index 0ad915156..9b0824883 100644
Binary files a/public/images/pokemon/back/676-star.png and b/public/images/pokemon/back/676-star.png differ
diff --git a/public/images/pokemon/back/shiny/676-dandy.json b/public/images/pokemon/back/shiny/676-dandy.json
index c2bbb272d..b13560feb 100644
--- a/public/images/pokemon/back/shiny/676-dandy.json
+++ b/public/images/pokemon/back/shiny/676-dandy.json
@@ -4,30 +4,30 @@
"image": "676-dandy.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 62,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 62,
- "h": 72
+ "x": 20,
+ "y": 14,
+ "w": 56,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 62,
- "h": 72
+ "w": 56,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:9a72775f436bbda574bf3721630310fb:f01538e7a19ca3d0d2fea48cd27d8a4c:b5a287256e260744fe6660dc2ceefd11$"
+ "smartupdate": "$TexturePacker:SmartUpdate:30c2972a226f8e360e323bea40a8005e:232a9bbcc4dba00a033204f1ec06cffd:b5a287256e260744fe6660dc2ceefd11$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-dandy.png b/public/images/pokemon/back/shiny/676-dandy.png
index 634a2b0c8..f8c77d883 100644
Binary files a/public/images/pokemon/back/shiny/676-dandy.png and b/public/images/pokemon/back/shiny/676-dandy.png differ
diff --git a/public/images/pokemon/back/shiny/676-debutante.json b/public/images/pokemon/back/shiny/676-debutante.json
index b1067eed9..0469fb670 100644
--- a/public/images/pokemon/back/shiny/676-debutante.json
+++ b/public/images/pokemon/back/shiny/676-debutante.json
@@ -4,30 +4,30 @@
"image": "676-debutante.png",
"format": "RGBA8888",
"size": {
- "w": 68,
- "h": 68
+ "w": 62,
+ "h": 62
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 57,
- "h": 68
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 57,
- "h": 68
+ "x": 25,
+ "y": 18,
+ "w": 51,
+ "h": 62
},
"frame": {
"x": 0,
"y": 0,
- "w": 57,
- "h": 68
+ "w": 51,
+ "h": 62
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:6d038d8d188d6e545741353c2dd5b812:6f39eb82deb32d251df708f5d4edc9f1:bf2f862a1c8881133f9f3ffbf44602fa$"
+ "smartupdate": "$TexturePacker:SmartUpdate:5a68081e37dfebc3935ecf4a4fbee3ad:71cbee6966c08512b0617eba3ce34a49:bf2f862a1c8881133f9f3ffbf44602fa$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-debutante.png b/public/images/pokemon/back/shiny/676-debutante.png
index 3a7a0d7ab..965e0aaf8 100644
Binary files a/public/images/pokemon/back/shiny/676-debutante.png and b/public/images/pokemon/back/shiny/676-debutante.png differ
diff --git a/public/images/pokemon/back/shiny/676-diamond.json b/public/images/pokemon/back/shiny/676-diamond.json
index 2df54c70a..50319863e 100644
--- a/public/images/pokemon/back/shiny/676-diamond.json
+++ b/public/images/pokemon/back/shiny/676-diamond.json
@@ -4,30 +4,30 @@
"image": "676-diamond.png",
"format": "RGBA8888",
"size": {
- "w": 74,
- "h": 74
+ "w": 68,
+ "h": 68
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 51,
- "h": 74
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 51,
- "h": 74
+ "x": 27,
+ "y": 12,
+ "w": 45,
+ "h": 68
},
"frame": {
"x": 0,
"y": 0,
- "w": 51,
- "h": 74
+ "w": 45,
+ "h": 68
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:6e2189160ebb9fff02e9a051ee296d91:47037a1746645a551e31781cb8262e1f:88c467fc09249b0d2f579d44eacd528d$"
+ "smartupdate": "$TexturePacker:SmartUpdate:2d32af44d56592301808b561e6fa22f6:c70b6710f9c7ebb5268979a777193386:88c467fc09249b0d2f579d44eacd528d$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-diamond.png b/public/images/pokemon/back/shiny/676-diamond.png
index d737c62b5..9ea8ff978 100644
Binary files a/public/images/pokemon/back/shiny/676-diamond.png and b/public/images/pokemon/back/shiny/676-diamond.png differ
diff --git a/public/images/pokemon/back/shiny/676-heart.json b/public/images/pokemon/back/shiny/676-heart.json
index 6ebd9b679..6202b4b20 100644
--- a/public/images/pokemon/back/shiny/676-heart.json
+++ b/public/images/pokemon/back/shiny/676-heart.json
@@ -4,30 +4,30 @@
"image": "676-heart.png",
"format": "RGBA8888",
"size": {
- "w": 71,
- "h": 71
+ "w": 65,
+ "h": 65
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 52,
- "h": 71
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 52,
- "h": 71
+ "x": 26,
+ "y": 15,
+ "w": 46,
+ "h": 65
},
"frame": {
"x": 0,
"y": 0,
- "w": 52,
- "h": 71
+ "w": 46,
+ "h": 65
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:bd54cfc49b95a12709696441044b115c:dce25f0e6474cad17709f18c96ffb3e5:e11d4dd16bff2ef69bc5ca683c44ca7c$"
+ "smartupdate": "$TexturePacker:SmartUpdate:e936d451ba0b36434d6444cb1b80f4d9:0b0d0b49e11fcc790a20130e3ab18ca5:e11d4dd16bff2ef69bc5ca683c44ca7c$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-heart.png b/public/images/pokemon/back/shiny/676-heart.png
index fac541f44..e44c8218a 100644
Binary files a/public/images/pokemon/back/shiny/676-heart.png and b/public/images/pokemon/back/shiny/676-heart.png differ
diff --git a/public/images/pokemon/back/shiny/676-kabuki.json b/public/images/pokemon/back/shiny/676-kabuki.json
index 140e74be3..87bcba2e9 100644
--- a/public/images/pokemon/back/shiny/676-kabuki.json
+++ b/public/images/pokemon/back/shiny/676-kabuki.json
@@ -4,30 +4,30 @@
"image": "676-kabuki.png",
"format": "RGBA8888",
"size": {
- "w": 71,
- "h": 71
+ "w": 65,
+ "h": 65
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 55,
- "h": 71
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 55,
- "h": 71
+ "x": 23,
+ "y": 15,
+ "w": 49,
+ "h": 65
},
"frame": {
"x": 0,
"y": 0,
- "w": 55,
- "h": 71
+ "w": 49,
+ "h": 65
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:5bd5ad9678c59b2b1d85a6af103ba1ba:2f6c7f2792f64728b478333fc2c65138:c3cad56aa65d2ee971ceebc435a14ee6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:517d96cd6baa5b7616a51e8c4fed7a55:0a0f239ab3df60459410fab5eba8a4e6:c3cad56aa65d2ee971ceebc435a14ee6$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-kabuki.png b/public/images/pokemon/back/shiny/676-kabuki.png
index bbb1a776e..e81aada06 100644
Binary files a/public/images/pokemon/back/shiny/676-kabuki.png and b/public/images/pokemon/back/shiny/676-kabuki.png differ
diff --git a/public/images/pokemon/back/shiny/676-la-reine.json b/public/images/pokemon/back/shiny/676-la-reine.json
index 88ddfdc23..a5b408946 100644
--- a/public/images/pokemon/back/shiny/676-la-reine.json
+++ b/public/images/pokemon/back/shiny/676-la-reine.json
@@ -4,30 +4,30 @@
"image": "676-la-reine.png",
"format": "RGBA8888",
"size": {
- "w": 69,
- "h": 69
+ "w": 63,
+ "h": 63
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 54,
- "h": 69
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 69
+ "x": 24,
+ "y": 17,
+ "w": 48,
+ "h": 63
},
"frame": {
"x": 0,
"y": 0,
- "w": 54,
- "h": 69
+ "w": 48,
+ "h": 63
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:e01297ffc2dd40460e87b64750997ca6:3261fa54b4c9574937d670de782ca3e8:b99821e87dffda3297dd25a224a9029f$"
+ "smartupdate": "$TexturePacker:SmartUpdate:e2179e3c9dfa079f84af302283187a80:518e57f1e0614d1aedad1d9826def3d4:b99821e87dffda3297dd25a224a9029f$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-la-reine.png b/public/images/pokemon/back/shiny/676-la-reine.png
index e4d699e5f..78e43bc30 100644
Binary files a/public/images/pokemon/back/shiny/676-la-reine.png and b/public/images/pokemon/back/shiny/676-la-reine.png differ
diff --git a/public/images/pokemon/back/shiny/676-matron.json b/public/images/pokemon/back/shiny/676-matron.json
index 6bf6d37dd..b24180fa8 100644
--- a/public/images/pokemon/back/shiny/676-matron.json
+++ b/public/images/pokemon/back/shiny/676-matron.json
@@ -4,30 +4,30 @@
"image": "676-matron.png",
"format": "RGBA8888",
"size": {
- "w": 68,
- "h": 68
+ "w": 62,
+ "h": 62
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 53,
- "h": 68
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 53,
- "h": 68
+ "x": 26,
+ "y": 18,
+ "w": 47,
+ "h": 62
},
"frame": {
"x": 0,
"y": 0,
- "w": 53,
- "h": 68
+ "w": 47,
+ "h": 62
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:262f28877dc9ef9e7920282c4b36b8dd:18b55adc9c377d1b24d6b236e1f39177:020798583d07c479020bb0af34cf8bb6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:6c9b45763eb4fedb5ec7099762f23606:884e9813686e91cf2a2cd9f51652a875:020798583d07c479020bb0af34cf8bb6$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-matron.png b/public/images/pokemon/back/shiny/676-matron.png
index 1867cf457..0324b0baf 100644
Binary files a/public/images/pokemon/back/shiny/676-matron.png and b/public/images/pokemon/back/shiny/676-matron.png differ
diff --git a/public/images/pokemon/back/shiny/676-pharaoh.json b/public/images/pokemon/back/shiny/676-pharaoh.json
index da4835011..9b18b9697 100644
--- a/public/images/pokemon/back/shiny/676-pharaoh.json
+++ b/public/images/pokemon/back/shiny/676-pharaoh.json
@@ -4,30 +4,30 @@
"image": "676-pharaoh.png",
"format": "RGBA8888",
"size": {
- "w": 70,
- "h": 70
+ "w": 64,
+ "h": 64
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 53,
- "h": 70
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 53,
- "h": 70
+ "x": 25,
+ "y": 16,
+ "w": 47,
+ "h": 64
},
"frame": {
"x": 0,
"y": 0,
- "w": 53,
- "h": 70
+ "w": 47,
+ "h": 64
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:a5d56fc494b2194036a8d6d1d876a296:6260eeb9aa48a1047c8ec12842ac28c6:904b7ab6f57249c96beea4b5f72deb53$"
+ "smartupdate": "$TexturePacker:SmartUpdate:5143f43786377eae745a9355e5e1cc24:158aa35a349be4cf7c56820170aa4546:904b7ab6f57249c96beea4b5f72deb53$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-pharaoh.png b/public/images/pokemon/back/shiny/676-pharaoh.png
index 4c139a498..563c2f93e 100644
Binary files a/public/images/pokemon/back/shiny/676-pharaoh.png and b/public/images/pokemon/back/shiny/676-pharaoh.png differ
diff --git a/public/images/pokemon/back/shiny/676-star.json b/public/images/pokemon/back/shiny/676-star.json
index 1ef3e6a61..6ca9f42e5 100644
--- a/public/images/pokemon/back/shiny/676-star.json
+++ b/public/images/pokemon/back/shiny/676-star.json
@@ -4,30 +4,30 @@
"image": "676-star.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 54,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 72
+ "x": 24,
+ "y": 14,
+ "w": 48,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 54,
- "h": 72
+ "w": 48,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:6be66775c485bf44d69f7cd44e346324:c9e3d3db02b6ea0720a20b9bbd159d79:dd7fedf66b493b0bbdef5d25e0041dd8$"
+ "smartupdate": "$TexturePacker:SmartUpdate:d9af00245cb6498c9dec7508ed563454:12f19bad174b64678e8b8be8455f2b5a:dd7fedf66b493b0bbdef5d25e0041dd8$"
}
}
diff --git a/public/images/pokemon/back/shiny/676-star.png b/public/images/pokemon/back/shiny/676-star.png
index 0ad915156..0f388480b 100644
Binary files a/public/images/pokemon/back/shiny/676-star.png and b/public/images/pokemon/back/shiny/676-star.png differ
diff --git a/public/images/pokemon/back/shiny/678.json b/public/images/pokemon/back/shiny/678.json
index 98341ac8e..14101a5b0 100644
--- a/public/images/pokemon/back/shiny/678.json
+++ b/public/images/pokemon/back/shiny/678.json
@@ -4,219 +4,30 @@
"image": "678.png",
"format": "RGBA8888",
"size": {
- "w": 157,
- "h": 157
+ "w": 55,
+ "h": 55
},
- "scale": 1,
+ "scale": 0.333,
"frames": [
- {
- "filename": "0005.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 25,
- "y": 16,
- "w": 54,
- "h": 60
- },
- "frame": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 60
- }
- },
- {
- "filename": "0007.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 25,
- "y": 16,
- "w": 54,
- "h": 60
- },
- "frame": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 60
- }
- },
- {
- "filename": "0004.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 25,
- "y": 15,
- "w": 53,
- "h": 61
- },
- "frame": {
- "x": 54,
- "y": 0,
- "w": 53,
- "h": 61
- }
- },
- {
- "filename": "0008.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 25,
- "y": 15,
- "w": 53,
- "h": 61
- },
- "frame": {
- "x": 54,
- "y": 0,
- "w": 53,
- "h": 61
- }
- },
- {
- "filename": "0003.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 24,
- "y": 15,
- "w": 52,
- "h": 61
- },
- "frame": {
- "x": 0,
- "y": 60,
- "w": 52,
- "h": 61
- }
- },
- {
- "filename": "0009.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 24,
- "y": 15,
- "w": 52,
- "h": 61
- },
- "frame": {
- "x": 0,
- "y": 60,
- "w": 52,
- "h": 61
- }
- },
- {
- "filename": "0006.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 26,
- "y": 16,
- "w": 54,
- "h": 60
- },
- "frame": {
- "x": 52,
- "y": 61,
- "w": 54,
- "h": 60
- }
- },
- {
- "filename": "0002.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 24,
- "y": 17,
- "w": 51,
- "h": 59
- },
- "frame": {
- "x": 106,
- "y": 61,
- "w": 51,
- "h": 59
- }
- },
- {
- "filename": "0010.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 96,
- "h": 96
- },
- "spriteSourceSize": {
- "x": 24,
- "y": 17,
- "w": 51,
- "h": 59
- },
- "frame": {
- "x": 106,
- "y": 61,
- "w": 51,
- "h": 59
- }
- },
{
"filename": "0001.png",
"rotated": false,
- "trimmed": true,
+ "trimmed": false,
"sourceSize": {
"w": 96,
"h": 96
},
"spriteSourceSize": {
- "x": 23,
- "y": 19,
- "w": 50,
- "h": 57
+ "x": 25,
+ "y": 20,
+ "w": 46,
+ "h": 55
},
"frame": {
- "x": 107,
+ "x": 0,
"y": 0,
- "w": 50,
- "h": 57
+ "w": 46,
+ "h": 55
}
}
]
@@ -225,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:ab77ad452685ab677c7e5e70a386e880:27bb9b07316cb5c401e67e15e2b0f06a:887aa14e4a3a3e9141c6ae460f968db1$"
+ "smartupdate": "$TexturePacker:SmartUpdate:7b46b2656390e5ddac94370837e7cdaa:7f76286d5acb65066eff0c2532fa7fea:887aa14e4a3a3e9141c6ae460f968db1$"
}
}
diff --git a/public/images/pokemon/back/shiny/678.png b/public/images/pokemon/back/shiny/678.png
index 7bb6cfc0b..3e9d72b06 100644
Binary files a/public/images/pokemon/back/shiny/678.png and b/public/images/pokemon/back/shiny/678.png differ
diff --git a/public/images/pokemon/exp/945.json b/public/images/pokemon/exp/945.json
index 9456e435d..31ba1c930 100644
--- a/public/images/pokemon/exp/945.json
+++ b/public/images/pokemon/exp/945.json
@@ -146,14 +146,14 @@
"spriteSourceSize": {
"x": 0,
"y": 0,
- "w": 3,
- "h": 3
+ "w": 66,
+ "h": 55
},
"frame": {
- "x": 132,
- "y": 0,
- "w": 3,
- "h": 3
+ "x": 0,
+ "y": 112,
+ "w": 66,
+ "h": 55
}
},
{
diff --git a/public/images/pokemon/icons/variant/1/118_1.png b/public/images/pokemon/icons/variant/1/118_1.png
new file mode 100644
index 000000000..595f76d79
Binary files /dev/null and b/public/images/pokemon/icons/variant/1/118_1.png differ
diff --git a/public/images/pokemon/icons/variant/1/29_2.png b/public/images/pokemon/icons/variant/1/29_2.png
index 12d66fb15..55b1f0eda 100644
Binary files a/public/images/pokemon/icons/variant/1/29_2.png and b/public/images/pokemon/icons/variant/1/29_2.png differ
diff --git a/public/images/pokemon/icons/variant/1/29_3.png b/public/images/pokemon/icons/variant/1/29_3.png
index c5f1f4aae..90326c212 100644
Binary files a/public/images/pokemon/icons/variant/1/29_3.png and b/public/images/pokemon/icons/variant/1/29_3.png differ
diff --git a/public/images/pokemon/icons/variant/1/30_2.png b/public/images/pokemon/icons/variant/1/30_2.png
index 29e97832b..87cc4ec72 100644
Binary files a/public/images/pokemon/icons/variant/1/30_2.png and b/public/images/pokemon/icons/variant/1/30_2.png differ
diff --git a/public/images/pokemon/icons/variant/1/30_3.png b/public/images/pokemon/icons/variant/1/30_3.png
index 5d292322f..3fe2fc433 100644
Binary files a/public/images/pokemon/icons/variant/1/30_3.png and b/public/images/pokemon/icons/variant/1/30_3.png differ
diff --git a/public/images/pokemon/icons/variant/1/31_1.png b/public/images/pokemon/icons/variant/1/31_1.png
index 51ab04f75..ca7d5d98b 100644
Binary files a/public/images/pokemon/icons/variant/1/31_1.png and b/public/images/pokemon/icons/variant/1/31_1.png differ
diff --git a/public/images/pokemon/icons/variant/1/31_3.png b/public/images/pokemon/icons/variant/1/31_3.png
index 020c42185..381a31087 100644
Binary files a/public/images/pokemon/icons/variant/1/31_3.png and b/public/images/pokemon/icons/variant/1/31_3.png differ
diff --git a/public/images/pokemon/icons/variant/3/278_1.png b/public/images/pokemon/icons/variant/3/278_1.png
new file mode 100644
index 000000000..4f8f65eab
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/278_1.png differ
diff --git a/public/images/pokemon/icons/variant/3/278_2.png b/public/images/pokemon/icons/variant/3/278_2.png
new file mode 100644
index 000000000..4791920bc
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/278_2.png differ
diff --git a/public/images/pokemon/icons/variant/3/278_3.png b/public/images/pokemon/icons/variant/3/278_3.png
new file mode 100644
index 000000000..95555099b
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/278_3.png differ
diff --git a/public/images/pokemon/icons/variant/3/279_1.png b/public/images/pokemon/icons/variant/3/279_1.png
new file mode 100644
index 000000000..661c6e102
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/279_1.png differ
diff --git a/public/images/pokemon/icons/variant/3/279_2.png b/public/images/pokemon/icons/variant/3/279_2.png
new file mode 100644
index 000000000..007f58ba3
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/279_2.png differ
diff --git a/public/images/pokemon/icons/variant/3/279_3.png b/public/images/pokemon/icons/variant/3/279_3.png
new file mode 100644
index 000000000..57c4e388f
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/279_3.png differ
diff --git a/public/images/pokemon/icons/variant/3/320_2.png b/public/images/pokemon/icons/variant/3/320_2.png
new file mode 100644
index 000000000..3cc82654b
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/320_2.png differ
diff --git a/public/images/pokemon/icons/variant/3/320_3.png b/public/images/pokemon/icons/variant/3/320_3.png
new file mode 100644
index 000000000..967dbe095
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/320_3.png differ
diff --git a/public/images/pokemon/icons/variant/3/321_2.png b/public/images/pokemon/icons/variant/3/321_2.png
new file mode 100644
index 000000000..fc49d4dc0
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/321_2.png differ
diff --git a/public/images/pokemon/icons/variant/3/321_3.png b/public/images/pokemon/icons/variant/3/321_3.png
new file mode 100644
index 000000000..e672b2804
Binary files /dev/null and b/public/images/pokemon/icons/variant/3/321_3.png differ
diff --git a/public/images/pokemon/icons/variant/3/333_2.png b/public/images/pokemon/icons/variant/3/333_2.png
index 052e9cdbb..dba83c56e 100644
Binary files a/public/images/pokemon/icons/variant/3/333_2.png and b/public/images/pokemon/icons/variant/3/333_2.png differ
diff --git a/public/images/pokemon/icons/variant/3/333_3.png b/public/images/pokemon/icons/variant/3/333_3.png
index dba83c56e..052e9cdbb 100644
Binary files a/public/images/pokemon/icons/variant/3/333_3.png and b/public/images/pokemon/icons/variant/3/333_3.png differ
diff --git a/public/images/pokemon/icons/variant/3/334_2.png b/public/images/pokemon/icons/variant/3/334_2.png
index 08d3ac09a..ed4a145fa 100644
Binary files a/public/images/pokemon/icons/variant/3/334_2.png and b/public/images/pokemon/icons/variant/3/334_2.png differ
diff --git a/public/images/pokemon/icons/variant/3/334_3.png b/public/images/pokemon/icons/variant/3/334_3.png
index ed4a145fa..08d3ac09a 100644
Binary files a/public/images/pokemon/icons/variant/3/334_3.png and b/public/images/pokemon/icons/variant/3/334_3.png differ
diff --git a/public/images/pokemon/icons/variant/4/485_2.png b/public/images/pokemon/icons/variant/4/485_2.png
new file mode 100644
index 000000000..57759e932
Binary files /dev/null and b/public/images/pokemon/icons/variant/4/485_2.png differ
diff --git a/public/images/pokemon/icons/variant/4/485_3.png b/public/images/pokemon/icons/variant/4/485_3.png
new file mode 100644
index 000000000..2f133e8fb
Binary files /dev/null and b/public/images/pokemon/icons/variant/4/485_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/547_2.png b/public/images/pokemon/icons/variant/5/547_2.png
index 2294b1133..767a0d4ad 100644
Binary files a/public/images/pokemon/icons/variant/5/547_2.png and b/public/images/pokemon/icons/variant/5/547_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/547_3.png b/public/images/pokemon/icons/variant/5/547_3.png
index 1af57cc09..a0c24d519 100644
Binary files a/public/images/pokemon/icons/variant/5/547_3.png and b/public/images/pokemon/icons/variant/5/547_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/592-f_1.png b/public/images/pokemon/icons/variant/5/592-f_1.png
new file mode 100644
index 000000000..b30360cd0
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592-f_1.png differ
diff --git a/public/images/pokemon/icons/variant/5/592-f_2.png b/public/images/pokemon/icons/variant/5/592-f_2.png
new file mode 100644
index 000000000..42dec5432
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592-f_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/592-f_3.png b/public/images/pokemon/icons/variant/5/592-f_3.png
new file mode 100644
index 000000000..bb4dc0ff0
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592-f_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/592_2.png b/public/images/pokemon/icons/variant/5/592_2.png
new file mode 100644
index 000000000..fc869a64b
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/592_3.png b/public/images/pokemon/icons/variant/5/592_3.png
new file mode 100644
index 000000000..202459f76
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/592_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/593-f_1.png b/public/images/pokemon/icons/variant/5/593-f_1.png
new file mode 100644
index 000000000..32d2e427c
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593-f_1.png differ
diff --git a/public/images/pokemon/icons/variant/5/593-f_2.png b/public/images/pokemon/icons/variant/5/593-f_2.png
new file mode 100644
index 000000000..348c50106
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593-f_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/593-f_3.png b/public/images/pokemon/icons/variant/5/593-f_3.png
new file mode 100644
index 000000000..da94471a0
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593-f_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/593_2.png b/public/images/pokemon/icons/variant/5/593_2.png
new file mode 100644
index 000000000..ee7d77ef5
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/593_3.png b/public/images/pokemon/icons/variant/5/593_3.png
new file mode 100644
index 000000000..0134d25d0
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/593_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/619_2.png b/public/images/pokemon/icons/variant/5/619_2.png
new file mode 100644
index 000000000..61fb4716f
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/619_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/619_3.png b/public/images/pokemon/icons/variant/5/619_3.png
new file mode 100644
index 000000000..9af922c97
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/619_3.png differ
diff --git a/public/images/pokemon/icons/variant/5/620_2.png b/public/images/pokemon/icons/variant/5/620_2.png
new file mode 100644
index 000000000..6042f2bb6
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/620_2.png differ
diff --git a/public/images/pokemon/icons/variant/5/620_3.png b/public/images/pokemon/icons/variant/5/620_3.png
new file mode 100644
index 000000000..09750c3ea
Binary files /dev/null and b/public/images/pokemon/icons/variant/5/620_3.png differ
diff --git a/public/images/pokemon/icons/variant/8/850_2.png b/public/images/pokemon/icons/variant/8/850_2.png
new file mode 100644
index 000000000..6b0d9c063
Binary files /dev/null and b/public/images/pokemon/icons/variant/8/850_2.png differ
diff --git a/public/images/pokemon/icons/variant/8/850_3.png b/public/images/pokemon/icons/variant/8/850_3.png
new file mode 100644
index 000000000..646f2c44b
Binary files /dev/null and b/public/images/pokemon/icons/variant/8/850_3.png differ
diff --git a/public/images/pokemon/icons/variant/8/851_2.png b/public/images/pokemon/icons/variant/8/851_2.png
new file mode 100644
index 000000000..9da1c12a8
Binary files /dev/null and b/public/images/pokemon/icons/variant/8/851_2.png differ
diff --git a/public/images/pokemon/icons/variant/8/851_3.png b/public/images/pokemon/icons/variant/8/851_3.png
new file mode 100644
index 000000000..32e9ec3cd
Binary files /dev/null and b/public/images/pokemon/icons/variant/8/851_3.png differ
diff --git a/public/images/pokemon/icons/variant/9/935_1.png b/public/images/pokemon/icons/variant/9/935_1.png
new file mode 100644
index 000000000..90c5add80
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/935_1.png differ
diff --git a/public/images/pokemon/icons/variant/9/935_2.png b/public/images/pokemon/icons/variant/9/935_2.png
new file mode 100644
index 000000000..0dd9c43c9
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/935_2.png differ
diff --git a/public/images/pokemon/icons/variant/9/935_3.png b/public/images/pokemon/icons/variant/9/935_3.png
index b8d1b63a1..5cfcb9b23 100644
Binary files a/public/images/pokemon/icons/variant/9/935_3.png and b/public/images/pokemon/icons/variant/9/935_3.png differ
diff --git a/public/images/pokemon/icons/variant/9/936_1.png b/public/images/pokemon/icons/variant/9/936_1.png
new file mode 100644
index 000000000..06c39d728
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/936_1.png differ
diff --git a/public/images/pokemon/icons/variant/9/936_2.png b/public/images/pokemon/icons/variant/9/936_2.png
new file mode 100644
index 000000000..80e4f83d1
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/936_2.png differ
diff --git a/public/images/pokemon/icons/variant/9/936_3.png b/public/images/pokemon/icons/variant/9/936_3.png
index f2a53aedf..2e2b6cde2 100644
Binary files a/public/images/pokemon/icons/variant/9/936_3.png and b/public/images/pokemon/icons/variant/9/936_3.png differ
diff --git a/public/images/pokemon/icons/variant/9/937_1.png b/public/images/pokemon/icons/variant/9/937_1.png
new file mode 100644
index 000000000..e45d536a6
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/937_1.png differ
diff --git a/public/images/pokemon/icons/variant/9/937_2.png b/public/images/pokemon/icons/variant/9/937_2.png
new file mode 100644
index 000000000..1362ef759
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/937_2.png differ
diff --git a/public/images/pokemon/icons/variant/9/937_3.png b/public/images/pokemon/icons/variant/9/937_3.png
new file mode 100644
index 000000000..cc0a05cea
Binary files /dev/null and b/public/images/pokemon/icons/variant/9/937_3.png differ
diff --git a/public/images/pokemon/shiny/676-dandy.json b/public/images/pokemon/shiny/676-dandy.json
index 2bb36e87e..770db5763 100644
--- a/public/images/pokemon/shiny/676-dandy.json
+++ b/public/images/pokemon/shiny/676-dandy.json
@@ -4,30 +4,30 @@
"image": "676-dandy.png",
"format": "RGBA8888",
"size": {
- "w": 71,
- "h": 71
+ "w": 65,
+ "h": 65
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 56,
- "h": 71
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 56,
- "h": 71
+ "x": 22,
+ "y": 15,
+ "w": 50,
+ "h": 65
},
"frame": {
"x": 0,
"y": 0,
- "w": 56,
- "h": 71
+ "w": 50,
+ "h": 65
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:cd88917bff3fae3d6ff808096f539d70:17a1912fd81d23ce8a7209e27ad3e9ed:b5a287256e260744fe6660dc2ceefd11$"
+ "smartupdate": "$TexturePacker:SmartUpdate:30639f5b87709c77f1b970be4078abf4:7b6183e776852f811a1e5c3fa15805fc:b5a287256e260744fe6660dc2ceefd11$"
}
}
diff --git a/public/images/pokemon/shiny/676-dandy.png b/public/images/pokemon/shiny/676-dandy.png
index 738b9eaec..d0e19946a 100644
Binary files a/public/images/pokemon/shiny/676-dandy.png and b/public/images/pokemon/shiny/676-dandy.png differ
diff --git a/public/images/pokemon/shiny/676-debutante.json b/public/images/pokemon/shiny/676-debutante.json
index fa4859812..720b39294 100644
--- a/public/images/pokemon/shiny/676-debutante.json
+++ b/public/images/pokemon/shiny/676-debutante.json
@@ -4,30 +4,30 @@
"image": "676-debutante.png",
"format": "RGBA8888",
"size": {
- "w": 67,
- "h": 67
+ "w": 61,
+ "h": 61
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 56,
- "h": 67
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 56,
- "h": 67
+ "x": 20,
+ "y": 19,
+ "w": 50,
+ "h": 61
},
"frame": {
"x": 0,
"y": 0,
- "w": 56,
- "h": 67
+ "w": 50,
+ "h": 61
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:68f3a2720b7b1e5e59f628f021cac698:07d06d321fff31976e1b993edb972e4f:bf2f862a1c8881133f9f3ffbf44602fa$"
+ "smartupdate": "$TexturePacker:SmartUpdate:2ccaadba59ae7a3f23287601b725067d:18ae045d433354fd8b461b528bba113d:bf2f862a1c8881133f9f3ffbf44602fa$"
}
}
diff --git a/public/images/pokemon/shiny/676-debutante.png b/public/images/pokemon/shiny/676-debutante.png
index 2be51b49d..ff8d8d76d 100644
Binary files a/public/images/pokemon/shiny/676-debutante.png and b/public/images/pokemon/shiny/676-debutante.png differ
diff --git a/public/images/pokemon/shiny/676-diamond.json b/public/images/pokemon/shiny/676-diamond.json
index 9098c4614..8ceec5a6f 100644
--- a/public/images/pokemon/shiny/676-diamond.json
+++ b/public/images/pokemon/shiny/676-diamond.json
@@ -4,30 +4,30 @@
"image": "676-diamond.png",
"format": "RGBA8888",
"size": {
- "w": 74,
- "h": 74
+ "w": 68,
+ "h": 68
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 53,
- "h": 74
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 53,
- "h": 74
+ "x": 24,
+ "y": 12,
+ "w": 47,
+ "h": 68
},
"frame": {
"x": 0,
"y": 0,
- "w": 53,
- "h": 74
+ "w": 47,
+ "h": 68
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:e054ccb4d021c87a6a02c6728403d87a:c7e104da9393ec52b9e6d37f92fc20d9:88c467fc09249b0d2f579d44eacd528d$"
+ "smartupdate": "$TexturePacker:SmartUpdate:bd55e138e32873b99b7a1a2e237d5278:befb394d45c46c22e2711f4c6d5d9623:88c467fc09249b0d2f579d44eacd528d$"
}
}
diff --git a/public/images/pokemon/shiny/676-diamond.png b/public/images/pokemon/shiny/676-diamond.png
index 5662825df..a29257968 100644
Binary files a/public/images/pokemon/shiny/676-diamond.png and b/public/images/pokemon/shiny/676-diamond.png differ
diff --git a/public/images/pokemon/shiny/676-heart.json b/public/images/pokemon/shiny/676-heart.json
index 43f03c195..a330e953d 100644
--- a/public/images/pokemon/shiny/676-heart.json
+++ b/public/images/pokemon/shiny/676-heart.json
@@ -4,30 +4,30 @@
"image": "676-heart.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 54,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 54,
- "h": 72
+ "x": 24,
+ "y": 14,
+ "w": 48,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 54,
- "h": 72
+ "w": 48,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:adb921bf32ae497738fbecc12e2aab07:421a40542b16cdb2cc154c85e963b40d:e11d4dd16bff2ef69bc5ca683c44ca7c$"
+ "smartupdate": "$TexturePacker:SmartUpdate:6a000209d8789ed27cdd0700711ccc27:75157608bd339b63c9a7ce68e259b3b7:e11d4dd16bff2ef69bc5ca683c44ca7c$"
}
}
diff --git a/public/images/pokemon/shiny/676-heart.png b/public/images/pokemon/shiny/676-heart.png
index 2747c376b..39c7e8b90 100644
Binary files a/public/images/pokemon/shiny/676-heart.png and b/public/images/pokemon/shiny/676-heart.png differ
diff --git a/public/images/pokemon/shiny/676-kabuki.json b/public/images/pokemon/shiny/676-kabuki.json
index 7121f0b30..a892c23d2 100644
--- a/public/images/pokemon/shiny/676-kabuki.json
+++ b/public/images/pokemon/shiny/676-kabuki.json
@@ -4,30 +4,30 @@
"image": "676-kabuki.png",
"format": "RGBA8888",
"size": {
- "w": 70,
- "h": 70
+ "w": 64,
+ "h": 64
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 58,
- "h": 70
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 58,
- "h": 70
+ "x": 22,
+ "y": 16,
+ "w": 52,
+ "h": 64
},
"frame": {
"x": 0,
"y": 0,
- "w": 58,
- "h": 70
+ "w": 52,
+ "h": 64
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:ef8ecfc1b406aa668e3f8daf0dfbaae7:08eecd31f557298e1570ec3490acffe2:c3cad56aa65d2ee971ceebc435a14ee6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:cd44f74e9b1dc4a581bd72f235552344:1404c36e03543b4eb1d1a4d5916a6652:c3cad56aa65d2ee971ceebc435a14ee6$"
}
}
diff --git a/public/images/pokemon/shiny/676-kabuki.png b/public/images/pokemon/shiny/676-kabuki.png
index 1a9a2ad16..d11cff6c8 100644
Binary files a/public/images/pokemon/shiny/676-kabuki.png and b/public/images/pokemon/shiny/676-kabuki.png differ
diff --git a/public/images/pokemon/shiny/676-la-reine.json b/public/images/pokemon/shiny/676-la-reine.json
index dc3c4d596..24299b061 100644
--- a/public/images/pokemon/shiny/676-la-reine.json
+++ b/public/images/pokemon/shiny/676-la-reine.json
@@ -4,30 +4,30 @@
"image": "676-la-reine.png",
"format": "RGBA8888",
"size": {
- "w": 69,
- "h": 69
+ "w": 63,
+ "h": 63
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 55,
- "h": 69
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 55,
- "h": 69
+ "x": 23,
+ "y": 17,
+ "w": 49,
+ "h": 63
},
"frame": {
"x": 0,
"y": 0,
- "w": 55,
- "h": 69
+ "w": 49,
+ "h": 63
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:6ba780e3e4c772966f8fa209410a9370:c56ae957d7acb10c7373b842af3a8786:b99821e87dffda3297dd25a224a9029f$"
+ "smartupdate": "$TexturePacker:SmartUpdate:1982df9d4acf87f005bb76829bd78a65:e3590ee437367a91742856b3887339a8:b99821e87dffda3297dd25a224a9029f$"
}
}
diff --git a/public/images/pokemon/shiny/676-la-reine.png b/public/images/pokemon/shiny/676-la-reine.png
index 1ca19430e..7eed3ef20 100644
Binary files a/public/images/pokemon/shiny/676-la-reine.png and b/public/images/pokemon/shiny/676-la-reine.png differ
diff --git a/public/images/pokemon/shiny/676-matron.json b/public/images/pokemon/shiny/676-matron.json
index fac13c655..def3de9d3 100644
--- a/public/images/pokemon/shiny/676-matron.json
+++ b/public/images/pokemon/shiny/676-matron.json
@@ -4,30 +4,30 @@
"image": "676-matron.png",
"format": "RGBA8888",
"size": {
- "w": 68,
- "h": 68
+ "w": 62,
+ "h": 62
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 52,
- "h": 68
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 52,
- "h": 68
+ "x": 23,
+ "y": 18,
+ "w": 46,
+ "h": 62
},
"frame": {
"x": 0,
"y": 0,
- "w": 52,
- "h": 68
+ "w": 46,
+ "h": 62
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:89ab717076c514df8295db07981b18e9:72a9977db421d061829c639e3b50a617:020798583d07c479020bb0af34cf8bb6$"
+ "smartupdate": "$TexturePacker:SmartUpdate:e2bcb6e27807980dfb68c17e65a7e8bd:d2409a3631a4a2263717bf5aa7e273b2:020798583d07c479020bb0af34cf8bb6$"
}
}
diff --git a/public/images/pokemon/shiny/676-matron.png b/public/images/pokemon/shiny/676-matron.png
index 0ea64fcd5..14e31ce77 100644
Binary files a/public/images/pokemon/shiny/676-matron.png and b/public/images/pokemon/shiny/676-matron.png differ
diff --git a/public/images/pokemon/shiny/676-pharaoh.json b/public/images/pokemon/shiny/676-pharaoh.json
index 6acf62a9f..0cb4f035c 100644
--- a/public/images/pokemon/shiny/676-pharaoh.json
+++ b/public/images/pokemon/shiny/676-pharaoh.json
@@ -4,30 +4,30 @@
"image": "676-pharaoh.png",
"format": "RGBA8888",
"size": {
- "w": 69,
- "h": 69
+ "w": 63,
+ "h": 63
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 52,
- "h": 69
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 52,
- "h": 69
+ "x": 25,
+ "y": 17,
+ "w": 46,
+ "h": 63
},
"frame": {
"x": 0,
"y": 0,
- "w": 52,
- "h": 69
+ "w": 46,
+ "h": 63
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:85c709f8538d07088a17e53a7c85afa0:623b4bc6698ef1a984b6bad42e68115b:904b7ab6f57249c96beea4b5f72deb53$"
+ "smartupdate": "$TexturePacker:SmartUpdate:bdf2959fe7e2556fe6d031d7de04fc6c:fbff7f59a6ed25ee3eef955cbb3b9a56:904b7ab6f57249c96beea4b5f72deb53$"
}
}
diff --git a/public/images/pokemon/shiny/676-pharaoh.png b/public/images/pokemon/shiny/676-pharaoh.png
index d3019440c..32b78156f 100644
Binary files a/public/images/pokemon/shiny/676-pharaoh.png and b/public/images/pokemon/shiny/676-pharaoh.png differ
diff --git a/public/images/pokemon/shiny/676-star.json b/public/images/pokemon/shiny/676-star.json
index 0686d3487..db4d10dde 100644
--- a/public/images/pokemon/shiny/676-star.json
+++ b/public/images/pokemon/shiny/676-star.json
@@ -4,30 +4,30 @@
"image": "676-star.png",
"format": "RGBA8888",
"size": {
- "w": 72,
- "h": 72
+ "w": 66,
+ "h": 66
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
"trimmed": false,
"sourceSize": {
- "w": 56,
- "h": 72
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 0,
- "y": 0,
- "w": 56,
- "h": 72
+ "x": 24,
+ "y": 14,
+ "w": 50,
+ "h": 66
},
"frame": {
"x": 0,
"y": 0,
- "w": 56,
- "h": 72
+ "w": 50,
+ "h": 66
}
}
]
@@ -36,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:56c2df4ee634b690a816b79120bc3600:d7eefc05e299310d05d389e05997e449:dd7fedf66b493b0bbdef5d25e0041dd8$"
+ "smartupdate": "$TexturePacker:SmartUpdate:a3f92eef83bcae7716ee78c669738785:156a85da733d2e878a00be0efc1c4d38:dd7fedf66b493b0bbdef5d25e0041dd8$"
}
}
diff --git a/public/images/pokemon/shiny/676-star.png b/public/images/pokemon/shiny/676-star.png
index de93346cb..d7a327566 100644
Binary files a/public/images/pokemon/shiny/676-star.png and b/public/images/pokemon/shiny/676-star.png differ
diff --git a/public/images/pokemon/shiny/678.json b/public/images/pokemon/shiny/678.json
index 3b0b49acd..681f84667 100644
--- a/public/images/pokemon/shiny/678.json
+++ b/public/images/pokemon/shiny/678.json
@@ -4,240 +4,30 @@
"image": "678.png",
"format": "RGBA8888",
"size": {
- "w": 130,
- "h": 130
+ "w": 56,
+ "h": 56
},
- "scale": 1,
+ "scale": 0.5,
"frames": [
{
"filename": "0001.png",
"rotated": false,
- "trimmed": true,
+ "trimmed": false,
"sourceSize": {
- "w": 80,
- "h": 80
+ "w": 96,
+ "h": 96
},
"spriteSourceSize": {
- "x": 18,
- "y": 11,
- "w": 44,
- "h": 57
+ "x": 25,
+ "y": 20,
+ "w": 45,
+ "h": 56
},
"frame": {
"x": 0,
"y": 0,
- "w": 44,
- "h": 57
- }
- },
- {
- "filename": "0002.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 18,
- "y": 11,
- "w": 44,
- "h": 57
- },
- "frame": {
- "x": 0,
- "y": 57,
- "w": 44,
- "h": 57
- }
- },
- {
- "filename": "0011.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 18,
- "y": 11,
- "w": 44,
- "h": 57
- },
- "frame": {
- "x": 0,
- "y": 57,
- "w": 44,
- "h": 57
- }
- },
- {
- "filename": "0006.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 21,
- "y": 15,
- "w": 44,
- "h": 53
- },
- "frame": {
- "x": 44,
- "y": 0,
- "w": 44,
- "h": 53
- }
- },
- {
- "filename": "0007.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 21,
- "y": 15,
- "w": 44,
- "h": 53
- },
- "frame": {
- "x": 44,
- "y": 0,
- "w": 44,
- "h": 53
- }
- },
- {
- "filename": "0004.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 24,
- "y": 12,
- "w": 42,
+ "w": 45,
"h": 56
- },
- "frame": {
- "x": 88,
- "y": 0,
- "w": 42,
- "h": 56
- }
- },
- {
- "filename": "0009.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 24,
- "y": 12,
- "w": 42,
- "h": 56
- },
- "frame": {
- "x": 88,
- "y": 0,
- "w": 42,
- "h": 56
- }
- },
- {
- "filename": "0003.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 20,
- "y": 11,
- "w": 43,
- "h": 57
- },
- "frame": {
- "x": 44,
- "y": 53,
- "w": 43,
- "h": 57
- }
- },
- {
- "filename": "0010.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 20,
- "y": 11,
- "w": 43,
- "h": 57
- },
- "frame": {
- "x": 44,
- "y": 53,
- "w": 43,
- "h": 57
- }
- },
- {
- "filename": "0005.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 22,
- "y": 13,
- "w": 43,
- "h": 55
- },
- "frame": {
- "x": 87,
- "y": 56,
- "w": 43,
- "h": 55
- }
- },
- {
- "filename": "0008.png",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 80,
- "h": 80
- },
- "spriteSourceSize": {
- "x": 22,
- "y": 13,
- "w": 43,
- "h": 55
- },
- "frame": {
- "x": 87,
- "y": 56,
- "w": 43,
- "h": 55
}
}
]
@@ -246,6 +36,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:9579cbb834c4127f905679ba92633a05:64ed3d991add5e47034b1ca9aad80a4c:887aa14e4a3a3e9141c6ae460f968db1$"
+ "smartupdate": "$TexturePacker:SmartUpdate:ee6cbb7807c28f4b3f12e8dcf4da4888:77056356d7cbf2a4fb20508f50dbd3ce:887aa14e4a3a3e9141c6ae460f968db1$"
}
}
diff --git a/public/images/pokemon/shiny/678.png b/public/images/pokemon/shiny/678.png
index f41018c98..a2ec8d895 100644
Binary files a/public/images/pokemon/shiny/678.png and b/public/images/pokemon/shiny/678.png differ
diff --git a/public/images/pokemon/variant/29.json b/public/images/pokemon/variant/29.json
index 51b8fb15b..1ed0ecf0d 100644
--- a/public/images/pokemon/variant/29.json
+++ b/public/images/pokemon/variant/29.json
@@ -1,5 +1,5 @@
{
- "0": {
+ "1": {
"424284": "6b1524",
"7384ad": "a53038",
"d6d6ff": "f28566",
diff --git a/public/images/pokemon/variant/_masterlist.json b/public/images/pokemon/variant/_masterlist.json
index 1f8b274f5..613ddb73e 100644
--- a/public/images/pokemon/variant/_masterlist.json
+++ b/public/images/pokemon/variant/_masterlist.json
@@ -1,7 +1,7 @@
{
"29": [
- 1,
0,
+ 1,
1
],
"30": [
@@ -2991,6 +2991,16 @@
1,
1
],
+ "306-mega": [
+ 1,
+ 1,
+ 1
+ ],
+ "308-mega": [
+ 0,
+ 1,
+ 1
+ ],
"310-mega": [
0,
1,
@@ -3116,6 +3126,11 @@
1,
1
],
+ "747": [
+ 0,
+ 1,
+ 1
+ ],
"748": [
0,
1,
@@ -3196,6 +3211,16 @@
1,
1
],
+ "850": [
+ 0,
+ 1,
+ 1
+ ],
+ "851": [
+ 0,
+ 1,
+ 1
+ ],
"856": [
0,
1,
@@ -3453,6 +3478,16 @@
1,
1
],
+ "306-mega": [
+ 1,
+ 1,
+ 1
+ ],
+ "308-mega": [
+ 0,
+ 1,
+ 1
+ ],
"310-mega": [
0,
1,
@@ -3578,6 +3613,11 @@
1,
1
],
+ "747": [
+ 0,
+ 2,
+ 2
+ ],
"748": [
0,
1,
@@ -3658,6 +3698,16 @@
1,
1
],
+ "850": [
+ 0,
+ 1,
+ 1
+ ],
+ "851": [
+ 0,
+ 1,
+ 1
+ ],
"856": [
0,
1,
diff --git a/public/images/pokemon/variant/exp/306-mega.json b/public/images/pokemon/variant/exp/306-mega.json
new file mode 100644
index 000000000..40575898b
--- /dev/null
+++ b/public/images/pokemon/variant/exp/306-mega.json
@@ -0,0 +1,47 @@
+{
+ "0": {
+ "000000": "101010",
+ "5a5a62": "4b382a",
+ "ffffff": "fff2e5",
+ "cdcdcd": "cbc4a2",
+ "6a6a6a": "224228",
+ "52524a": "15321e",
+ "8b8b8b": "3e6244",
+ "838394": "a48d76",
+ "a4a4ac": "bca88c",
+ "6abdff": "ff78fa",
+ "acacac": "69ad6c",
+ "9c3141": "9c3141",
+ "de5252": "de5252"
+ },
+ "1": {
+ "000000": "101010",
+ "5a5a62": "2b265d",
+ "ffffff": "cdd9fa",
+ "cdcdcd": "91a1e3",
+ "6a6a6a": "6e1e26",
+ "52524a": "47121b",
+ "8b8b8b": "8b312e",
+ "838394": "3d3c8c",
+ "a4a4ac": "686dc0",
+ "6abdff": "ffcf47",
+ "acacac": "d4857c",
+ "9c3141": "bc2d51",
+ "de5252": "de5291"
+ },
+ "2": {
+ "000000": "101010",
+ "5a5a62": "722f15",
+ "ffffff": "ffcc7d",
+ "cdcdcd": "d48e3c",
+ "6a6a6a": "1d365e",
+ "52524a": "0e213a",
+ "8b8b8b": "385594",
+ "838394": "833d19",
+ "a4a4ac": "a45f34",
+ "6abdff": "2aebcf",
+ "acacac": "7d95bf",
+ "9c3141": "9c3141",
+ "de5252": "de5252"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/308-mega.json b/public/images/pokemon/variant/exp/308-mega.json
new file mode 100644
index 000000000..e46ededfc
--- /dev/null
+++ b/public/images/pokemon/variant/exp/308-mega.json
@@ -0,0 +1,36 @@
+{
+ "1": {
+ "aca4ac": "a58291",
+ "52414a": "432641",
+ "ffffff": "fff4db",
+ "000000": "101010",
+ "83414a": "59141d",
+ "e6738b": "a53835",
+ "ee9ca4": "a53835",
+ "b44a5a": "83272c",
+ "c5c5c5": "b5969a",
+ "a47329": "722966",
+ "f6de83": "ee9bd5",
+ "eebd5a": "ce5cb6",
+ "dedede": "e0cdd9",
+ "0a7ba2": "efa360",
+ "45bade": "efa360"
+ },
+ "2": {
+ "aca4ac": "6c7d9e",
+ "52414a": "1f344a",
+ "ffffff": "c4dff1",
+ "000000": "101010",
+ "83414a": "461f5d",
+ "e6738b": "7d5187",
+ "ee9ca4": "7d5187",
+ "b44a5a": "633971",
+ "c5c5c5": "8aacd2",
+ "a47329": "205a9e",
+ "f6de83": "5abbef",
+ "eebd5a": "3a8dca",
+ "dedede": "c4dff1",
+ "0a7ba2": "3dc7b6",
+ "45bade": "3dc7b6"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/747.json b/public/images/pokemon/variant/exp/747.json
new file mode 100644
index 000000000..f9ed1405e
--- /dev/null
+++ b/public/images/pokemon/variant/exp/747.json
@@ -0,0 +1,30 @@
+{
+ "1": {
+ "b67e32": "614da4",
+ "6f3878": "9b6459",
+ "f3e07c": "e3e2ff",
+ "b687bc": "edd5ca",
+ "d1ac1b": "aca5f3",
+ "8d5b9e": "d29784",
+ "070707": "101010",
+ "394f7e": "490a26",
+ "d7a8d3": "a21f90",
+ "6291b3": "b24b34",
+ "9fd5d2": "e07b53",
+ "ffffff": "fdfdfd"
+ },
+ "2": {
+ "b67e32": "9f4354",
+ "6f3878": "113c3a",
+ "f3e07c": "ffebed",
+ "b687bc": "2b6157",
+ "d1ac1b": "efa2ad",
+ "8d5b9e": "1c524b",
+ "070707": "101010",
+ "394f7e": "186443",
+ "d7a8d3": "ff3f5a",
+ "6291b3": "359d5d",
+ "9fd5d2": "5bd97f",
+ "ffffff": "fdfdfd"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/850.json b/public/images/pokemon/variant/exp/850.json
new file mode 100644
index 000000000..c799fd3ac
--- /dev/null
+++ b/public/images/pokemon/variant/exp/850.json
@@ -0,0 +1,32 @@
+{
+ "1": {
+ "2f1610": "2f1610",
+ "804a3e": "59365d",
+ "bf3922": "117956",
+ "101010": "101010",
+ "ff5839": "35c36c",
+ "5b2f26": "36203c",
+ "681607": "024f2d",
+ "f77c42": "89fbad",
+ "f89e08": "67ef9c",
+ "ff836c": "5ff58e",
+ "ffd901": "c8ffcc",
+ "be5409": "117956",
+ "fbfbfb": "fbfbfb"
+ },
+ "2": {
+ "2f1610": "2f1610",
+ "804a3e": "475294",
+ "bf3922": "ae1165",
+ "101010": "101010",
+ "ff5839": "d73981",
+ "5b2f26": "36426c",
+ "681607": "68063c",
+ "f77c42": "f77c42",
+ "f89e08": "f89e08",
+ "ff836c": "ff836c",
+ "ffd901": "ffc143",
+ "be5409": "be5409",
+ "fbfbfb": "fbfbfb"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/851.json b/public/images/pokemon/variant/exp/851.json
new file mode 100644
index 000000000..827ace8fc
--- /dev/null
+++ b/public/images/pokemon/variant/exp/851.json
@@ -0,0 +1,36 @@
+{
+ "1": {
+ "be5409": "017336",
+ "f89e08": "67ef9c",
+ "ffd901": "c8ffcc",
+ "bf3922": "1a8987",
+ "101010": "101010",
+ "2f1610": "24122b",
+ "5b2f26": "503154",
+ "804a3e": "714272",
+ "681607": "0a5660",
+ "ff5839": "35c3a8",
+ "b96f5d": "ad58ab",
+ "941528": "005f35",
+ "fbfbfb": "fbfbfb",
+ "42221c": "36203c",
+ "000000": "101010"
+ },
+ "2": {
+ "be5409": "890f52",
+ "f89e08": "f36d73",
+ "ffd901": "ffc143",
+ "bf3922": "ae1165",
+ "101010": "101010",
+ "2f1610": "121439",
+ "5b2f26": "36426c",
+ "804a3e": "475294",
+ "681607": "6e0442",
+ "ff5839": "d73981",
+ "b96f5d": "7866cb",
+ "941528": "941528",
+ "fbfbfb": "fbfbfb",
+ "42221c": "222957",
+ "000000": "101010"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/back/306-mega.json b/public/images/pokemon/variant/exp/back/306-mega.json
new file mode 100644
index 000000000..1fa46dae2
--- /dev/null
+++ b/public/images/pokemon/variant/exp/back/306-mega.json
@@ -0,0 +1,38 @@
+{
+ "0": {
+ "393939": "132c1b",
+ "000000": "101010",
+ "838394": "a48d76",
+ "6a6a6a": "325537",
+ "202029": "131d17",
+ "5a5a62": "735c4a",
+ "ffffff": "fff2e5",
+ "52524a": "224228",
+ "cdcdcd": "cbc4a2",
+ "a4a4ac": "b8a88a"
+ },
+ "1": {
+ "393939": "47121b",
+ "000000": "101010",
+ "838394": "686dc0",
+ "6a6a6a": "8b312e",
+ "202029": "350a13",
+ "5a5a62": "374186",
+ "ffffff": "cdd9fa",
+ "52524a": "6e1e26",
+ "cdcdcd": "a5b7ed",
+ "a4a4ac": "91a1e3"
+ },
+ "2": {
+ "393939": "1d365e",
+ "000000": "101010",
+ "838394": "a45f34",
+ "6a6a6a": "385594",
+ "202029": "0e213a",
+ "5a5a62": "7a3a1a",
+ "ffffff": "f1b25e",
+ "52524a": "385594",
+ "cdcdcd": "dd9f57",
+ "a4a4ac": "c18239"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/back/308-mega.json b/public/images/pokemon/variant/exp/back/308-mega.json
new file mode 100644
index 000000000..b13332e51
--- /dev/null
+++ b/public/images/pokemon/variant/exp/back/308-mega.json
@@ -0,0 +1,34 @@
+{
+ "1": {
+ "101010": "101010",
+ "83414a": "59141d",
+ "e6738b": "a53835",
+ "b44a5a": "83272c",
+ "8b838b": "5a4357",
+ "bdafad": "a5829d",
+ "52414a": "432641",
+ "e7e3e7": "e0cdd9",
+ "f9f8f7": "f9f8f7",
+ "a47329": "722966",
+ "eebd5a": "a25793",
+ "f6de83": "ee9bd5",
+ "164b5d": "a6571b",
+ "42a2bd": "efa360"
+ },
+ "2": {
+ "101010": "101010",
+ "83414a": "461f5d",
+ "e6738b": "7d5187",
+ "b44a5a": "633971",
+ "8b838b": "445a7e",
+ "bdafad": "7988a6",
+ "52414a": "1f344a",
+ "e7e3e7": "abb7c6",
+ "f9f8f7": "c4dff1",
+ "a47329": "285181",
+ "eebd5a": "4983ad",
+ "f6de83": "5abbef",
+ "164b5d": "107270",
+ "42a2bd": "3dc7b6"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/back/747_2.json b/public/images/pokemon/variant/exp/back/747_2.json
new file mode 100644
index 000000000..7ddd3d695
--- /dev/null
+++ b/public/images/pokemon/variant/exp/back/747_2.json
@@ -0,0 +1,230 @@
+{
+ "textures": [
+ {
+ "image": "747_2.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 147,
+ "h": 147
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "0005.png",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0007.png",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0006.png",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ },
+ "frame": {
+ "x": 62,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0004.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 61,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 49,
+ "w": 61,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0008.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 61,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 49,
+ "w": 61,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0003.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 0,
+ "w": 59,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 98,
+ "w": 59,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0009.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 0,
+ "w": 59,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 98,
+ "w": 59,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0002.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 2,
+ "y": 0,
+ "w": 57,
+ "h": 49
+ },
+ "frame": {
+ "x": 59,
+ "y": 98,
+ "w": 57,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0010.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 2,
+ "y": 0,
+ "w": 57,
+ "h": 49
+ },
+ "frame": {
+ "x": 59,
+ "y": 98,
+ "w": 57,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0001.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 3,
+ "y": 0,
+ "w": 55,
+ "h": 49
+ },
+ "frame": {
+ "x": 61,
+ "y": 49,
+ "w": 55,
+ "h": 49
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:4319e2c59a85fcb72ddcdb0b4089ac8b:29cb568870b0231298c87d5d39f7b933:b26f7254994561969f00f765318acf1c$"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/back/747_2.png b/public/images/pokemon/variant/exp/back/747_2.png
new file mode 100644
index 000000000..3307b34a3
Binary files /dev/null and b/public/images/pokemon/variant/exp/back/747_2.png differ
diff --git a/public/images/pokemon/variant/exp/back/747_3.json b/public/images/pokemon/variant/exp/back/747_3.json
new file mode 100644
index 000000000..d8eb67611
--- /dev/null
+++ b/public/images/pokemon/variant/exp/back/747_3.json
@@ -0,0 +1,230 @@
+{
+ "textures": [
+ {
+ "image": "747_3.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 147,
+ "h": 147
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "0005.png",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0007.png",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0006.png",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ },
+ "frame": {
+ "x": 62,
+ "y": 0,
+ "w": 62,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0004.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 61,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 49,
+ "w": 61,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0008.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 61,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 49,
+ "w": 61,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0003.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 0,
+ "w": 59,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 98,
+ "w": 59,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0009.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 0,
+ "w": 59,
+ "h": 49
+ },
+ "frame": {
+ "x": 0,
+ "y": 98,
+ "w": 59,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0002.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 2,
+ "y": 0,
+ "w": 57,
+ "h": 49
+ },
+ "frame": {
+ "x": 59,
+ "y": 98,
+ "w": 57,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0010.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 2,
+ "y": 0,
+ "w": 57,
+ "h": 49
+ },
+ "frame": {
+ "x": 59,
+ "y": 98,
+ "w": 57,
+ "h": 49
+ }
+ },
+ {
+ "filename": "0001.png",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 62,
+ "h": 49
+ },
+ "spriteSourceSize": {
+ "x": 3,
+ "y": 0,
+ "w": 55,
+ "h": 49
+ },
+ "frame": {
+ "x": 61,
+ "y": 49,
+ "w": 55,
+ "h": 49
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:4319e2c59a85fcb72ddcdb0b4089ac8b:29cb568870b0231298c87d5d39f7b933:b26f7254994561969f00f765318acf1c$"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/back/747_3.png b/public/images/pokemon/variant/exp/back/747_3.png
new file mode 100644
index 000000000..d6a1d0d6b
Binary files /dev/null and b/public/images/pokemon/variant/exp/back/747_3.png differ
diff --git a/public/images/pokemon/variant/exp/back/748.json b/public/images/pokemon/variant/exp/back/748.json
index 22aa34440..7929514bc 100644
--- a/public/images/pokemon/variant/exp/back/748.json
+++ b/public/images/pokemon/variant/exp/back/748.json
@@ -1,11 +1,11 @@
{
"1": {
- "943732": "490a3c",
+ "943732": "5c075b",
"101010": "101010",
- "f28c4f": "a21f90",
- "e25025": "91138c",
+ "f28c4f": "c639bd",
+ "e25025": "a21f90",
"93d1d7": "df7b52",
- "3a3f6d": "462952",
+ "3a3f6d": "171539",
"6f97c4": "be583d",
"711a6a": "81463e",
"455b85": "892e20",
@@ -15,12 +15,12 @@
"171539": "171539"
},
"2": {
- "943732": "c30e49",
+ "943732": "ac063c",
"101010": "101010",
"f28c4f": "ff3f5a",
"e25025": "e12350",
"93d1d7": "5bd97f",
- "3a3f6d": "862916",
+ "3a3f6d": "490c06",
"6f97c4": "359d5d",
"711a6a": "082b29",
"455b85": "186443",
diff --git a/public/images/pokemon/variant/exp/back/850.json b/public/images/pokemon/variant/exp/back/850.json
new file mode 100644
index 000000000..b5df39e11
--- /dev/null
+++ b/public/images/pokemon/variant/exp/back/850.json
@@ -0,0 +1,28 @@
+{
+ "1": {
+ "bf3922": "35c3a8",
+ "8d3123": "178573",
+ "5b2f26": "59365d",
+ "ff5839": "79f1d2",
+ "804a3e": "8f4b94",
+ "681607": "065b58",
+ "42221c": "36203c",
+ "2f1610": "24122b",
+ "101010": "101010",
+ "be5409": "25a96a",
+ "f89e08": "a3ffb9"
+ },
+ "2": {
+ "bf3922": "d73981",
+ "8d3123": "902962",
+ "5b2f26": "36426c",
+ "ff5839": "f360a3",
+ "804a3e": "7866cb",
+ "681607": "4a1036",
+ "42221c": "222957",
+ "2f1610": "121439",
+ "101010": "101010",
+ "be5409": "be5409",
+ "f89e08": "f89e08"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon/variant/exp/back/851.json b/public/images/pokemon/variant/exp/back/851.json
new file mode 100644
index 000000000..9fca14e5e
--- /dev/null
+++ b/public/images/pokemon/variant/exp/back/851.json
@@ -0,0 +1,34 @@
+{
+ "1": {
+ "be5409": "017336",
+ "f89e08": "67ef9c",
+ "ffd901": "c8ffcc",
+ "5b2f26": "59365d",
+ "b96f5d": "d695d5",
+ "804a3e": "924a91",
+ "8d3123": "056a3b",
+ "bf3922": "0c8c48",
+ "ff5839": "35c36c",
+ "42221c": "36203c",
+ "2f1610": "24122b",
+ "681607": "024f2d",
+ "101010": "101010",
+ "941528": "005f35"
+ },
+ "2": {
+ "be5409": "be5409",
+ "f89e08": "f36d73",
+ "ffd901": "ffc143",
+ "5b2f26": "36426c",
+ "b96f5d": "7866cb",
+ "804a3e": "475294",
+ "8d3123": "ae1165",
+ "bf3922": "d73981",
+ "ff5839": "ff6970",
+ "42221c": "222957",
+ "2f1610": "121439",
+ "681607": "6e0442",
+ "101010": "101010",
+ "941528": "941528"
+ }
+}
\ No newline at end of file
diff --git a/public/images/pokemon_icons_1v.json b/public/images/pokemon_icons_1v.json
index b0d213057..daa3e070e 100644
--- a/public/images/pokemon_icons_1v.json
+++ b/public/images/pokemon_icons_1v.json
@@ -4,8 +4,8 @@
"image": "pokemon_icons_1v.png",
"format": "RGBA8888",
"size": {
- "w": 276,
- "h": 276
+ "w": 277,
+ "h": 277
},
"scale": 1,
"frames": [
@@ -199,7 +199,7 @@
}
},
{
- "filename": "29_2",
+ "filename": "29_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -220,7 +220,7 @@
}
},
{
- "filename": "29_3",
+ "filename": "29_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -241,7 +241,7 @@
}
},
{
- "filename": "35_2",
+ "filename": "29_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -249,7 +249,7 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
+ "x": 10,
"y": 8,
"w": 20,
"h": 21
@@ -262,7 +262,7 @@
}
},
{
- "filename": "35_3",
+ "filename": "35_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -283,7 +283,7 @@
}
},
{
- "filename": "123_1",
+ "filename": "35_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -291,15 +291,36 @@
"h": 30
},
"spriteSourceSize": {
- "x": 10,
+ "x": 11,
"y": 8,
- "w": 21,
+ "w": 20,
"h": 21
},
"frame": {
"x": 20,
"y": 17,
- "w": 21,
+ "w": 20,
+ "h": 21
+ }
+ },
+ {
+ "filename": "118_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 26,
+ "h": 21
+ },
+ "frame": {
+ "x": 40,
+ "y": 20,
+ "w": 26,
"h": 21
}
},
@@ -318,7 +339,7 @@
"h": 21
},
"frame": {
- "x": 41,
+ "x": 66,
"y": 20,
"w": 26,
"h": 21
@@ -339,12 +360,33 @@
"h": 21
},
"frame": {
- "x": 67,
+ "x": 92,
"y": 20,
"w": 26,
"h": 21
}
},
+ {
+ "filename": "123_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 118,
+ "y": 20,
+ "w": 21,
+ "h": 21
+ }
+ },
{
"filename": "123_2",
"rotated": false,
@@ -360,7 +402,7 @@
"h": 21
},
"frame": {
- "x": 93,
+ "x": 139,
"y": 20,
"w": 21,
"h": 21
@@ -381,7 +423,7 @@
"h": 21
},
"frame": {
- "x": 114,
+ "x": 160,
"y": 20,
"w": 21,
"h": 21
@@ -402,7 +444,7 @@
"h": 21
},
"frame": {
- "x": 135,
+ "x": 181,
"y": 20,
"w": 31,
"h": 21
@@ -423,8 +465,8 @@
"h": 21
},
"frame": {
- "x": 166,
- "y": 20,
+ "x": 212,
+ "y": 21,
"w": 31,
"h": 21
}
@@ -444,7 +486,7 @@
"h": 21
},
"frame": {
- "x": 197,
+ "x": 243,
"y": 21,
"w": 31,
"h": 21
@@ -465,8 +507,8 @@
"h": 22
},
"frame": {
- "x": 228,
- "y": 21,
+ "x": 0,
+ "y": 38,
"w": 23,
"h": 22
}
@@ -486,8 +528,8 @@
"h": 22
},
"frame": {
- "x": 251,
- "y": 21,
+ "x": 23,
+ "y": 41,
"w": 23,
"h": 22
}
@@ -507,8 +549,8 @@
"h": 22
},
"frame": {
- "x": 0,
- "y": 38,
+ "x": 46,
+ "y": 41,
"w": 23,
"h": 22
}
@@ -528,7 +570,7 @@
"h": 22
},
"frame": {
- "x": 23,
+ "x": 69,
"y": 41,
"w": 24,
"h": 22
@@ -549,7 +591,7 @@
"h": 22
},
"frame": {
- "x": 47,
+ "x": 93,
"y": 41,
"w": 24,
"h": 22
@@ -570,7 +612,7 @@
"h": 22
},
"frame": {
- "x": 71,
+ "x": 117,
"y": 41,
"w": 24,
"h": 22
@@ -591,7 +633,7 @@
"h": 22
},
"frame": {
- "x": 95,
+ "x": 141,
"y": 41,
"w": 24,
"h": 22
@@ -612,7 +654,7 @@
"h": 22
},
"frame": {
- "x": 119,
+ "x": 165,
"y": 41,
"w": 24,
"h": 22
@@ -633,7 +675,7 @@
"h": 22
},
"frame": {
- "x": 143,
+ "x": 189,
"y": 41,
"w": 21,
"h": 22
@@ -654,8 +696,8 @@
"h": 22
},
"frame": {
- "x": 164,
- "y": 41,
+ "x": 210,
+ "y": 42,
"w": 21,
"h": 22
}
@@ -675,54 +717,12 @@
"h": 22
},
"frame": {
- "x": 185,
+ "x": 231,
"y": 42,
"w": 21,
"h": 22
}
},
- {
- "filename": "119_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 7,
- "w": 27,
- "h": 22
- },
- "frame": {
- "x": 206,
- "y": 43,
- "w": 27,
- "h": 22
- }
- },
- {
- "filename": "119_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 7,
- "w": 27,
- "h": 22
- },
- "frame": {
- "x": 233,
- "y": 43,
- "w": 27,
- "h": 22
- }
- },
{
"filename": "52_1",
"rotated": false,
@@ -737,6 +737,27 @@
"w": 23,
"h": 23
},
+ "frame": {
+ "x": 252,
+ "y": 42,
+ "w": 23,
+ "h": 23
+ }
+ },
+ {
+ "filename": "52_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 23,
+ "h": 23
+ },
"frame": {
"x": 0,
"y": 60,
@@ -745,7 +766,7 @@
}
},
{
- "filename": "119_3",
+ "filename": "119_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -765,6 +786,48 @@
"h": 22
}
},
+ {
+ "filename": "119_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 7,
+ "w": 27,
+ "h": 22
+ },
+ "frame": {
+ "x": 50,
+ "y": 63,
+ "w": 27,
+ "h": 22
+ }
+ },
+ {
+ "filename": "119_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 7,
+ "w": 27,
+ "h": 22
+ },
+ "frame": {
+ "x": 77,
+ "y": 63,
+ "w": 27,
+ "h": 22
+ }
+ },
{
"filename": "144_1",
"rotated": false,
@@ -780,7 +843,7 @@
"h": 22
},
"frame": {
- "x": 50,
+ "x": 104,
"y": 63,
"w": 29,
"h": 22
@@ -801,7 +864,7 @@
"h": 22
},
"frame": {
- "x": 79,
+ "x": 133,
"y": 63,
"w": 29,
"h": 22
@@ -822,33 +885,12 @@
"h": 22
},
"frame": {
- "x": 108,
+ "x": 162,
"y": 63,
"w": 29,
"h": 22
}
},
- {
- "filename": "52_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 23,
- "h": 23
- },
- "frame": {
- "x": 137,
- "y": 63,
- "w": 23,
- "h": 23
- }
- },
{
"filename": "52_3",
"rotated": false,
@@ -864,30 +906,9 @@
"h": 23
},
"frame": {
- "x": 160,
- "y": 63,
- "w": 23,
- "h": 23
- }
- },
- {
- "filename": "135_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 6,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 183,
+ "x": 191,
"y": 64,
- "w": 22,
+ "w": 23,
"h": 23
}
},
@@ -906,8 +927,8 @@
"h": 23
},
"frame": {
- "x": 205,
- "y": 65,
+ "x": 214,
+ "y": 64,
"w": 25,
"h": 23
}
@@ -927,35 +948,14 @@
"h": 23
},
"frame": {
- "x": 230,
+ "x": 239,
"y": 65,
"w": 25,
"h": 23
}
},
{
- "filename": "30_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 21,
- "h": 24
- },
- "frame": {
- "x": 255,
- "y": 65,
- "w": 21,
- "h": 24
- }
- },
- {
- "filename": "135_2",
+ "filename": "135_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1075,11 +1075,32 @@
},
"frame": {
"x": 124,
- "y": 86,
+ "y": 85,
"w": 25,
"h": 23
}
},
+ {
+ "filename": "135_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 6,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 149,
+ "y": 85,
+ "w": 22,
+ "h": 23
+ }
+ },
{
"filename": "135_3",
"rotated": false,
@@ -1095,8 +1116,8 @@
"h": 23
},
"frame": {
- "x": 149,
- "y": 86,
+ "x": 171,
+ "y": 87,
"w": 22,
"h": 23
}
@@ -1116,12 +1137,33 @@
"h": 23
},
"frame": {
- "x": 171,
+ "x": 193,
"y": 87,
"w": 25,
"h": 23
}
},
+ {
+ "filename": "30_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 21,
+ "h": 24
+ },
+ "frame": {
+ "x": 218,
+ "y": 87,
+ "w": 21,
+ "h": 24
+ }
+ },
{
"filename": "136_2",
"rotated": false,
@@ -1137,28 +1179,7 @@
"h": 23
},
"frame": {
- "x": 196,
- "y": 88,
- "w": 25,
- "h": 23
- }
- },
- {
- "filename": "136_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 6,
- "w": 25,
- "h": 23
- },
- "frame": {
- "x": 221,
+ "x": 239,
"y": 88,
"w": 25,
"h": 23
@@ -1179,14 +1200,14 @@
"h": 24
},
"frame": {
- "x": 246,
- "y": 89,
+ "x": 0,
+ "y": 106,
"w": 21,
"h": 24
}
},
{
- "filename": "36_2",
+ "filename": "136_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1194,16 +1215,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 22,
- "h": 25
+ "x": 8,
+ "y": 6,
+ "w": 25,
+ "h": 23
},
"frame": {
- "x": 0,
- "y": 106,
- "w": 22,
- "h": 25
+ "x": 21,
+ "y": 108,
+ "w": 25,
+ "h": 23
}
},
{
@@ -1221,7 +1242,7 @@
"h": 24
},
"frame": {
- "x": 22,
+ "x": 46,
"y": 108,
"w": 28,
"h": 24
@@ -1242,7 +1263,7 @@
"h": 24
},
"frame": {
- "x": 50,
+ "x": 74,
"y": 108,
"w": 28,
"h": 24
@@ -1263,7 +1284,7 @@
"h": 24
},
"frame": {
- "x": 78,
+ "x": 102,
"y": 108,
"w": 28,
"h": 24
@@ -1284,8 +1305,8 @@
"h": 24
},
"frame": {
- "x": 106,
- "y": 109,
+ "x": 130,
+ "y": 108,
"w": 24,
"h": 24
}
@@ -1304,27 +1325,6 @@
"w": 24,
"h": 24
},
- "frame": {
- "x": 130,
- "y": 109,
- "w": 24,
- "h": 24
- }
- },
- {
- "filename": "47_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 24,
- "h": 24
- },
"frame": {
"x": 154,
"y": 110,
@@ -1332,6 +1332,27 @@
"h": 24
}
},
+ {
+ "filename": "47_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 24,
+ "h": 24
+ },
+ "frame": {
+ "x": 178,
+ "y": 110,
+ "w": 24,
+ "h": 24
+ }
+ },
{
"filename": "53_1",
"rotated": false,
@@ -1347,7 +1368,7 @@
"h": 24
},
"frame": {
- "x": 178,
+ "x": 202,
"y": 111,
"w": 25,
"h": 24
@@ -1368,7 +1389,7 @@
"h": 24
},
"frame": {
- "x": 203,
+ "x": 227,
"y": 111,
"w": 25,
"h": 24
@@ -1389,33 +1410,12 @@
"h": 24
},
"frame": {
- "x": 228,
- "y": 113,
+ "x": 252,
+ "y": 111,
"w": 25,
"h": 24
}
},
- {
- "filename": "36_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 22,
- "h": 25
- },
- "frame": {
- "x": 253,
- "y": 113,
- "w": 22,
- "h": 25
- }
- },
{
"filename": "83_2",
"rotated": false,
@@ -1432,7 +1432,7 @@
},
"frame": {
"x": 0,
- "y": 132,
+ "y": 131,
"w": 28,
"h": 24
}
@@ -1516,11 +1516,32 @@
},
"frame": {
"x": 104,
- "y": 133,
+ "y": 132,
"w": 27,
"h": 24
}
},
+ {
+ "filename": "36_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 22,
+ "h": 25
+ },
+ "frame": {
+ "x": 131,
+ "y": 132,
+ "w": 22,
+ "h": 25
+ }
+ },
{
"filename": "149_3",
"rotated": false,
@@ -1536,12 +1557,33 @@
"h": 24
},
"frame": {
- "x": 131,
+ "x": 153,
"y": 134,
"w": 27,
"h": 24
}
},
+ {
+ "filename": "36_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 22,
+ "h": 25
+ },
+ "frame": {
+ "x": 180,
+ "y": 134,
+ "w": 22,
+ "h": 25
+ }
+ },
{
"filename": "31_1",
"rotated": false,
@@ -1557,7 +1599,7 @@
"h": 25
},
"frame": {
- "x": 158,
+ "x": 202,
"y": 135,
"w": 25,
"h": 25
@@ -1578,7 +1620,7 @@
"h": 25
},
"frame": {
- "x": 183,
+ "x": 227,
"y": 135,
"w": 25,
"h": 25
@@ -1599,12 +1641,33 @@
"h": 25
},
"frame": {
- "x": 208,
- "y": 137,
+ "x": 252,
+ "y": 135,
"w": 25,
"h": 25
}
},
+ {
+ "filename": "77_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 0,
+ "y": 155,
+ "w": 26,
+ "h": 25
+ }
+ },
{
"filename": "71_2",
"rotated": false,
@@ -1620,8 +1683,8 @@
"h": 25
},
"frame": {
- "x": 233,
- "y": 138,
+ "x": 26,
+ "y": 156,
"w": 30,
"h": 25
}
@@ -1641,33 +1704,12 @@
"h": 25
},
"frame": {
- "x": 0,
+ "x": 56,
"y": 156,
"w": 30,
"h": 25
}
},
- {
- "filename": "77_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 30,
- "y": 156,
- "w": 26,
- "h": 25
- }
- },
{
"filename": "77_3",
"rotated": false,
@@ -1683,33 +1725,12 @@
"h": 25
},
"frame": {
- "x": 56,
+ "x": 86,
"y": 156,
"w": 26,
"h": 25
}
},
- {
- "filename": "150_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 4,
- "w": 22,
- "h": 25
- },
- "frame": {
- "x": 82,
- "y": 156,
- "w": 22,
- "h": 25
- }
- },
{
"filename": "86_1",
"rotated": false,
@@ -1725,7 +1746,7 @@
"h": 25
},
"frame": {
- "x": 104,
+ "x": 112,
"y": 157,
"w": 27,
"h": 25
@@ -1746,7 +1767,7 @@
"h": 25
},
"frame": {
- "x": 131,
+ "x": 139,
"y": 158,
"w": 27,
"h": 25
@@ -1767,33 +1788,12 @@
"h": 25
},
"frame": {
- "x": 158,
- "y": 160,
+ "x": 166,
+ "y": 159,
"w": 27,
"h": 25
}
},
- {
- "filename": "150_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 4,
- "w": 22,
- "h": 25
- },
- "frame": {
- "x": 185,
- "y": 160,
- "w": 22,
- "h": 25
- }
- },
{
"filename": "87_1",
"rotated": false,
@@ -1809,8 +1809,8 @@
"h": 25
},
"frame": {
- "x": 207,
- "y": 163,
+ "x": 193,
+ "y": 160,
"w": 27,
"h": 25
}
@@ -1830,8 +1830,8 @@
"h": 25
},
"frame": {
- "x": 234,
- "y": 163,
+ "x": 220,
+ "y": 160,
"w": 27,
"h": 25
}
@@ -1851,12 +1851,54 @@
"h": 25
},
"frame": {
- "x": 0,
- "y": 181,
+ "x": 247,
+ "y": 160,
"w": 27,
"h": 25
}
},
+ {
+ "filename": "150_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 4,
+ "w": 22,
+ "h": 25
+ },
+ "frame": {
+ "x": 0,
+ "y": 180,
+ "w": 22,
+ "h": 25
+ }
+ },
+ {
+ "filename": "150_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 4,
+ "w": 22,
+ "h": 25
+ },
+ "frame": {
+ "x": 22,
+ "y": 181,
+ "w": 22,
+ "h": 25
+ }
+ },
{
"filename": "94_1",
"rotated": false,
@@ -1872,7 +1914,7 @@
"h": 26
},
"frame": {
- "x": 27,
+ "x": 44,
"y": 181,
"w": 26,
"h": 26
@@ -1893,7 +1935,7 @@
"h": 26
},
"frame": {
- "x": 53,
+ "x": 70,
"y": 181,
"w": 26,
"h": 26
@@ -1914,7 +1956,7 @@
"h": 26
},
"frame": {
- "x": 79,
+ "x": 96,
"y": 182,
"w": 26,
"h": 26
@@ -1935,8 +1977,8 @@
"h": 27
},
"frame": {
- "x": 105,
- "y": 182,
+ "x": 122,
+ "y": 183,
"w": 25,
"h": 27
}
@@ -1956,8 +1998,8 @@
"h": 27
},
"frame": {
- "x": 130,
- "y": 183,
+ "x": 147,
+ "y": 184,
"w": 25,
"h": 27
}
@@ -1977,7 +2019,7 @@
"h": 28
},
"frame": {
- "x": 155,
+ "x": 172,
"y": 185,
"w": 31,
"h": 28
@@ -1998,8 +2040,8 @@
"h": 28
},
"frame": {
- "x": 186,
- "y": 188,
+ "x": 203,
+ "y": 185,
"w": 31,
"h": 28
}
@@ -2019,54 +2061,12 @@
"h": 28
},
"frame": {
- "x": 217,
- "y": 188,
+ "x": 234,
+ "y": 185,
"w": 32,
"h": 28
}
},
- {
- "filename": "150-mega-x_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 1,
- "w": 23,
- "h": 28
- },
- "frame": {
- "x": 249,
- "y": 188,
- "w": 23,
- "h": 28
- }
- },
- {
- "filename": "150-mega-x_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 1,
- "w": 23,
- "h": 28
- },
- "frame": {
- "x": 0,
- "y": 206,
- "w": 23,
- "h": 28
- }
- },
{
"filename": "93_2",
"rotated": false,
@@ -2082,8 +2082,8 @@
"h": 28
},
"frame": {
- "x": 23,
- "y": 207,
+ "x": 0,
+ "y": 206,
"w": 32,
"h": 28
}
@@ -2103,12 +2103,54 @@
"h": 28
},
"frame": {
- "x": 55,
- "y": 208,
+ "x": 32,
+ "y": 207,
"w": 32,
"h": 28
}
},
+ {
+ "filename": "150-mega-x_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 1,
+ "w": 23,
+ "h": 28
+ },
+ "frame": {
+ "x": 64,
+ "y": 207,
+ "w": 23,
+ "h": 28
+ }
+ },
+ {
+ "filename": "150-mega-x_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 1,
+ "w": 23,
+ "h": 28
+ },
+ "frame": {
+ "x": 87,
+ "y": 208,
+ "w": 23,
+ "h": 28
+ }
+ },
{
"filename": "131-gigantamax_2",
"rotated": false,
@@ -2124,28 +2166,7 @@
"h": 29
},
"frame": {
- "x": 87,
- "y": 209,
- "w": 33,
- "h": 29
- }
- },
- {
- "filename": "131-gigantamax_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 0,
- "w": 33,
- "h": 29
- },
- "frame": {
- "x": 120,
+ "x": 110,
"y": 210,
"w": 33,
"h": 29
@@ -2166,12 +2187,33 @@
"h": 30
},
"frame": {
- "x": 153,
- "y": 213,
+ "x": 143,
+ "y": 211,
"w": 25,
"h": 30
}
},
+ {
+ "filename": "131-gigantamax_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 0,
+ "w": 33,
+ "h": 29
+ },
+ "frame": {
+ "x": 168,
+ "y": 213,
+ "w": 33,
+ "h": 29
+ }
+ },
{
"filename": "52-gigantamax_2",
"rotated": false,
@@ -2187,8 +2229,8 @@
"h": 30
},
"frame": {
- "x": 178,
- "y": 216,
+ "x": 201,
+ "y": 213,
"w": 25,
"h": 30
}
@@ -2208,14 +2250,14 @@
"h": 30
},
"frame": {
- "x": 203,
- "y": 216,
+ "x": 226,
+ "y": 213,
"w": 25,
"h": 30
}
},
{
- "filename": "94-gigantamax_1",
+ "filename": "150-mega-y_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -2223,20 +2265,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 3,
+ "x": 9,
"y": 0,
- "w": 34,
+ "w": 22,
"h": 30
},
"frame": {
- "x": 228,
- "y": 216,
- "w": 34,
+ "x": 251,
+ "y": 213,
+ "w": 22,
"h": 30
}
},
{
- "filename": "150-mega-y_2",
+ "filename": "150-mega-y_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -2257,7 +2299,7 @@
}
},
{
- "filename": "150-mega-y_3",
+ "filename": "94-gigantamax_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -2265,15 +2307,15 @@
"h": 30
},
"spriteSourceSize": {
- "x": 9,
+ "x": 3,
"y": 0,
- "w": 22,
+ "w": 34,
"h": 30
},
"frame": {
"x": 22,
"y": 235,
- "w": 22,
+ "w": 34,
"h": 30
}
},
@@ -2292,7 +2334,7 @@
"h": 30
},
"frame": {
- "x": 44,
+ "x": 56,
"y": 236,
"w": 34,
"h": 30
@@ -2313,8 +2355,8 @@
"h": 30
},
"frame": {
- "x": 78,
- "y": 238,
+ "x": 90,
+ "y": 239,
"w": 34,
"h": 30
}
@@ -2334,8 +2376,8 @@
"h": 30
},
"frame": {
- "x": 112,
- "y": 239,
+ "x": 124,
+ "y": 241,
"w": 36,
"h": 30
}
@@ -2355,8 +2397,8 @@
"h": 30
},
"frame": {
- "x": 148,
- "y": 246,
+ "x": 160,
+ "y": 242,
"w": 36,
"h": 30
}
@@ -2376,8 +2418,8 @@
"h": 30
},
"frame": {
- "x": 184,
- "y": 246,
+ "x": 196,
+ "y": 243,
"w": 36,
"h": 30
}
@@ -2388,6 +2430,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:ff8be1f0e8905cf57ed1af85a597a5be:63904eb65167f759420c4e4a5c2dc80c:2fc2d7db306a93e9369e20846ccef45c$"
+ "smartupdate": "$TexturePacker:SmartUpdate:429d90e6d126fba8a16e4abf1b881671:64ab0e3b54dd7c7e4e6017f2657aa1f5:2fc2d7db306a93e9369e20846ccef45c$"
}
}
diff --git a/public/images/pokemon_icons_1v.png b/public/images/pokemon_icons_1v.png
index 508d2411b..48eb12fe1 100644
Binary files a/public/images/pokemon_icons_1v.png and b/public/images/pokemon_icons_1v.png differ
diff --git a/public/images/pokemon_icons_3v.json b/public/images/pokemon_icons_3v.json
index c3b04ae5f..af6a027ac 100644
--- a/public/images/pokemon_icons_3v.json
+++ b/public/images/pokemon_icons_3v.json
@@ -4,8 +4,8 @@
"image": "pokemon_icons_3v.png",
"format": "RGBA8888",
"size": {
- "w": 264,
- "h": 264
+ "w": 274,
+ "h": 274
},
"scale": 1,
"frames": [
@@ -345,6 +345,27 @@
"h": 28
}
},
+ {
+ "filename": "376_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 6,
+ "w": 34,
+ "h": 24
+ },
+ "frame": {
+ "x": 0,
+ "y": 250,
+ "w": 34,
+ "h": 24
+ }
+ },
{
"filename": "308-mega_2",
"rotated": false,
@@ -451,7 +472,7 @@
}
},
{
- "filename": "304_1",
+ "filename": "351-rainy_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -459,20 +480,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
- "y": 15,
- "w": 18,
- "h": 14
+ "x": 12,
+ "y": 6,
+ "w": 16,
+ "h": 23
},
"frame": {
- "x": 0,
- "y": 250,
- "w": 18,
- "h": 14
+ "x": 258,
+ "y": 0,
+ "w": 16,
+ "h": 23
}
},
{
- "filename": "304_2",
+ "filename": "351-rainy_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -480,16 +501,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
- "y": 15,
- "w": 18,
- "h": 14
+ "x": 12,
+ "y": 6,
+ "w": 16,
+ "h": 23
},
"frame": {
- "x": 18,
- "y": 250,
- "w": 18,
- "h": 14
+ "x": 258,
+ "y": 23,
+ "w": 16,
+ "h": 23
}
},
{
@@ -514,7 +535,7 @@
}
},
{
- "filename": "376_2",
+ "filename": "376_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -535,7 +556,7 @@
}
},
{
- "filename": "376_3",
+ "filename": "321_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -543,16 +564,37 @@
"h": 30
},
"spriteSourceSize": {
- "x": 4,
- "y": 6,
- "w": 34,
- "h": 24
+ "x": 5,
+ "y": 4,
+ "w": 32,
+ "h": 25
},
"frame": {
"x": 146,
"y": 23,
- "w": 34,
- "h": 24
+ "w": 32,
+ "h": 25
+ }
+ },
+ {
+ "filename": "321_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 32,
+ "h": 25
+ },
+ "frame": {
+ "x": 178,
+ "y": 23,
+ "w": 32,
+ "h": 25
}
},
{
@@ -570,8 +612,8 @@
"h": 26
},
"frame": {
- "x": 180,
- "y": 23,
+ "x": 73,
+ "y": 49,
"w": 31,
"h": 26
}
@@ -591,12 +633,96 @@
"h": 26
},
"frame": {
- "x": 73,
- "y": 49,
+ "x": 210,
+ "y": 26,
"w": 31,
"h": 26
}
},
+ {
+ "filename": "358_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 7,
+ "w": 17,
+ "h": 23
+ },
+ "frame": {
+ "x": 241,
+ "y": 26,
+ "w": 17,
+ "h": 23
+ }
+ },
+ {
+ "filename": "351-rainy_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 16,
+ "h": 23
+ },
+ "frame": {
+ "x": 258,
+ "y": 46,
+ "w": 16,
+ "h": 23
+ }
+ },
+ {
+ "filename": "358_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 7,
+ "w": 17,
+ "h": 23
+ },
+ "frame": {
+ "x": 241,
+ "y": 49,
+ "w": 17,
+ "h": 23
+ }
+ },
+ {
+ "filename": "280_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 9,
+ "w": 16,
+ "h": 20
+ },
+ "frame": {
+ "x": 258,
+ "y": 69,
+ "w": 16,
+ "h": 20
+ }
+ },
{
"filename": "306_3",
"rotated": false,
@@ -612,54 +738,12 @@
"h": 26
},
"frame": {
- "x": 211,
- "y": 26,
+ "x": 73,
+ "y": 75,
"w": 31,
"h": 26
}
},
- {
- "filename": "334_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 22,
- "h": 26
- },
- "frame": {
- "x": 242,
- "y": 26,
- "w": 22,
- "h": 26
- }
- },
- {
- "filename": "282-mega_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 104,
- "y": 49,
- "w": 28,
- "h": 26
- }
- },
{
"filename": "475-mega_3",
"rotated": false,
@@ -675,35 +759,14 @@
"h": 28
},
"frame": {
- "x": 132,
- "y": 47,
+ "x": 104,
+ "y": 49,
"w": 27,
"h": 28
}
},
{
- "filename": "308_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 2,
- "w": 19,
- "h": 27
- },
- "frame": {
- "x": 159,
- "y": 47,
- "w": 19,
- "h": 27
- }
- },
- {
- "filename": "330_2",
+ "filename": "282-mega_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -712,36 +775,15 @@
},
"spriteSourceSize": {
"x": 7,
- "y": 4,
- "w": 29,
- "h": 25
+ "y": 3,
+ "w": 28,
+ "h": 26
},
"frame": {
- "x": 178,
- "y": 49,
- "w": 29,
- "h": 25
- }
- },
- {
- "filename": "330_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 29,
- "h": 25
- },
- "frame": {
- "x": 207,
- "y": 52,
- "w": 29,
- "h": 25
+ "x": 104,
+ "y": 77,
+ "w": 28,
+ "h": 26
}
},
{
@@ -759,54 +801,12 @@
"h": 26
},
"frame": {
- "x": 236,
- "y": 52,
+ "x": 131,
+ "y": 48,
"w": 28,
"h": 26
}
},
- {
- "filename": "334-mega_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 29,
- "h": 25
- },
- "frame": {
- "x": 73,
- "y": 75,
- "w": 29,
- "h": 25
- }
- },
- {
- "filename": "334-mega_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 29,
- "h": 25
- },
- "frame": {
- "x": 102,
- "y": 75,
- "w": 29,
- "h": 25
- }
- },
{
"filename": "282_2",
"rotated": false,
@@ -822,8 +822,8 @@
"h": 26
},
"frame": {
- "x": 131,
- "y": 75,
+ "x": 159,
+ "y": 48,
"w": 28,
"h": 26
}
@@ -843,54 +843,12 @@
"h": 26
},
"frame": {
- "x": 159,
+ "x": 132,
"y": 74,
"w": 28,
"h": 26
}
},
- {
- "filename": "281_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 20,
- "h": 25
- },
- "frame": {
- "x": 187,
- "y": 74,
- "w": 20,
- "h": 25
- }
- },
- {
- "filename": "375_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 29,
- "h": 23
- },
- "frame": {
- "x": 207,
- "y": 77,
- "w": 29,
- "h": 23
- }
- },
{
"filename": "310-mega_2",
"rotated": false,
@@ -906,14 +864,266 @@
"h": 26
},
"frame": {
- "x": 236,
- "y": 78,
+ "x": 160,
+ "y": 74,
"w": 28,
"h": 26
}
},
{
- "filename": "375_3",
+ "filename": "334_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 22,
+ "h": 26
+ },
+ "frame": {
+ "x": 187,
+ "y": 48,
+ "w": 22,
+ "h": 26
+ }
+ },
+ {
+ "filename": "330_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 29,
+ "h": 25
+ },
+ "frame": {
+ "x": 209,
+ "y": 52,
+ "w": 29,
+ "h": 25
+ }
+ },
+ {
+ "filename": "281_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 20,
+ "h": 25
+ },
+ "frame": {
+ "x": 188,
+ "y": 74,
+ "w": 20,
+ "h": 25
+ }
+ },
+ {
+ "filename": "330_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 29,
+ "h": 25
+ },
+ "frame": {
+ "x": 208,
+ "y": 77,
+ "w": 29,
+ "h": 25
+ }
+ },
+ {
+ "filename": "281_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 20,
+ "h": 25
+ },
+ "frame": {
+ "x": 238,
+ "y": 72,
+ "w": 20,
+ "h": 25
+ }
+ },
+ {
+ "filename": "280_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 9,
+ "w": 16,
+ "h": 20
+ },
+ "frame": {
+ "x": 258,
+ "y": 89,
+ "w": 16,
+ "h": 20
+ }
+ },
+ {
+ "filename": "309_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 12,
+ "w": 21,
+ "h": 17
+ },
+ "frame": {
+ "x": 237,
+ "y": 97,
+ "w": 21,
+ "h": 17
+ }
+ },
+ {
+ "filename": "334-mega_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 29,
+ "h": 25
+ },
+ "frame": {
+ "x": 132,
+ "y": 100,
+ "w": 29,
+ "h": 25
+ }
+ },
+ {
+ "filename": "310-mega_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 28,
+ "h": 26
+ },
+ "frame": {
+ "x": 161,
+ "y": 100,
+ "w": 28,
+ "h": 26
+ }
+ },
+ {
+ "filename": "308_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 2,
+ "w": 19,
+ "h": 27
+ },
+ "frame": {
+ "x": 189,
+ "y": 99,
+ "w": 19,
+ "h": 27
+ }
+ },
+ {
+ "filename": "334-mega_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 29,
+ "h": 25
+ },
+ "frame": {
+ "x": 208,
+ "y": 102,
+ "w": 29,
+ "h": 25
+ }
+ },
+ {
+ "filename": "263_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 11,
+ "w": 24,
+ "h": 18
+ },
+ "frame": {
+ "x": 237,
+ "y": 114,
+ "w": 24,
+ "h": 18
+ }
+ },
+ {
+ "filename": "375_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -933,153 +1143,6 @@
"h": 23
}
},
- {
- "filename": "310-mega_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 32,
- "y": 215,
- "w": 28,
- "h": 26
- }
- },
- {
- "filename": "303_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 28,
- "h": 23
- },
- "frame": {
- "x": 36,
- "y": 241,
- "w": 28,
- "h": 23
- }
- },
- {
- "filename": "334_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 22,
- "h": 26
- },
- "frame": {
- "x": 60,
- "y": 215,
- "w": 22,
- "h": 26
- }
- },
- {
- "filename": "303_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 28,
- "h": 23
- },
- "frame": {
- "x": 64,
- "y": 241,
- "w": 28,
- "h": 23
- }
- },
- {
- "filename": "303_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 28,
- "h": 23
- },
- "frame": {
- "x": 62,
- "y": 192,
- "w": 28,
- "h": 23
- }
- },
- {
- "filename": "281_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 20,
- "h": 25
- },
- "frame": {
- "x": 82,
- "y": 215,
- "w": 20,
- "h": 25
- }
- },
- {
- "filename": "351-rainy_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
- },
- "frame": {
- "x": 92,
- "y": 240,
- "w": 16,
- "h": 23
- }
- },
{
"filename": "286_2",
"rotated": false,
@@ -1095,8 +1158,8 @@
"h": 27
},
"frame": {
- "x": 65,
- "y": 106,
+ "x": 32,
+ "y": 215,
"w": 25,
"h": 27
}
@@ -1116,14 +1179,14 @@
"h": 27
},
"frame": {
- "x": 90,
- "y": 100,
+ "x": 34,
+ "y": 242,
"w": 25,
"h": 27
}
},
{
- "filename": "351-rainy_2",
+ "filename": "308_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1131,121 +1194,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
+ "x": 11,
+ "y": 2,
+ "w": 19,
+ "h": 27
},
"frame": {
- "x": 115,
- "y": 100,
- "w": 16,
- "h": 23
- }
- },
- {
- "filename": "329_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 7,
- "w": 27,
- "h": 22
- },
- "frame": {
- "x": 131,
- "y": 101,
- "w": 27,
- "h": 22
- }
- },
- {
- "filename": "290_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 13,
- "w": 25,
- "h": 16
- },
- "frame": {
- "x": 90,
- "y": 127,
- "w": 25,
- "h": 16
- }
- },
- {
- "filename": "329_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 7,
- "w": 27,
- "h": 22
- },
- "frame": {
- "x": 115,
- "y": 123,
- "w": 27,
- "h": 22
- }
- },
- {
- "filename": "264_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 142,
- "y": 123,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "290_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 13,
- "w": 25,
- "h": 16
- },
- "frame": {
- "x": 65,
- "y": 133,
- "w": 25,
- "h": 16
+ "x": 57,
+ "y": 215,
+ "w": 19,
+ "h": 27
}
},
{
@@ -1263,14 +1221,14 @@
"h": 27
},
"frame": {
- "x": 64,
- "y": 149,
+ "x": 59,
+ "y": 242,
"w": 24,
"h": 27
}
},
{
- "filename": "290_3",
+ "filename": "279_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1279,17 +1237,290 @@
},
"spriteSourceSize": {
"x": 7,
- "y": 13,
+ "y": 6,
"w": 25,
+ "h": 23
+ },
+ "frame": {
+ "x": 62,
+ "y": 192,
+ "w": 25,
+ "h": 23
+ }
+ },
+ {
+ "filename": "334_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 22,
+ "h": 26
+ },
+ "frame": {
+ "x": 76,
+ "y": 215,
+ "w": 22,
+ "h": 26
+ }
+ },
+ {
+ "filename": "310_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 22,
+ "h": 25
+ },
+ "frame": {
+ "x": 83,
+ "y": 241,
+ "w": 22,
+ "h": 25
+ }
+ },
+ {
+ "filename": "329_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 27,
+ "h": 22
+ },
+ "frame": {
+ "x": 105,
+ "y": 103,
+ "w": 27,
+ "h": 22
+ }
+ },
+ {
+ "filename": "375_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 29,
+ "h": 23
+ },
+ "frame": {
+ "x": 68,
+ "y": 101,
+ "w": 29,
+ "h": 23
+ }
+ },
+ {
+ "filename": "278_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 13,
+ "w": 28,
"h": 16
},
"frame": {
- "x": 64,
- "y": 176,
- "w": 25,
+ "x": 65,
+ "y": 124,
+ "w": 28,
"h": 16
}
},
+ {
+ "filename": "303_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 28,
+ "h": 23
+ },
+ "frame": {
+ "x": 64,
+ "y": 140,
+ "w": 28,
+ "h": 23
+ }
+ },
+ {
+ "filename": "303_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 28,
+ "h": 23
+ },
+ "frame": {
+ "x": 64,
+ "y": 163,
+ "w": 28,
+ "h": 23
+ }
+ },
+ {
+ "filename": "278_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 13,
+ "w": 28,
+ "h": 16
+ },
+ "frame": {
+ "x": 93,
+ "y": 125,
+ "w": 28,
+ "h": 16
+ }
+ },
+ {
+ "filename": "303_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 28,
+ "h": 23
+ },
+ "frame": {
+ "x": 92,
+ "y": 141,
+ "w": 28,
+ "h": 23
+ }
+ },
+ {
+ "filename": "329_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 27,
+ "h": 22
+ },
+ "frame": {
+ "x": 92,
+ "y": 164,
+ "w": 27,
+ "h": 22
+ }
+ },
+ {
+ "filename": "278_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 13,
+ "w": 28,
+ "h": 16
+ },
+ "frame": {
+ "x": 121,
+ "y": 125,
+ "w": 28,
+ "h": 16
+ }
+ },
+ {
+ "filename": "279_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 6,
+ "w": 25,
+ "h": 23
+ },
+ "frame": {
+ "x": 120,
+ "y": 141,
+ "w": 25,
+ "h": 23
+ }
+ },
+ {
+ "filename": "279_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 6,
+ "w": 25,
+ "h": 23
+ },
+ "frame": {
+ "x": 119,
+ "y": 164,
+ "w": 25,
+ "h": 23
+ }
+ },
{
"filename": "291_1",
"rotated": false,
@@ -1305,8 +1536,8 @@
"h": 22
},
"frame": {
- "x": 90,
- "y": 143,
+ "x": 87,
+ "y": 186,
"w": 25,
"h": 22
}
@@ -1326,12 +1557,117 @@
"h": 22
},
"frame": {
- "x": 115,
- "y": 145,
+ "x": 112,
+ "y": 187,
"w": 25,
"h": 22
}
},
+ {
+ "filename": "264_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 137,
+ "y": 187,
+ "w": 24,
+ "h": 22
+ }
+ },
+ {
+ "filename": "358_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 7,
+ "w": 17,
+ "h": 23
+ },
+ "frame": {
+ "x": 144,
+ "y": 164,
+ "w": 17,
+ "h": 23
+ }
+ },
+ {
+ "filename": "320_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 9,
+ "w": 26,
+ "h": 20
+ },
+ "frame": {
+ "x": 149,
+ "y": 126,
+ "w": 26,
+ "h": 20
+ }
+ },
+ {
+ "filename": "263_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 11,
+ "w": 24,
+ "h": 18
+ },
+ "frame": {
+ "x": 145,
+ "y": 146,
+ "w": 24,
+ "h": 18
+ }
+ },
+ {
+ "filename": "320_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 9,
+ "w": 26,
+ "h": 20
+ },
+ "frame": {
+ "x": 175,
+ "y": 126,
+ "w": 26,
+ "h": 20
+ }
+ },
{
"filename": "291_3",
"rotated": false,
@@ -1347,75 +1683,12 @@
"h": 22
},
"frame": {
- "x": 140,
- "y": 145,
+ "x": 169,
+ "y": 146,
"w": 25,
"h": 22
}
},
- {
- "filename": "308_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 2,
- "w": 19,
- "h": 27
- },
- "frame": {
- "x": 89,
- "y": 165,
- "w": 19,
- "h": 27
- }
- },
- {
- "filename": "358_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 7,
- "w": 17,
- "h": 23
- },
- "frame": {
- "x": 90,
- "y": 192,
- "w": 17,
- "h": 23
- }
- },
- {
- "filename": "310_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 22,
- "h": 25
- },
- "frame": {
- "x": 108,
- "y": 167,
- "w": 22,
- "h": 25
- }
- },
{
"filename": "310_3",
"rotated": false,
@@ -1431,8 +1704,8 @@
"h": 25
},
"frame": {
- "x": 130,
- "y": 167,
+ "x": 161,
+ "y": 168,
"w": 22,
"h": 25
}
@@ -1452,33 +1725,12 @@
"h": 22
},
"frame": {
- "x": 107,
- "y": 192,
+ "x": 161,
+ "y": 193,
"w": 24,
"h": 22
}
},
- {
- "filename": "352_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 131,
- "y": 192,
- "w": 22,
- "h": 22
- }
- },
{
"filename": "351-snowy_1",
"rotated": false,
@@ -1494,8 +1746,8 @@
"h": 25
},
"frame": {
- "x": 152,
- "y": 167,
+ "x": 183,
+ "y": 168,
"w": 19,
"h": 25
}
@@ -1515,12 +1767,54 @@
"h": 22
},
"frame": {
- "x": 153,
- "y": 192,
+ "x": 185,
+ "y": 193,
"w": 19,
"h": 22
}
},
+ {
+ "filename": "305_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 10,
+ "w": 25,
+ "h": 19
+ },
+ "frame": {
+ "x": 201,
+ "y": 127,
+ "w": 25,
+ "h": 19
+ }
+ },
+ {
+ "filename": "385_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 194,
+ "y": 146,
+ "w": 24,
+ "h": 22
+ }
+ },
{
"filename": "351-snowy_2",
"rotated": false,
@@ -1536,117 +1830,12 @@
"h": 25
},
"frame": {
- "x": 102,
- "y": 215,
+ "x": 202,
+ "y": 168,
"w": 19,
"h": 25
}
},
- {
- "filename": "385_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 121,
- "y": 214,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "385_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 145,
- "y": 214,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "351-rainy_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
- },
- "frame": {
- "x": 108,
- "y": 240,
- "w": 16,
- "h": 23
- }
- },
- {
- "filename": "385_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 124,
- "y": 236,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "352_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 22,
- "h": 22
- },
- "frame": {
- "x": 148,
- "y": 236,
- "w": 22,
- "h": 22
- }
- },
{
"filename": "307_3",
"rotated": false,
@@ -1662,12 +1851,33 @@
"h": 22
},
"frame": {
- "x": 158,
- "y": 101,
+ "x": 204,
+ "y": 193,
"w": 19,
"h": 22
}
},
+ {
+ "filename": "351-sunny_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 20,
+ "h": 22
+ },
+ "frame": {
+ "x": 218,
+ "y": 146,
+ "w": 20,
+ "h": 22
+ }
+ },
{
"filename": "351-snowy_3",
"rotated": false,
@@ -1683,75 +1893,12 @@
"h": 25
},
"frame": {
- "x": 166,
- "y": 123,
+ "x": 221,
+ "y": 168,
"w": 19,
"h": 25
}
},
- {
- "filename": "305_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 10,
- "w": 25,
- "h": 19
- },
- "frame": {
- "x": 165,
- "y": 148,
- "w": 25,
- "h": 19
- }
- },
- {
- "filename": "351-sunny_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 20,
- "h": 22
- },
- "frame": {
- "x": 171,
- "y": 167,
- "w": 20,
- "h": 22
- }
- },
- {
- "filename": "358_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 7,
- "w": 17,
- "h": 23
- },
- "frame": {
- "x": 177,
- "y": 100,
- "w": 17,
- "h": 23
- }
- },
{
"filename": "351-sunny_2",
"rotated": false,
@@ -1767,14 +1914,14 @@
"h": 22
},
"frame": {
- "x": 172,
- "y": 189,
+ "x": 223,
+ "y": 193,
"w": 20,
"h": 22
}
},
{
- "filename": "358_3",
+ "filename": "304_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1782,16 +1929,163 @@
"h": 30
},
"spriteSourceSize": {
- "x": 12,
- "y": 7,
- "w": 17,
- "h": 23
+ "x": 11,
+ "y": 15,
+ "w": 18,
+ "h": 14
},
"frame": {
- "x": 185,
- "y": 123,
- "w": 17,
- "h": 23
+ "x": 226,
+ "y": 132,
+ "w": 18,
+ "h": 14
+ }
+ },
+ {
+ "filename": "285_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 12,
+ "w": 20,
+ "h": 17
+ },
+ "frame": {
+ "x": 244,
+ "y": 132,
+ "w": 20,
+ "h": 17
+ }
+ },
+ {
+ "filename": "305_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 10,
+ "w": 25,
+ "h": 19
+ },
+ "frame": {
+ "x": 238,
+ "y": 149,
+ "w": 25,
+ "h": 19
+ }
+ },
+ {
+ "filename": "385_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 240,
+ "y": 168,
+ "w": 24,
+ "h": 22
+ }
+ },
+ {
+ "filename": "352_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 243,
+ "y": 190,
+ "w": 22,
+ "h": 22
+ }
+ },
+ {
+ "filename": "385_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 98,
+ "y": 209,
+ "w": 24,
+ "h": 22
+ }
+ },
+ {
+ "filename": "305_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 10,
+ "w": 25,
+ "h": 19
+ },
+ "frame": {
+ "x": 122,
+ "y": 209,
+ "w": 25,
+ "h": 19
+ }
+ },
+ {
+ "filename": "351-sunny_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 20,
+ "h": 22
+ },
+ "frame": {
+ "x": 105,
+ "y": 231,
+ "w": 20,
+ "h": 22
}
},
{
@@ -1809,12 +2103,33 @@
"h": 21
},
"frame": {
- "x": 190,
- "y": 146,
+ "x": 105,
+ "y": 253,
"w": 22,
"h": 21
}
},
+ {
+ "filename": "352_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 22,
+ "h": 22
+ },
+ "frame": {
+ "x": 125,
+ "y": 228,
+ "w": 22,
+ "h": 22
+ }
+ },
{
"filename": "352_3",
"rotated": false,
@@ -1830,8 +2145,8 @@
"h": 22
},
"frame": {
- "x": 191,
- "y": 167,
+ "x": 127,
+ "y": 250,
"w": 22,
"h": 22
}
@@ -1851,159 +2166,12 @@
"h": 21
},
"frame": {
- "x": 192,
- "y": 189,
+ "x": 147,
+ "y": 215,
"w": 22,
"h": 21
}
},
- {
- "filename": "305_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 10,
- "w": 25,
- "h": 19
- },
- "frame": {
- "x": 194,
- "y": 100,
- "w": 25,
- "h": 19
- }
- },
- {
- "filename": "280_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 9,
- "w": 16,
- "h": 20
- },
- "frame": {
- "x": 219,
- "y": 100,
- "w": 16,
- "h": 20
- }
- },
- {
- "filename": "305_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 10,
- "w": 25,
- "h": 19
- },
- "frame": {
- "x": 235,
- "y": 104,
- "w": 25,
- "h": 19
- }
- },
- {
- "filename": "351_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 7,
- "w": 15,
- "h": 22
- },
- "frame": {
- "x": 202,
- "y": 119,
- "w": 15,
- "h": 22
- }
- },
- {
- "filename": "280_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 9,
- "w": 16,
- "h": 20
- },
- "frame": {
- "x": 217,
- "y": 120,
- "w": 16,
- "h": 20
- }
- },
- {
- "filename": "263_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 11,
- "w": 24,
- "h": 18
- },
- "frame": {
- "x": 233,
- "y": 123,
- "w": 24,
- "h": 18
- }
- },
- {
- "filename": "351-sunny_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 20,
- "h": 22
- },
- "frame": {
- "x": 169,
- "y": 214,
- "w": 20,
- "h": 22
- }
- },
{
"filename": "292_3",
"rotated": false,
@@ -2019,33 +2187,12 @@
"h": 21
},
"frame": {
- "x": 170,
- "y": 236,
+ "x": 169,
+ "y": 215,
"w": 22,
"h": 21
}
},
- {
- "filename": "263_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 11,
- "w": 24,
- "h": 18
- },
- "frame": {
- "x": 192,
- "y": 210,
- "w": 24,
- "h": 18
- }
- },
{
"filename": "328_2",
"rotated": false,
@@ -2061,33 +2208,12 @@
"h": 21
},
"frame": {
- "x": 192,
- "y": 228,
+ "x": 191,
+ "y": 215,
"w": 21,
"h": 21
}
},
- {
- "filename": "304_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 15,
- "w": 18,
- "h": 14
- },
- "frame": {
- "x": 192,
- "y": 249,
- "w": 18,
- "h": 14
- }
- },
{
"filename": "328_3",
"rotated": false,
@@ -2103,12 +2229,96 @@
"h": 21
},
"frame": {
- "x": 213,
- "y": 228,
+ "x": 212,
+ "y": 215,
"w": 21,
"h": 21
}
},
+ {
+ "filename": "304_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 15,
+ "w": 18,
+ "h": 14
+ },
+ "frame": {
+ "x": 147,
+ "y": 236,
+ "w": 18,
+ "h": 14
+ }
+ },
+ {
+ "filename": "290_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 13,
+ "w": 25,
+ "h": 16
+ },
+ "frame": {
+ "x": 165,
+ "y": 236,
+ "w": 25,
+ "h": 16
+ }
+ },
+ {
+ "filename": "290_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 13,
+ "w": 25,
+ "h": 16
+ },
+ "frame": {
+ "x": 190,
+ "y": 236,
+ "w": 25,
+ "h": 16
+ }
+ },
+ {
+ "filename": "351_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 7,
+ "w": 15,
+ "h": 22
+ },
+ "frame": {
+ "x": 149,
+ "y": 250,
+ "w": 15,
+ "h": 22
+ }
+ },
{
"filename": "351_3",
"rotated": false,
@@ -2124,12 +2334,54 @@
"h": 22
},
"frame": {
- "x": 212,
- "y": 141,
+ "x": 164,
+ "y": 252,
"w": 15,
"h": 22
}
},
+ {
+ "filename": "290_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 13,
+ "w": 25,
+ "h": 16
+ },
+ "frame": {
+ "x": 179,
+ "y": 252,
+ "w": 25,
+ "h": 16
+ }
+ },
+ {
+ "filename": "285_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 12,
+ "w": 20,
+ "h": 17
+ },
+ "frame": {
+ "x": 215,
+ "y": 236,
+ "w": 20,
+ "h": 17
+ }
+ },
{
"filename": "374_2",
"rotated": false,
@@ -2145,8 +2397,8 @@
"h": 19
},
"frame": {
- "x": 227,
- "y": 141,
+ "x": 233,
+ "y": 215,
"w": 21,
"h": 19
}
@@ -2166,12 +2418,33 @@
"h": 19
},
"frame": {
- "x": 213,
- "y": 163,
+ "x": 235,
+ "y": 234,
"w": 21,
"h": 19
}
},
+ {
+ "filename": "309_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 12,
+ "w": 21,
+ "h": 17
+ },
+ "frame": {
+ "x": 204,
+ "y": 253,
+ "w": 21,
+ "h": 17
+ }
+ },
{
"filename": "333_2",
"rotated": false,
@@ -2187,8 +2460,8 @@
"h": 18
},
"frame": {
- "x": 214,
- "y": 182,
+ "x": 225,
+ "y": 253,
"w": 21,
"h": 18
}
@@ -2208,14 +2481,14 @@
"h": 18
},
"frame": {
- "x": 234,
- "y": 160,
+ "x": 246,
+ "y": 253,
"w": 21,
"h": 18
}
},
{
- "filename": "285_2",
+ "filename": "304_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -2223,79 +2496,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 10,
- "y": 12,
- "w": 20,
- "h": 17
+ "x": 11,
+ "y": 15,
+ "w": 18,
+ "h": 14
},
"frame": {
- "x": 235,
- "y": 178,
- "w": 20,
- "h": 17
- }
- },
- {
- "filename": "285_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 12,
- "w": 20,
- "h": 17
- },
- "frame": {
- "x": 216,
- "y": 200,
- "w": 20,
- "h": 17
- }
- },
- {
- "filename": "309_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 12,
- "w": 21,
- "h": 17
- },
- "frame": {
- "x": 236,
- "y": 195,
- "w": 21,
- "h": 17
- }
- },
- {
- "filename": "309_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 12,
- "w": 21,
- "h": 17
- },
- "frame": {
- "x": 236,
+ "x": 256,
"y": 212,
- "w": 21,
- "h": 17
+ "w": 18,
+ "h": 14
}
}
]
@@ -2304,6 +2514,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:1d5a45dd6af00e9ce100072d2cdd8e0b:9b35c744f171ab066952e4db2a5fb647:039b026190bf1878996b3e03190bcdf3$"
+ "smartupdate": "$TexturePacker:SmartUpdate:e451b3ae25328f4f0164e64e2faa5df4:c4df08d9a082c9097775d80382fd25da:039b026190bf1878996b3e03190bcdf3$"
}
}
diff --git a/public/images/pokemon_icons_3v.png b/public/images/pokemon_icons_3v.png
index 98e7c1a3b..d21f90524 100644
Binary files a/public/images/pokemon_icons_3v.png and b/public/images/pokemon_icons_3v.png differ
diff --git a/public/images/pokemon_icons_4v.json b/public/images/pokemon_icons_4v.json
index cbf00598f..bd10e099a 100644
--- a/public/images/pokemon_icons_4v.json
+++ b/public/images/pokemon_icons_4v.json
@@ -4,8 +4,8 @@
"image": "pokemon_icons_4v.png",
"format": "RGBA8888",
"size": {
- "w": 239,
- "h": 239
+ "w": 242,
+ "h": 242
},
"scale": 1,
"frames": [
@@ -198,6 +198,48 @@
"h": 26
}
},
+ {
+ "filename": "485_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 35,
+ "h": 22
+ },
+ "frame": {
+ "x": 132,
+ "y": 0,
+ "w": 35,
+ "h": 22
+ }
+ },
+ {
+ "filename": "485_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 35,
+ "h": 22
+ },
+ "frame": {
+ "x": 167,
+ "y": 0,
+ "w": 35,
+ "h": 22
+ }
+ },
{
"filename": "487-origin_2",
"rotated": false,
@@ -261,48 +303,6 @@
"h": 24
}
},
- {
- "filename": "445_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 132,
- "y": 0,
- "w": 31,
- "h": 24
- }
- },
- {
- "filename": "445_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 163,
- "y": 0,
- "w": 31,
- "h": 24
- }
- },
{
"filename": "475-mega_2",
"rotated": false,
@@ -324,27 +324,6 @@
"h": 28
}
},
- {
- "filename": "481_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 194,
- "y": 0,
- "w": 31,
- "h": 24
- }
- },
{
"filename": "488_2",
"rotated": false,
@@ -367,7 +346,7 @@
}
},
{
- "filename": "481_2",
+ "filename": "447_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -375,7 +354,70 @@
"h": 30
},
"spriteSourceSize": {
- "x": 6,
+ "x": 11,
+ "y": 9,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 0,
+ "y": 222,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "445_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 31,
+ "h": 24
+ },
+ "frame": {
+ "x": 202,
+ "y": 0,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "447_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 9,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 20,
+ "y": 222,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "445_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
"y": 5,
"w": 31,
"h": 24
@@ -388,7 +430,7 @@
}
},
{
- "filename": "481_3",
+ "filename": "481_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -408,6 +450,69 @@
"h": 24
}
},
+ {
+ "filename": "481_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 31,
+ "h": 24
+ },
+ "frame": {
+ "x": 32,
+ "y": 76,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "481_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 31,
+ "h": 24
+ },
+ "frame": {
+ "x": 63,
+ "y": 76,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "468_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 30,
+ "h": 21
+ },
+ "frame": {
+ "x": 32,
+ "y": 100,
+ "w": 30,
+ "h": 21
+ }
+ },
{
"filename": "488_3",
"rotated": false,
@@ -423,12 +528,33 @@
"h": 28
},
"frame": {
- "x": 32,
- "y": 76,
+ "x": 30,
+ "y": 121,
"w": 27,
"h": 28
}
},
+ {
+ "filename": "468_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 30,
+ "h": 21
+ },
+ "frame": {
+ "x": 62,
+ "y": 100,
+ "w": 30,
+ "h": 21
+ }
+ },
{
"filename": "471_1",
"rotated": false,
@@ -444,8 +570,8 @@
"h": 25
},
"frame": {
- "x": 59,
- "y": 76,
+ "x": 57,
+ "y": 121,
"w": 29,
"h": 25
}
@@ -465,8 +591,8 @@
"h": 24
},
"frame": {
- "x": 32,
- "y": 104,
+ "x": 30,
+ "y": 149,
"w": 28,
"h": 24
}
@@ -485,72 +611,9 @@
"w": 29,
"h": 25
},
- "frame": {
- "x": 30,
- "y": 128,
- "w": 29,
- "h": 25
- }
- },
- {
- "filename": "482_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 60,
- "y": 101,
- "w": 28,
- "h": 26
- }
- },
- {
- "filename": "468_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 30,
- "h": 21
- },
- "frame": {
- "x": 30,
- "y": 153,
- "w": 30,
- "h": 21
- }
- },
- {
- "filename": "471_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 4,
- "w": 29,
- "h": 25
- },
"frame": {
"x": 27,
- "y": 174,
+ "y": 173,
"w": 29,
"h": 25
}
@@ -571,11 +634,53 @@
},
"frame": {
"x": 27,
- "y": 199,
+ "y": 198,
"w": 28,
"h": 24
}
},
+ {
+ "filename": "447_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 9,
+ "w": 20,
+ "h": 20
+ },
+ "frame": {
+ "x": 40,
+ "y": 222,
+ "w": 20,
+ "h": 20
+ }
+ },
+ {
+ "filename": "482_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 28,
+ "h": 26
+ },
+ "frame": {
+ "x": 58,
+ "y": 146,
+ "w": 28,
+ "h": 26
+ }
+ },
{
"filename": "429_1",
"rotated": false,
@@ -591,8 +696,8 @@
"h": 29
},
"frame": {
- "x": 88,
- "y": 76,
+ "x": 86,
+ "y": 121,
"w": 21,
"h": 29
}
@@ -612,12 +717,33 @@
"h": 24
},
"frame": {
- "x": 95,
- "y": 52,
+ "x": 86,
+ "y": 150,
"w": 24,
"h": 24
}
},
+ {
+ "filename": "433_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 8,
+ "w": 25,
+ "h": 21
+ },
+ "frame": {
+ "x": 92,
+ "y": 100,
+ "w": 25,
+ "h": 21
+ }
+ },
{
"filename": "400_3",
"rotated": false,
@@ -633,12 +759,33 @@
"h": 24
},
"frame": {
- "x": 88,
- "y": 105,
+ "x": 94,
+ "y": 76,
"w": 24,
"h": 24
}
},
+ {
+ "filename": "470_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 27,
+ "h": 24
+ },
+ "frame": {
+ "x": 95,
+ "y": 52,
+ "w": 27,
+ "h": 24
+ }
+ },
{
"filename": "429_2",
"rotated": false,
@@ -654,8 +801,8 @@
"h": 29
},
"frame": {
- "x": 109,
- "y": 76,
+ "x": 107,
+ "y": 121,
"w": 21,
"h": 29
}
@@ -675,14 +822,14 @@
"h": 26
},
"frame": {
- "x": 119,
- "y": 50,
+ "x": 110,
+ "y": 150,
"w": 26,
"h": 26
}
},
{
- "filename": "429_3",
+ "filename": "468_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -690,16 +837,37 @@
"h": 30
},
"spriteSourceSize": {
- "x": 9,
- "y": 1,
- "w": 21,
- "h": 29
+ "x": 6,
+ "y": 6,
+ "w": 30,
+ "h": 21
},
"frame": {
- "x": 130,
- "y": 76,
- "w": 21,
- "h": 29
+ "x": 132,
+ "y": 22,
+ "w": 30,
+ "h": 21
+ }
+ },
+ {
+ "filename": "471_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 4,
+ "w": 29,
+ "h": 25
+ },
+ "frame": {
+ "x": 162,
+ "y": 22,
+ "w": 29,
+ "h": 25
}
},
{
@@ -717,91 +885,7 @@
"h": 24
},
"frame": {
- "x": 112,
- "y": 105,
- "w": 28,
- "h": 24
- }
- },
- {
- "filename": "482_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 132,
- "y": 24,
- "w": 28,
- "h": 26
- }
- },
- {
- "filename": "482_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 160,
- "y": 24,
- "w": 28,
- "h": 26
- }
- },
- {
- "filename": "426_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 26,
- "h": 26
- },
- "frame": {
- "x": 145,
- "y": 50,
- "w": 26,
- "h": 26
- }
- },
- {
- "filename": "480_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 5,
- "w": 28,
- "h": 24
- },
- "frame": {
- "x": 188,
+ "x": 191,
"y": 24,
"w": 28,
"h": 24
@@ -822,14 +906,14 @@
"h": 24
},
"frame": {
- "x": 216,
+ "x": 219,
"y": 24,
"w": 23,
"h": 24
}
},
{
- "filename": "475_2",
+ "filename": "480_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -838,36 +922,15 @@
},
"spriteSourceSize": {
"x": 9,
- "y": 2,
- "w": 24,
- "h": 27
+ "y": 5,
+ "w": 28,
+ "h": 24
},
"frame": {
- "x": 151,
- "y": 76,
- "w": 24,
- "h": 27
- }
- },
- {
- "filename": "448-mega_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 3,
- "w": 21,
- "h": 26
- },
- "frame": {
- "x": 171,
- "y": 50,
- "w": 21,
- "h": 26
+ "x": 131,
+ "y": 43,
+ "w": 28,
+ "h": 24
}
},
{
@@ -885,14 +948,14 @@
"h": 24
},
"frame": {
- "x": 192,
- "y": 48,
+ "x": 159,
+ "y": 47,
"w": 28,
"h": 24
}
},
{
- "filename": "448-mega_2",
+ "filename": "482_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -900,100 +963,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
+ "x": 9,
"y": 3,
- "w": 21,
+ "w": 28,
"h": 26
},
"frame": {
- "x": 175,
- "y": 76,
- "w": 21,
- "h": 26
- }
- },
- {
- "filename": "470_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 27,
- "h": 24
- },
- "frame": {
- "x": 196,
- "y": 72,
- "w": 27,
- "h": 24
- }
- },
- {
- "filename": "425_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 220,
+ "x": 187,
"y": 48,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "440_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 8,
- "w": 16,
- "h": 21
- },
- "frame": {
- "x": 223,
- "y": 72,
- "w": 16,
- "h": 21
- }
- },
- {
- "filename": "440_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 8,
- "w": 16,
- "h": 21
- },
- "frame": {
- "x": 223,
- "y": 93,
- "w": 16,
- "h": 21
+ "w": 28,
+ "h": 26
}
},
{
@@ -1011,75 +990,12 @@
"h": 24
},
"frame": {
- "x": 196,
- "y": 96,
+ "x": 215,
+ "y": 48,
"w": 27,
"h": 24
}
},
- {
- "filename": "440_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 8,
- "w": 16,
- "h": 21
- },
- "frame": {
- "x": 223,
- "y": 114,
- "w": 16,
- "h": 21
- }
- },
- {
- "filename": "443_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 175,
- "y": 102,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "490_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 151,
- "y": 103,
- "w": 24,
- "h": 22
- }
- },
{
"filename": "470_3",
"rotated": false,
@@ -1095,35 +1011,14 @@
"h": 24
},
"frame": {
- "x": 196,
- "y": 120,
+ "x": 215,
+ "y": 72,
"w": 27,
"h": 24
}
},
{
- "filename": "443_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 175,
- "y": 123,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "448-mega_3",
+ "filename": "433_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1132,14 +1027,119 @@
},
"spriteSourceSize": {
"x": 11,
- "y": 3,
+ "y": 8,
+ "w": 25,
+ "h": 21
+ },
+ "frame": {
+ "x": 117,
+ "y": 100,
+ "w": 25,
+ "h": 21
+ }
+ },
+ {
+ "filename": "429_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 1,
"w": 21,
+ "h": 29
+ },
+ "frame": {
+ "x": 128,
+ "y": 121,
+ "w": 21,
+ "h": 29
+ }
+ },
+ {
+ "filename": "492-sky_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 23,
+ "h": 24
+ },
+ "frame": {
+ "x": 118,
+ "y": 76,
+ "w": 23,
+ "h": 24
+ }
+ },
+ {
+ "filename": "426_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 3,
+ "w": 26,
"h": 26
},
"frame": {
- "x": 56,
- "y": 174,
- "w": 21,
+ "x": 136,
+ "y": 150,
+ "w": 26,
+ "h": 26
+ }
+ },
+ {
+ "filename": "448_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 6,
+ "w": 18,
+ "h": 23
+ },
+ "frame": {
+ "x": 141,
+ "y": 67,
+ "w": 18,
+ "h": 23
+ }
+ },
+ {
+ "filename": "482_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 28,
+ "h": 26
+ },
+ "frame": {
+ "x": 159,
+ "y": 71,
+ "w": 28,
"h": 26
}
},
@@ -1158,14 +1158,14 @@
"h": 23
},
"frame": {
- "x": 55,
- "y": 200,
+ "x": 187,
+ "y": 74,
"w": 25,
"h": 23
}
},
{
- "filename": "433_1",
+ "filename": "425_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1173,41 +1173,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
- "y": 8,
- "w": 25,
- "h": 21
- },
- "frame": {
- "x": 60,
- "y": 127,
- "w": 25,
- "h": 21
- }
- },
- {
- "filename": "468_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
+ "x": 12,
"y": 6,
- "w": 30,
- "h": 21
+ "w": 17,
+ "h": 24
},
"frame": {
- "x": 85,
- "y": 129,
- "w": 30,
- "h": 21
+ "x": 142,
+ "y": 90,
+ "w": 17,
+ "h": 24
}
},
{
- "filename": "433_2",
+ "filename": "433_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1221,8 +1200,8 @@
"h": 21
},
"frame": {
- "x": 115,
- "y": 129,
+ "x": 159,
+ "y": 97,
"w": 25,
"h": 21
}
@@ -1242,14 +1221,14 @@
"h": 23
},
"frame": {
- "x": 60,
- "y": 148,
+ "x": 184,
+ "y": 97,
"w": 25,
"h": 23
}
},
{
- "filename": "468_3",
+ "filename": "475_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1257,37 +1236,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 30,
- "h": 21
+ "x": 9,
+ "y": 2,
+ "w": 24,
+ "h": 27
},
"frame": {
- "x": 85,
- "y": 150,
- "w": 30,
- "h": 21
- }
- },
- {
- "filename": "433_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 8,
- "w": 25,
- "h": 21
- },
- "frame": {
- "x": 115,
- "y": 150,
- "w": 25,
- "h": 21
+ "x": 149,
+ "y": 118,
+ "w": 24,
+ "h": 27
}
},
{
@@ -1305,138 +1263,12 @@
"h": 23
},
"frame": {
- "x": 77,
- "y": 171,
+ "x": 173,
+ "y": 120,
"w": 25,
"h": 23
}
},
- {
- "filename": "490_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 102,
- "y": 171,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "492-sky_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 23,
- "h": 24
- },
- "frame": {
- "x": 80,
- "y": 194,
- "w": 23,
- "h": 24
- }
- },
- {
- "filename": "443_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 21,
- "h": 21
- },
- "frame": {
- "x": 80,
- "y": 218,
- "w": 21,
- "h": 21
- }
- },
- {
- "filename": "442_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 7,
- "w": 23,
- "h": 22
- },
- "frame": {
- "x": 103,
- "y": 193,
- "w": 23,
- "h": 22
- }
- },
- {
- "filename": "427_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 5,
- "w": 20,
- "h": 24
- },
- "frame": {
- "x": 103,
- "y": 215,
- "w": 20,
- "h": 24
- }
- },
- {
- "filename": "427_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 5,
- "w": 20,
- "h": 24
- },
- "frame": {
- "x": 123,
- "y": 215,
- "w": 20,
- "h": 24
- }
- },
{
"filename": "425_3",
"rotated": false,
@@ -1452,14 +1284,14 @@
"h": 24
},
"frame": {
- "x": 126,
- "y": 171,
+ "x": 198,
+ "y": 120,
"w": 17,
"h": 24
}
},
{
- "filename": "447_1",
+ "filename": "448-mega_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1468,120 +1300,15 @@
},
"spriteSourceSize": {
"x": 11,
- "y": 9,
- "w": 20,
- "h": 20
+ "y": 3,
+ "w": 21,
+ "h": 26
},
"frame": {
- "x": 126,
- "y": 195,
- "w": 20,
- "h": 20
- }
- },
- {
- "filename": "494_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 20,
- "h": 24
- },
- "frame": {
- "x": 143,
- "y": 215,
- "w": 20,
- "h": 24
- }
- },
- {
- "filename": "490_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 140,
- "y": 125,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "494_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 20,
- "h": 24
- },
- "frame": {
- "x": 140,
- "y": 147,
- "w": 20,
- "h": 24
- }
- },
- {
- "filename": "448_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 6,
- "w": 18,
- "h": 23
- },
- "frame": {
- "x": 143,
- "y": 171,
- "w": 18,
- "h": 23
- }
- },
- {
- "filename": "447_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 9,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 146,
- "y": 194,
- "w": 20,
- "h": 20
+ "x": 162,
+ "y": 145,
+ "w": 21,
+ "h": 26
}
},
{
@@ -1599,14 +1326,14 @@
"h": 23
},
"frame": {
- "x": 160,
- "y": 147,
+ "x": 209,
+ "y": 97,
"w": 18,
"h": 23
}
},
{
- "filename": "442_3",
+ "filename": "427_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1614,15 +1341,141 @@
"h": 30
},
"spriteSourceSize": {
- "x": 8,
+ "x": 11,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 215,
+ "y": 120,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "448-mega_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 3,
+ "w": 21,
+ "h": 26
+ },
+ "frame": {
+ "x": 183,
+ "y": 144,
+ "w": 21,
+ "h": 26
+ }
+ },
+ {
+ "filename": "448-mega_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 3,
+ "w": 21,
+ "h": 26
+ },
+ "frame": {
+ "x": 204,
+ "y": 144,
+ "w": 21,
+ "h": 26
+ }
+ },
+ {
+ "filename": "440_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 8,
+ "w": 16,
+ "h": 21
+ },
+ "frame": {
+ "x": 225,
+ "y": 144,
+ "w": 16,
+ "h": 21
+ }
+ },
+ {
+ "filename": "427_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 55,
+ "y": 198,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "494_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 56,
+ "y": 174,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "490_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
"y": 7,
- "w": 23,
+ "w": 24,
"h": 22
},
"frame": {
- "x": 178,
- "y": 144,
- "w": 23,
+ "x": 76,
+ "y": 174,
+ "w": 24,
"h": 22
}
},
@@ -1641,50 +1494,8 @@
"h": 19
},
"frame": {
- "x": 201,
- "y": 144,
- "w": 22,
- "h": 19
- }
- },
- {
- "filename": "448_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 6,
- "w": 18,
- "h": 23
- },
- "frame": {
- "x": 161,
- "y": 170,
- "w": 18,
- "h": 23
- }
- },
- {
- "filename": "458_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 9,
- "w": 22,
- "h": 19
- },
- "frame": {
- "x": 179,
- "y": 166,
+ "x": 60,
+ "y": 222,
"w": 22,
"h": 19
}
@@ -1704,33 +1515,12 @@
"h": 19
},
"frame": {
- "x": 201,
- "y": 163,
+ "x": 100,
+ "y": 176,
"w": 25,
"h": 19
}
},
- {
- "filename": "447_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 9,
- "w": 20,
- "h": 20
- },
- "frame": {
- "x": 166,
- "y": 193,
- "w": 20,
- "h": 20
- }
- },
{
"filename": "489_2",
"rotated": false,
@@ -1746,12 +1536,138 @@
"h": 19
},
"frame": {
- "x": 201,
- "y": 182,
+ "x": 125,
+ "y": 176,
"w": 25,
"h": 19
}
},
+ {
+ "filename": "494_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 75,
+ "y": 198,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "458_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 9,
+ "w": 22,
+ "h": 19
+ },
+ "frame": {
+ "x": 82,
+ "y": 222,
+ "w": 22,
+ "h": 19
+ }
+ },
+ {
+ "filename": "440_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 8,
+ "w": 16,
+ "h": 21
+ },
+ "frame": {
+ "x": 150,
+ "y": 176,
+ "w": 16,
+ "h": 21
+ }
+ },
+ {
+ "filename": "448_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 6,
+ "w": 18,
+ "h": 23
+ },
+ "frame": {
+ "x": 166,
+ "y": 171,
+ "w": 18,
+ "h": 23
+ }
+ },
+ {
+ "filename": "490_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 184,
+ "y": 170,
+ "w": 24,
+ "h": 22
+ }
+ },
+ {
+ "filename": "442_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 23,
+ "h": 22
+ },
+ "frame": {
+ "x": 208,
+ "y": 170,
+ "w": 23,
+ "h": 22
+ }
+ },
{
"filename": "489_3",
"rotated": false,
@@ -1767,12 +1683,117 @@
"h": 19
},
"frame": {
- "x": 186,
- "y": 201,
+ "x": 184,
+ "y": 192,
"w": 25,
"h": 19
}
},
+ {
+ "filename": "442_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 23,
+ "h": 22
+ },
+ "frame": {
+ "x": 209,
+ "y": 192,
+ "w": 23,
+ "h": 22
+ }
+ },
+ {
+ "filename": "490_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 100,
+ "y": 195,
+ "w": 24,
+ "h": 22
+ }
+ },
+ {
+ "filename": "443_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 124,
+ "y": 195,
+ "w": 21,
+ "h": 21
+ }
+ },
+ {
+ "filename": "443_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 104,
+ "y": 217,
+ "w": 21,
+ "h": 21
+ }
+ },
+ {
+ "filename": "443_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 21,
+ "h": 21
+ },
+ "frame": {
+ "x": 125,
+ "y": 216,
+ "w": 21,
+ "h": 21
+ }
+ },
{
"filename": "399_2",
"rotated": false,
@@ -1788,33 +1809,12 @@
"h": 18
},
"frame": {
- "x": 211,
- "y": 201,
+ "x": 145,
+ "y": 197,
"w": 22,
"h": 18
}
},
- {
- "filename": "492-land_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 11,
- "w": 20,
- "h": 18
- },
- "frame": {
- "x": 166,
- "y": 213,
- "w": 20,
- "h": 18
- }
- },
{
"filename": "399_3",
"rotated": false,
@@ -1830,12 +1830,54 @@
"h": 18
},
"frame": {
- "x": 186,
- "y": 220,
+ "x": 146,
+ "y": 215,
"w": 22,
"h": 18
}
},
+ {
+ "filename": "440_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 8,
+ "w": 16,
+ "h": 21
+ },
+ "frame": {
+ "x": 167,
+ "y": 194,
+ "w": 16,
+ "h": 21
+ }
+ },
+ {
+ "filename": "492-land_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 11,
+ "w": 20,
+ "h": 18
+ },
+ "frame": {
+ "x": 168,
+ "y": 215,
+ "w": 20,
+ "h": 18
+ }
+ },
{
"filename": "492-land_3",
"rotated": false,
@@ -1851,8 +1893,8 @@
"h": 18
},
"frame": {
- "x": 211,
- "y": 219,
+ "x": 188,
+ "y": 211,
"w": 20,
"h": 18
}
@@ -1863,6 +1905,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:4b63c5647394176b03a33faa1261b5ce:a9e8c9029ae919f3288c88e736961ac4:ebc3f8ec5b2480b298192d752b6e57dc$"
+ "smartupdate": "$TexturePacker:SmartUpdate:cc5ef470e30914396d6fe36e218a5c9b:1eba0f8c1334e76461b01e852656e0cf:ebc3f8ec5b2480b298192d752b6e57dc$"
}
}
diff --git a/public/images/pokemon_icons_4v.png b/public/images/pokemon_icons_4v.png
index ec441236c..274a8a497 100644
Binary files a/public/images/pokemon_icons_4v.png and b/public/images/pokemon_icons_4v.png differ
diff --git a/public/images/pokemon_icons_5v.json b/public/images/pokemon_icons_5v.json
index 4091d3527..557aae7e1 100644
--- a/public/images/pokemon_icons_5v.json
+++ b/public/images/pokemon_icons_5v.json
@@ -4,8 +4,8 @@
"image": "pokemon_icons_5v.png",
"format": "RGBA8888",
"size": {
- "w": 219,
- "h": 219
+ "w": 237,
+ "h": 237
},
"scale": 1,
"frames": [
@@ -241,7 +241,7 @@
}
},
{
- "filename": "560_1",
+ "filename": "609_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -249,16 +249,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 9,
- "y": 6,
- "w": 22,
- "h": 23
+ "x": 5,
+ "y": 4,
+ "w": 31,
+ "h": 25
},
"frame": {
"x": 197,
"y": 0,
- "w": 22,
- "h": 23
+ "w": 31,
+ "h": 25
}
},
{
@@ -283,7 +283,7 @@
}
},
{
- "filename": "571_2",
+ "filename": "533_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -291,20 +291,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 31,
- "h": 24
+ "x": 7,
+ "y": 3,
+ "w": 29,
+ "h": 26
},
"frame": {
"x": 0,
"y": 195,
- "w": 31,
- "h": 24
+ "w": 29,
+ "h": 26
}
},
{
- "filename": "560_2",
+ "filename": "546_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -313,40 +313,19 @@
},
"spriteSourceSize": {
"x": 9,
- "y": 6,
- "w": 22,
- "h": 23
+ "y": 13,
+ "w": 23,
+ "h": 16
},
"frame": {
- "x": 197,
- "y": 23,
- "w": 22,
- "h": 23
+ "x": 0,
+ "y": 221,
+ "w": 23,
+ "h": 16
}
},
{
- "filename": "571_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 166,
- "y": 25,
- "w": 31,
- "h": 24
- }
- },
- {
- "filename": "560_3",
+ "filename": "546_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -355,15 +334,15 @@
},
"spriteSourceSize": {
"x": 9,
- "y": 6,
- "w": 22,
- "h": 23
+ "y": 13,
+ "w": 23,
+ "h": 16
},
"frame": {
- "x": 197,
- "y": 46,
- "w": 22,
- "h": 23
+ "x": 23,
+ "y": 221,
+ "w": 23,
+ "h": 16
}
},
{
@@ -423,14 +402,14 @@
"h": 23
},
"frame": {
- "x": 33,
- "y": 28,
+ "x": 166,
+ "y": 25,
"w": 32,
"h": 23
}
},
{
- "filename": "609_3",
+ "filename": "571_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -439,19 +418,19 @@
},
"spriteSourceSize": {
"x": 5,
- "y": 4,
+ "y": 5,
"w": 31,
- "h": 25
+ "h": 24
},
"frame": {
- "x": 32,
- "y": 51,
+ "x": 198,
+ "y": 25,
"w": 31,
- "h": 25
+ "h": 24
}
},
{
- "filename": "533_3",
+ "filename": "571_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -459,16 +438,37 @@
"h": 30
},
"spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 29,
- "h": 26
+ "x": 5,
+ "y": 5,
+ "w": 31,
+ "h": 24
},
"frame": {
- "x": 32,
- "y": 76,
- "w": 29,
- "h": 26
+ "x": 33,
+ "y": 28,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "593_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 5,
+ "w": 30,
+ "h": 24
+ },
+ "frame": {
+ "x": 64,
+ "y": 28,
+ "w": 30,
+ "h": 24
}
},
{
@@ -487,13 +487,13 @@
},
"frame": {
"x": 32,
- "y": 102,
+ "y": 52,
"w": 27,
"h": 27
}
},
{
- "filename": "538_2",
+ "filename": "593_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -502,36 +502,15 @@
},
"spriteSourceSize": {
"x": 5,
- "y": 7,
+ "y": 5,
"w": 30,
- "h": 22
+ "h": 24
},
"frame": {
- "x": 65,
- "y": 28,
+ "x": 59,
+ "y": 52,
"w": 30,
- "h": 22
- }
- },
- {
- "filename": "538_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 7,
- "w": 30,
- "h": 22
- },
- "frame": {
- "x": 32,
- "y": 129,
- "w": 30,
- "h": 22
+ "h": 24
}
},
{
@@ -549,54 +528,12 @@
"h": 26
},
"frame": {
- "x": 29,
- "y": 151,
+ "x": 32,
+ "y": 79,
"w": 25,
"h": 26
}
},
- {
- "filename": "562_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 11,
- "w": 24,
- "h": 18
- },
- "frame": {
- "x": 29,
- "y": 177,
- "w": 24,
- "h": 18
- }
- },
- {
- "filename": "547_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 5,
- "w": 23,
- "h": 24
- },
- "frame": {
- "x": 31,
- "y": 195,
- "w": 23,
- "h": 24
- }
- },
{
"filename": "586-summer_1",
"rotated": false,
@@ -612,14 +549,14 @@
"h": 26
},
"frame": {
- "x": 54,
- "y": 151,
+ "x": 32,
+ "y": 105,
"w": 25,
"h": 26
}
},
{
- "filename": "562_3",
+ "filename": "532_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -627,20 +564,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 8,
- "y": 11,
- "w": 24,
- "h": 18
+ "x": 7,
+ "y": 8,
+ "w": 26,
+ "h": 21
},
"frame": {
- "x": 53,
- "y": 177,
- "w": 24,
- "h": 18
+ "x": 32,
+ "y": 131,
+ "w": 26,
+ "h": 21
}
},
{
- "filename": "547_3",
+ "filename": "593-f_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -648,15 +585,120 @@
"h": 30
},
"spriteSourceSize": {
- "x": 8,
+ "x": 6,
"y": 5,
- "w": 23,
+ "w": 29,
"h": 24
},
"frame": {
- "x": 54,
- "y": 195,
- "w": 23,
+ "x": 29,
+ "y": 152,
+ "w": 29,
+ "h": 24
+ }
+ },
+ {
+ "filename": "593-f_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 29,
+ "h": 24
+ },
+ "frame": {
+ "x": 29,
+ "y": 176,
+ "w": 29,
+ "h": 24
+ }
+ },
+ {
+ "filename": "532_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 8,
+ "w": 26,
+ "h": 21
+ },
+ "frame": {
+ "x": 29,
+ "y": 200,
+ "w": 26,
+ "h": 21
+ }
+ },
+ {
+ "filename": "577_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 13,
+ "w": 17,
+ "h": 16
+ },
+ "frame": {
+ "x": 46,
+ "y": 221,
+ "w": 17,
+ "h": 16
+ }
+ },
+ {
+ "filename": "538_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 30,
+ "h": 22
+ },
+ "frame": {
+ "x": 59,
+ "y": 76,
+ "w": 30,
+ "h": 22
+ }
+ },
+ {
+ "filename": "593-f_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 29,
+ "h": 24
+ },
+ "frame": {
+ "x": 57,
+ "y": 98,
+ "w": 29,
"h": 24
}
},
@@ -675,8 +717,8 @@
"h": 26
},
"frame": {
- "x": 61,
- "y": 76,
+ "x": 58,
+ "y": 122,
"w": 25,
"h": 26
}
@@ -696,33 +738,12 @@
"h": 26
},
"frame": {
- "x": 59,
- "y": 102,
+ "x": 58,
+ "y": 148,
"w": 24,
"h": 26
}
},
- {
- "filename": "549_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 62,
- "y": 128,
- "w": 19,
- "h": 23
- }
- },
{
"filename": "649-burn_3",
"rotated": false,
@@ -738,12 +759,54 @@
"h": 26
},
"frame": {
- "x": 65,
- "y": 50,
+ "x": 58,
+ "y": 174,
"w": 24,
"h": 26
}
},
+ {
+ "filename": "572_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 24,
+ "h": 21
+ },
+ "frame": {
+ "x": 55,
+ "y": 200,
+ "w": 24,
+ "h": 21
+ }
+ },
+ {
+ "filename": "577_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 13,
+ "w": 17,
+ "h": 16
+ },
+ "frame": {
+ "x": 63,
+ "y": 221,
+ "w": 17,
+ "h": 16
+ }
+ },
{
"filename": "649-chill_2",
"rotated": false,
@@ -760,11 +823,95 @@
},
"frame": {
"x": 89,
- "y": 50,
+ "y": 52,
"w": 24,
"h": 26
}
},
+ {
+ "filename": "538_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 7,
+ "w": 30,
+ "h": 22
+ },
+ "frame": {
+ "x": 113,
+ "y": 49,
+ "w": 30,
+ "h": 22
+ }
+ },
+ {
+ "filename": "572_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 8,
+ "w": 24,
+ "h": 21
+ },
+ "frame": {
+ "x": 89,
+ "y": 78,
+ "w": 24,
+ "h": 21
+ }
+ },
+ {
+ "filename": "620_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 27,
+ "h": 24
+ },
+ "frame": {
+ "x": 113,
+ "y": 71,
+ "w": 27,
+ "h": 24
+ }
+ },
+ {
+ "filename": "620_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 27,
+ "h": 24
+ },
+ "frame": {
+ "x": 86,
+ "y": 99,
+ "w": 27,
+ "h": 24
+ }
+ },
{
"filename": "649-chill_3",
"rotated": false,
@@ -780,8 +927,8 @@
"h": 26
},
"frame": {
- "x": 86,
- "y": 76,
+ "x": 113,
+ "y": 95,
"w": 24,
"h": 26
}
@@ -802,7 +949,7 @@
},
"frame": {
"x": 83,
- "y": 102,
+ "y": 123,
"w": 24,
"h": 26
}
@@ -822,8 +969,8 @@
"h": 26
},
"frame": {
- "x": 113,
- "y": 49,
+ "x": 82,
+ "y": 149,
"w": 24,
"h": 26
}
@@ -843,12 +990,33 @@
"h": 26
},
"frame": {
- "x": 137,
- "y": 49,
+ "x": 82,
+ "y": 175,
"w": 24,
"h": 26
}
},
+ {
+ "filename": "547_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 5,
+ "w": 23,
+ "h": 24
+ },
+ "frame": {
+ "x": 143,
+ "y": 49,
+ "w": 23,
+ "h": 24
+ }
+ },
{
"filename": "649-shock_3",
"rotated": false,
@@ -864,33 +1032,12 @@
"h": 26
},
"frame": {
- "x": 161,
- "y": 49,
+ "x": 166,
+ "y": 48,
"w": 24,
"h": 26
}
},
- {
- "filename": "532_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 8,
- "w": 26,
- "h": 21
- },
- "frame": {
- "x": 81,
- "y": 128,
- "w": 26,
- "h": 21
- }
- },
{
"filename": "649_2",
"rotated": false,
@@ -906,8 +1053,8 @@
"h": 26
},
"frame": {
- "x": 110,
- "y": 76,
+ "x": 140,
+ "y": 73,
"w": 24,
"h": 26
}
@@ -927,35 +1074,14 @@
"h": 26
},
"frame": {
- "x": 107,
- "y": 102,
+ "x": 164,
+ "y": 74,
"w": 24,
"h": 26
}
},
{
- "filename": "532_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 8,
- "w": 26,
- "h": 21
- },
- "frame": {
- "x": 134,
- "y": 75,
- "w": 26,
- "h": 21
- }
- },
- {
- "filename": "572_2",
+ "filename": "547_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -964,19 +1090,19 @@
},
"spriteSourceSize": {
"x": 8,
- "y": 8,
- "w": 24,
- "h": 21
+ "y": 5,
+ "w": 23,
+ "h": 24
},
"frame": {
- "x": 107,
- "y": 128,
- "w": 24,
- "h": 21
+ "x": 137,
+ "y": 99,
+ "w": 23,
+ "h": 24
}
},
{
- "filename": "572_3",
+ "filename": "560_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -984,41 +1110,41 @@
"h": 30
},
"spriteSourceSize": {
- "x": 8,
- "y": 8,
- "w": 24,
- "h": 21
+ "x": 9,
+ "y": 6,
+ "w": 22,
+ "h": 23
},
"frame": {
"x": 160,
- "y": 75,
+ "y": 100,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "562_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 11,
"w": 24,
- "h": 21
- }
- },
- {
- "filename": "546_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 13,
- "w": 23,
- "h": 16
+ "h": 18
},
"frame": {
- "x": 134,
- "y": 96,
- "w": 23,
- "h": 16
+ "x": 79,
+ "y": 201,
+ "w": 24,
+ "h": 18
}
},
{
- "filename": "585-autumn_1",
+ "filename": "562_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1026,83 +1152,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 9,
- "y": 5,
- "w": 20,
- "h": 24
- },
- "frame": {
- "x": 131,
- "y": 112,
- "w": 20,
- "h": 24
- }
- },
- {
- "filename": "546_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 13,
- "w": 23,
- "h": 16
- },
- "frame": {
- "x": 157,
- "y": 96,
- "w": 23,
- "h": 16
- }
- },
- {
- "filename": "585-spring_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 5,
- "w": 20,
- "h": 24
- },
- "frame": {
- "x": 151,
- "y": 112,
- "w": 20,
- "h": 24
- }
- },
- {
- "filename": "541_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
+ "x": 8,
"y": 11,
- "w": 22,
+ "w": 24,
"h": 18
},
"frame": {
- "x": 131,
- "y": 136,
- "w": 22,
+ "x": 80,
+ "y": 219,
+ "w": 24,
"h": 18
}
},
{
- "filename": "541_3",
+ "filename": "560_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1111,19 +1174,19 @@
},
"spriteSourceSize": {
"x": 9,
- "y": 11,
+ "y": 6,
"w": 22,
- "h": 18
+ "h": 23
},
"frame": {
- "x": 153,
- "y": 136,
+ "x": 190,
+ "y": 49,
"w": 22,
- "h": 18
+ "h": 23
}
},
{
- "filename": "585-summer_1",
+ "filename": "549_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1131,79 +1194,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 9,
- "y": 5,
- "w": 20,
- "h": 24
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 23
},
"frame": {
- "x": 171,
- "y": 112,
- "w": 20,
- "h": 24
- }
- },
- {
- "filename": "540_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 10,
- "w": 17,
- "h": 19
- },
- "frame": {
- "x": 175,
- "y": 136,
- "w": 17,
- "h": 19
- }
- },
- {
- "filename": "577_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 13,
- "w": 17,
- "h": 16
- },
- "frame": {
- "x": 180,
- "y": 96,
- "w": 17,
- "h": 16
- }
- },
- {
- "filename": "578_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 8,
- "w": 18,
- "h": 21
- },
- "frame": {
- "x": 184,
- "y": 75,
- "w": 18,
- "h": 21
+ "x": 212,
+ "y": 49,
+ "w": 19,
+ "h": 23
}
},
{
@@ -1221,12 +1221,117 @@
"h": 25
},
"frame": {
- "x": 202,
- "y": 69,
+ "x": 107,
+ "y": 123,
"w": 17,
"h": 25
}
},
+ {
+ "filename": "560_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 6,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 124,
+ "y": 123,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "585-autumn_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 146,
+ "y": 123,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "585-spring_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 166,
+ "y": 123,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "542_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 16,
+ "h": 23
+ },
+ "frame": {
+ "x": 182,
+ "y": 100,
+ "w": 16,
+ "h": 23
+ }
+ },
+ {
+ "filename": "585-summer_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 186,
+ "y": 123,
+ "w": 20,
+ "h": 24
+ }
+ },
{
"filename": "648-pirouette_3",
"rotated": false,
@@ -1242,8 +1347,8 @@
"h": 25
},
"frame": {
- "x": 202,
- "y": 94,
+ "x": 188,
+ "y": 74,
"w": 17,
"h": 25
}
@@ -1263,14 +1368,14 @@
"h": 24
},
"frame": {
- "x": 77,
- "y": 177,
+ "x": 205,
+ "y": 72,
"w": 20,
"h": 24
}
},
{
- "filename": "559_1",
+ "filename": "542_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1279,15 +1384,15 @@
},
"spriteSourceSize": {
"x": 12,
- "y": 11,
- "w": 17,
- "h": 18
+ "y": 6,
+ "w": 16,
+ "h": 23
},
"frame": {
- "x": 77,
- "y": 201,
- "w": 17,
- "h": 18
+ "x": 198,
+ "y": 99,
+ "w": 16,
+ "h": 23
}
},
{
@@ -1305,14 +1410,14 @@
"h": 23
},
"frame": {
- "x": 79,
- "y": 154,
+ "x": 214,
+ "y": 96,
"w": 19,
"h": 23
}
},
{
- "filename": "559_2",
+ "filename": "648-aria_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1321,17 +1426,311 @@
},
"spriteSourceSize": {
"x": 12,
+ "y": 6,
+ "w": 16,
+ "h": 23
+ },
+ "frame": {
+ "x": 206,
+ "y": 122,
+ "w": 16,
+ "h": 23
+ }
+ },
+ {
+ "filename": "607_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 9,
+ "w": 15,
+ "h": 20
+ },
+ "frame": {
+ "x": 222,
+ "y": 119,
+ "w": 15,
+ "h": 20
+ }
+ },
+ {
+ "filename": "607_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 9,
+ "w": 15,
+ "h": 20
+ },
+ "frame": {
+ "x": 222,
+ "y": 139,
+ "w": 15,
+ "h": 20
+ }
+ },
+ {
+ "filename": "648-aria_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 16,
+ "h": 23
+ },
+ "frame": {
+ "x": 206,
+ "y": 145,
+ "w": 16,
+ "h": 23
+ }
+ },
+ {
+ "filename": "541_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
"y": 11,
- "w": 17,
+ "w": 22,
"h": 18
},
"frame": {
- "x": 94,
- "y": 201,
- "w": 17,
+ "x": 124,
+ "y": 146,
+ "w": 22,
"h": 18
}
},
+ {
+ "filename": "541_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 11,
+ "w": 22,
+ "h": 18
+ },
+ "frame": {
+ "x": 146,
+ "y": 147,
+ "w": 22,
+ "h": 18
+ }
+ },
+ {
+ "filename": "592-f_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 168,
+ "y": 147,
+ "w": 21,
+ "h": 22
+ }
+ },
+ {
+ "filename": "540_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 10,
+ "w": 17,
+ "h": 19
+ },
+ "frame": {
+ "x": 189,
+ "y": 147,
+ "w": 17,
+ "h": 19
+ }
+ },
+ {
+ "filename": "578_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 8,
+ "w": 18,
+ "h": 21
+ },
+ "frame": {
+ "x": 106,
+ "y": 149,
+ "w": 18,
+ "h": 21
+ }
+ },
+ {
+ "filename": "592-f_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 106,
+ "y": 170,
+ "w": 21,
+ "h": 22
+ }
+ },
+ {
+ "filename": "578_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 8,
+ "w": 18,
+ "h": 21
+ },
+ "frame": {
+ "x": 127,
+ "y": 164,
+ "w": 18,
+ "h": 21
+ }
+ },
+ {
+ "filename": "592-f_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 145,
+ "y": 165,
+ "w": 21,
+ "h": 22
+ }
+ },
+ {
+ "filename": "592_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 166,
+ "y": 169,
+ "w": 21,
+ "h": 22
+ }
+ },
+ {
+ "filename": "592_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 106,
+ "y": 192,
+ "w": 21,
+ "h": 22
+ }
+ },
+ {
+ "filename": "578_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 8,
+ "w": 18,
+ "h": 21
+ },
+ "frame": {
+ "x": 127,
+ "y": 185,
+ "w": 18,
+ "h": 21
+ }
+ },
{
"filename": "608_2",
"rotated": false,
@@ -1347,8 +1746,8 @@
"h": 20
},
"frame": {
- "x": 98,
- "y": 149,
+ "x": 145,
+ "y": 187,
"w": 21,
"h": 20
}
@@ -1368,56 +1767,14 @@
"h": 20
},
"frame": {
- "x": 98,
- "y": 169,
+ "x": 166,
+ "y": 191,
"w": 21,
"h": 20
}
},
{
- "filename": "542_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
- },
- "frame": {
- "x": 119,
- "y": 154,
- "w": 16,
- "h": 23
- }
- },
- {
- "filename": "542_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
- },
- "frame": {
- "x": 135,
- "y": 154,
- "w": 16,
- "h": 23
- }
- },
- {
- "filename": "578_2",
+ "filename": "619_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1427,34 +1784,13 @@
"spriteSourceSize": {
"x": 11,
"y": 8,
- "w": 18,
+ "w": 20,
"h": 21
},
"frame": {
- "x": 151,
- "y": 154,
- "w": 18,
- "h": 21
- }
- },
- {
- "filename": "578_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 8,
- "w": 18,
- "h": 21
- },
- "frame": {
- "x": 169,
- "y": 155,
- "w": 18,
+ "x": 104,
+ "y": 214,
+ "w": 20,
"h": 21
}
},
@@ -1473,14 +1809,14 @@
"h": 19
},
"frame": {
- "x": 119,
- "y": 177,
+ "x": 127,
+ "y": 206,
"w": 18,
"h": 19
}
},
{
- "filename": "648-aria_2",
+ "filename": "619_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1488,79 +1824,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
+ "x": 11,
+ "y": 8,
+ "w": 20,
+ "h": 21
},
"frame": {
- "x": 111,
- "y": 196,
- "w": 16,
- "h": 23
- }
- },
- {
- "filename": "648-aria_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 16,
- "h": 23
- },
- "frame": {
- "x": 127,
- "y": 196,
- "w": 16,
- "h": 23
- }
- },
- {
- "filename": "540_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 10,
- "w": 17,
- "h": 19
- },
- "frame": {
- "x": 137,
- "y": 177,
- "w": 17,
- "h": 19
- }
- },
- {
- "filename": "607_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 9,
- "w": 15,
- "h": 20
- },
- "frame": {
- "x": 154,
- "y": 175,
- "w": 15,
- "h": 20
+ "x": 145,
+ "y": 207,
+ "w": 20,
+ "h": 21
}
},
{
@@ -1578,12 +1851,33 @@
"h": 19
},
"frame": {
- "x": 169,
- "y": 176,
+ "x": 165,
+ "y": 211,
"w": 18,
"h": 19
}
},
+ {
+ "filename": "540_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 10,
+ "w": 17,
+ "h": 19
+ },
+ "frame": {
+ "x": 183,
+ "y": 211,
+ "w": 17,
+ "h": 19
+ }
+ },
{
"filename": "548_1",
"rotated": false,
@@ -1599,33 +1893,12 @@
"h": 20
},
"frame": {
- "x": 143,
- "y": 196,
+ "x": 222,
+ "y": 159,
"w": 14,
"h": 20
}
},
- {
- "filename": "559_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 11,
- "w": 17,
- "h": 18
- },
- "frame": {
- "x": 157,
- "y": 195,
- "w": 17,
- "h": 18
- }
- },
{
"filename": "548_2",
"rotated": false,
@@ -1641,8 +1914,8 @@
"h": 20
},
"frame": {
- "x": 174,
- "y": 195,
+ "x": 187,
+ "y": 169,
"w": 14,
"h": 20
}
@@ -1663,34 +1936,13 @@
},
"frame": {
"x": 187,
- "y": 155,
+ "y": 189,
"w": 14,
"h": 20
}
},
{
- "filename": "607_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 9,
- "w": 15,
- "h": 20
- },
- "frame": {
- "x": 187,
- "y": 175,
- "w": 15,
- "h": 20
- }
- },
- {
- "filename": "577_2",
+ "filename": "559_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1699,15 +1951,57 @@
},
"spriteSourceSize": {
"x": 12,
- "y": 13,
+ "y": 11,
"w": 17,
- "h": 16
+ "h": 18
},
"frame": {
- "x": 202,
- "y": 119,
+ "x": 201,
+ "y": 168,
"w": 17,
- "h": 16
+ "h": 18
+ }
+ },
+ {
+ "filename": "559_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 11,
+ "w": 17,
+ "h": 18
+ },
+ "frame": {
+ "x": 201,
+ "y": 186,
+ "w": 17,
+ "h": 18
+ }
+ },
+ {
+ "filename": "559_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 11,
+ "w": 17,
+ "h": 18
+ },
+ "frame": {
+ "x": 218,
+ "y": 179,
+ "w": 17,
+ "h": 18
}
},
{
@@ -1725,8 +2019,8 @@
"h": 16
},
"frame": {
- "x": 202,
- "y": 135,
+ "x": 218,
+ "y": 197,
"w": 17,
"h": 16
}
@@ -1737,6 +2031,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:6a72d905f49c2e6c5a2043fc04e736e5:9d034b1095aa7c830432005b7740f0b5:f1931bc28ee7f32dba7543723757cf2a$"
+ "smartupdate": "$TexturePacker:SmartUpdate:c76d37eea220913a090b0aaebeba0416:dac99d4c8e287d30b7d345500e57da65:f1931bc28ee7f32dba7543723757cf2a$"
}
}
diff --git a/public/images/pokemon_icons_5v.png b/public/images/pokemon_icons_5v.png
index 0aa10cec7..c688b3e80 100644
Binary files a/public/images/pokemon_icons_5v.png and b/public/images/pokemon_icons_5v.png differ
diff --git a/public/images/pokemon_icons_6.json b/public/images/pokemon_icons_6.json
index 48a676cc9..f0d7a46c7 100644
--- a/public/images/pokemon_icons_6.json
+++ b/public/images/pokemon_icons_6.json
@@ -5,7 +5,7 @@
"format": "RGBA8888",
"size": {
"w": 254,
- "h": 554
+ "h": 557
},
"scale": 1,
"frames": [
@@ -556,7 +556,7 @@
}
},
{
- "filename": "708",
+ "filename": "675",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -564,16 +564,37 @@
"h": 30
},
"spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 25,
- "h": 21
+ "x": 7,
+ "y": 4,
+ "w": 28,
+ "h": 24
},
"frame": {
"x": 0,
"y": 533,
- "w": 25,
- "h": 21
+ "w": 28,
+ "h": 24
+ }
+ },
+ {
+ "filename": "675s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 28,
+ "h": 24
+ },
+ "frame": {
+ "x": 28,
+ "y": 533,
+ "w": 28,
+ "h": 24
}
},
{
@@ -597,27 +618,6 @@
"h": 27
}
},
- {
- "filename": "708s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 7,
- "w": 25,
- "h": 21
- },
- "frame": {
- "x": 25,
- "y": 533,
- "w": 25,
- "h": 21
- }
- },
{
"filename": "691",
"rotated": false,
@@ -661,7 +661,7 @@
}
},
{
- "filename": "675",
+ "filename": "715",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -669,7 +669,7 @@
"h": 30
},
"spriteSourceSize": {
- "x": 7,
+ "x": 6,
"y": 4,
"w": 28,
"h": 24
@@ -786,6 +786,27 @@
"h": 22
}
},
+ {
+ "filename": "658-ash",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 30,
+ "h": 23
+ },
+ "frame": {
+ "x": 132,
+ "y": 49,
+ "w": 30,
+ "h": 23
+ }
+ },
{
"filename": "658",
"rotated": false,
@@ -801,8 +822,8 @@
"h": 22
},
"frame": {
- "x": 132,
- "y": 49,
+ "x": 162,
+ "y": 50,
"w": 30,
"h": 22
}
@@ -822,7 +843,7 @@
"h": 23
},
"frame": {
- "x": 162,
+ "x": 192,
"y": 50,
"w": 30,
"h": 23
@@ -843,8 +864,8 @@
"h": 22
},
"frame": {
- "x": 192,
- "y": 50,
+ "x": 222,
+ "y": 51,
"w": 30,
"h": 22
}
@@ -864,51 +885,9 @@
"h": 22
},
"frame": {
- "x": 222,
- "y": 51,
- "w": 30,
- "h": 22
- }
- },
- {
- "filename": "654",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 20,
- "h": 22
- },
- "frame": {
- "x": 50,
+ "x": 38,
"y": 54,
- "w": 20,
- "h": 22
- }
- },
- {
- "filename": "705",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 6,
- "w": 15,
- "h": 22
- },
- "frame": {
- "x": 35,
- "y": 56,
- "w": 15,
+ "w": 30,
"h": 22
}
},
@@ -927,119 +906,14 @@
"h": 22
},
"frame": {
- "x": 70,
- "y": 70,
+ "x": 35,
+ "y": 76,
"w": 30,
"h": 22
}
},
{
- "filename": "675s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 28,
- "h": 24
- },
- "frame": {
- "x": 100,
- "y": 70,
- "w": 28,
- "h": 24
- }
- },
- {
- "filename": "715",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 28,
- "h": 24
- },
- "frame": {
- "x": 128,
- "y": 71,
- "w": 28,
- "h": 24
- }
- },
- {
- "filename": "715s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 28,
- "h": 24
- },
- "frame": {
- "x": 156,
- "y": 73,
- "w": 28,
- "h": 24
- }
- },
- {
- "filename": "654s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 20,
- "h": 22
- },
- "frame": {
- "x": 50,
- "y": 76,
- "w": 20,
- "h": 22
- }
- },
- {
- "filename": "705s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 6,
- "w": 15,
- "h": 22
- },
- "frame": {
- "x": 35,
- "y": 78,
- "w": 15,
- "h": 22
- }
- },
- {
- "filename": "676-diamond",
+ "filename": "671-orange",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1048,15 +922,15 @@
},
"spriteSourceSize": {
"x": 8,
- "y": 0,
- "w": 24,
- "h": 28
+ "y": 3,
+ "w": 26,
+ "h": 27
},
"frame": {
"x": 32,
- "y": 100,
- "w": 24,
- "h": 28
+ "y": 98,
+ "w": 26,
+ "h": 27
}
},
{
@@ -1075,32 +949,11 @@
},
"frame": {
"x": 32,
- "y": 128,
+ "y": 125,
"w": 26,
"h": 24
}
},
- {
- "filename": "671-orange",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 26,
- "h": 27
- },
- "frame": {
- "x": 29,
- "y": 152,
- "w": 26,
- "h": 27
- }
- },
{
"filename": "671-red",
"rotated": false,
@@ -1117,7 +970,7 @@
},
"frame": {
"x": 29,
- "y": 179,
+ "y": 149,
"w": 26,
"h": 27
}
@@ -1137,12 +990,54 @@
"h": 27
},
"frame": {
- "x": 28,
- "y": 206,
+ "x": 29,
+ "y": 176,
"w": 26,
"h": 27
}
},
+ {
+ "filename": "676-diamond",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 28
+ },
+ "frame": {
+ "x": 58,
+ "y": 98,
+ "w": 24,
+ "h": 28
+ }
+ },
+ {
+ "filename": "652s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 26,
+ "h": 24
+ },
+ "frame": {
+ "x": 58,
+ "y": 126,
+ "w": 26,
+ "h": 24
+ }
+ },
{
"filename": "671-yellow",
"rotated": false,
@@ -1158,8 +1053,8 @@
"h": 27
},
"frame": {
- "x": 28,
- "y": 233,
+ "x": 55,
+ "y": 150,
"w": 26,
"h": 27
}
@@ -1179,12 +1074,33 @@
"h": 27
},
"frame": {
- "x": 28,
- "y": 260,
+ "x": 55,
+ "y": 177,
"w": 26,
"h": 27
}
},
+ {
+ "filename": "650",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 17,
+ "h": 22
+ },
+ "frame": {
+ "x": 65,
+ "y": 76,
+ "w": 17,
+ "h": 22
+ }
+ },
{
"filename": "671s-orange",
"rotated": false,
@@ -1200,8 +1116,29 @@
"h": 27
},
"frame": {
- "x": 28,
- "y": 287,
+ "x": 82,
+ "y": 70,
+ "w": 26,
+ "h": 27
+ }
+ },
+ {
+ "filename": "671s-red",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 26,
+ "h": 27
+ },
+ "frame": {
+ "x": 82,
+ "y": 97,
"w": 26,
"h": 27
}
@@ -1221,33 +1158,12 @@
"h": 28
},
"frame": {
- "x": 56,
- "y": 98,
+ "x": 108,
+ "y": 70,
"w": 24,
"h": 28
}
},
- {
- "filename": "671s-red",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 26,
- "h": 27
- },
- "frame": {
- "x": 58,
- "y": 126,
- "w": 26,
- "h": 27
- }
- },
{
"filename": "671s-white",
"rotated": false,
@@ -1263,8 +1179,8 @@
"h": 27
},
"frame": {
- "x": 55,
- "y": 153,
+ "x": 132,
+ "y": 72,
"w": 26,
"h": 27
}
@@ -1284,12 +1200,54 @@
"h": 27
},
"frame": {
- "x": 55,
- "y": 180,
+ "x": 158,
+ "y": 72,
"w": 26,
"h": 27
}
},
+ {
+ "filename": "676-dandy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 24,
+ "h": 26
+ },
+ "frame": {
+ "x": 108,
+ "y": 98,
+ "w": 24,
+ "h": 26
+ }
+ },
+ {
+ "filename": "715s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 28,
+ "h": 24
+ },
+ "frame": {
+ "x": 132,
+ "y": 99,
+ "w": 28,
+ "h": 24
+ }
+ },
{
"filename": "676-star",
"rotated": false,
@@ -1305,8 +1263,8 @@
"h": 27
},
"frame": {
- "x": 54,
- "y": 207,
+ "x": 84,
+ "y": 124,
"w": 26,
"h": 27
}
@@ -1326,12 +1284,54 @@
"h": 27
},
"frame": {
- "x": 54,
- "y": 234,
+ "x": 81,
+ "y": 151,
"w": 26,
"h": 27
}
},
+ {
+ "filename": "660",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 3,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 81,
+ "y": 178,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 1,
+ "w": 24,
+ "h": 27
+ },
+ "frame": {
+ "x": 110,
+ "y": 124,
+ "w": 24,
+ "h": 27
+ }
+ },
{
"filename": "721",
"rotated": false,
@@ -1347,138 +1347,12 @@
"h": 27
},
"frame": {
- "x": 54,
- "y": 261,
+ "x": 107,
+ "y": 151,
"w": 25,
"h": 27
}
},
- {
- "filename": "676-heart",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 25,
- "h": 26
- },
- "frame": {
- "x": 54,
- "y": 288,
- "w": 25,
- "h": 26
- }
- },
- {
- "filename": "685",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 20,
- "h": 23
- },
- "frame": {
- "x": 80,
- "y": 92,
- "w": 20,
- "h": 23
- }
- },
- {
- "filename": "655",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 27,
- "h": 23
- },
- "frame": {
- "x": 100,
- "y": 94,
- "w": 27,
- "h": 23
- }
- },
- {
- "filename": "655s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 27,
- "h": 23
- },
- "frame": {
- "x": 127,
- "y": 95,
- "w": 27,
- "h": 23
- }
- },
- {
- "filename": "707s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 5,
- "w": 27,
- "h": 24
- },
- "frame": {
- "x": 154,
- "y": 97,
- "w": 27,
- "h": 24
- }
- },
- {
- "filename": "713",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 4,
- "w": 27,
- "h": 24
- },
- "frame": {
- "x": 28,
- "y": 314,
- "w": 27,
- "h": 24
- }
- },
{
"filename": "721s",
"rotated": false,
@@ -1494,243 +1368,12 @@
"h": 27
},
"frame": {
- "x": 27,
- "y": 338,
+ "x": 134,
+ "y": 123,
"w": 25,
"h": 27
}
},
- {
- "filename": "652s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 4,
- "w": 26,
- "h": 24
- },
- "frame": {
- "x": 55,
- "y": 314,
- "w": 26,
- "h": 24
- }
- },
- {
- "filename": "660",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 52,
- "y": 338,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "684",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 12,
- "w": 17,
- "h": 16
- },
- "frame": {
- "x": 27,
- "y": 365,
- "w": 17,
- "h": 16
- }
- },
- {
- "filename": "676",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 1,
- "w": 24,
- "h": 27
- },
- "frame": {
- "x": 30,
- "y": 381,
- "w": 24,
- "h": 27
- }
- },
- {
- "filename": "676s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 1,
- "w": 24,
- "h": 27
- },
- "frame": {
- "x": 30,
- "y": 408,
- "w": 24,
- "h": 27
- }
- },
- {
- "filename": "699",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 1,
- "w": 24,
- "h": 27
- },
- "frame": {
- "x": 30,
- "y": 435,
- "w": 24,
- "h": 27
- }
- },
- {
- "filename": "699s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 1,
- "w": 24,
- "h": 27
- },
- "frame": {
- "x": 30,
- "y": 462,
- "w": 24,
- "h": 27
- }
- },
- {
- "filename": "676-dandy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 24,
- "h": 26
- },
- "frame": {
- "x": 30,
- "y": 489,
- "w": 24,
- "h": 26
- }
- },
- {
- "filename": "672",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 10,
- "w": 17,
- "h": 18
- },
- "frame": {
- "x": 30,
- "y": 515,
- "w": 17,
- "h": 18
- }
- },
- {
- "filename": "682",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 12,
- "w": 15,
- "h": 16
- },
- "frame": {
- "x": 44,
- "y": 365,
- "w": 15,
- "h": 16
- }
- },
- {
- "filename": "651",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 21,
- "h": 22
- },
- "frame": {
- "x": 59,
- "y": 363,
- "w": 21,
- "h": 22
- }
- },
{
"filename": "660s",
"rotated": false,
@@ -1746,8 +1389,8 @@
"h": 25
},
"frame": {
- "x": 54,
- "y": 385,
+ "x": 107,
+ "y": 178,
"w": 26,
"h": 25
}
@@ -1767,8 +1410,8 @@
"h": 25
},
"frame": {
- "x": 54,
- "y": 410,
+ "x": 160,
+ "y": 99,
"w": 26,
"h": 25
}
@@ -1788,12 +1431,33 @@
"h": 25
},
"frame": {
- "x": 54,
- "y": 435,
+ "x": 159,
+ "y": 124,
"w": 26,
"h": 25
}
},
+ {
+ "filename": "676-heart",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 25,
+ "h": 26
+ },
+ "frame": {
+ "x": 184,
+ "y": 73,
+ "w": 25,
+ "h": 26
+ }
+ },
{
"filename": "666-elegant",
"rotated": false,
@@ -1809,12 +1473,33 @@
"h": 25
},
"frame": {
- "x": 54,
- "y": 460,
+ "x": 209,
+ "y": 73,
"w": 26,
"h": 25
}
},
+ {
+ "filename": "683",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 5,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 235,
+ "y": 73,
+ "w": 19,
+ "h": 23
+ }
+ },
{
"filename": "666-fancy",
"rotated": false,
@@ -1830,14 +1515,14 @@
"h": 25
},
"frame": {
- "x": 54,
- "y": 485,
+ "x": 186,
+ "y": 99,
"w": 26,
"h": 25
}
},
{
- "filename": "659",
+ "filename": "666-garden",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1845,20 +1530,83 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
- "y": 3,
- "w": 16,
+ "x": 8,
+ "y": 2,
+ "w": 26,
"h": 25
},
"frame": {
- "x": 184,
- "y": 73,
- "w": 16,
+ "x": 185,
+ "y": 124,
+ "w": 26,
"h": 25
}
},
{
- "filename": "695",
+ "filename": "676-pharaoh",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 24,
+ "h": 26
+ },
+ "frame": {
+ "x": 212,
+ "y": 98,
+ "w": 24,
+ "h": 26
+ }
+ },
+ {
+ "filename": "679",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 14,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 236,
+ "y": 96,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "666-high-plains",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 211,
+ "y": 124,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "698",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1868,13 +1616,1063 @@
"spriteSourceSize": {
"x": 11,
"y": 4,
- "w": 22,
+ "w": 17,
"h": 24
},
"frame": {
- "x": 200,
- "y": 72,
- "w": 22,
+ "x": 237,
+ "y": 120,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "698s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 4,
+ "w": 17,
+ "h": 24
+ },
+ "frame": {
+ "x": 237,
+ "y": 144,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "676s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 1,
+ "w": 24,
+ "h": 27
+ },
+ "frame": {
+ "x": 132,
+ "y": 151,
+ "w": 24,
+ "h": 27
+ }
+ },
+ {
+ "filename": "666-icy-snow",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 133,
+ "y": 178,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-jungle",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 29,
+ "y": 203,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-marine",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 28,
+ "y": 228,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-meadow",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 28,
+ "y": 253,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-modern",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 28,
+ "y": 278,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-monsoon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 55,
+ "y": 204,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-ocean",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 81,
+ "y": 203,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-poke-ball",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 107,
+ "y": 203,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-polar",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 133,
+ "y": 203,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-river",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 54,
+ "y": 229,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-sandstorm",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 54,
+ "y": 254,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-savanna",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 54,
+ "y": 279,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-sun",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 28,
+ "y": 303,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666-tundra",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 27,
+ "y": 328,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-archipelago",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 27,
+ "y": 353,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-continental",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 54,
+ "y": 304,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-elegant",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 53,
+ "y": 329,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-fancy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 53,
+ "y": 354,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "711-large",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 23,
+ "h": 25
+ },
+ "frame": {
+ "x": 30,
+ "y": 378,
+ "w": 23,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-garden",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 53,
+ "y": 379,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "711-super",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 23,
+ "h": 25
+ },
+ "frame": {
+ "x": 30,
+ "y": 403,
+ "w": 23,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-high-plains",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 53,
+ "y": 404,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "711s-large",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 4,
+ "w": 23,
+ "h": 25
+ },
+ "frame": {
+ "x": 30,
+ "y": 428,
+ "w": 23,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-icy-snow",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 53,
+ "y": 429,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "711s-super",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 23,
+ "h": 25
+ },
+ "frame": {
+ "x": 30,
+ "y": 453,
+ "w": 23,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-jungle",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 53,
+ "y": 454,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "657",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 23,
+ "h": 22
+ },
+ "frame": {
+ "x": 30,
+ "y": 478,
+ "w": 23,
+ "h": 22
+ }
+ },
+ {
+ "filename": "699",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 1,
+ "w": 24,
+ "h": 27
+ },
+ "frame": {
+ "x": 30,
+ "y": 500,
+ "w": 24,
+ "h": 27
+ }
+ },
+ {
+ "filename": "708",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 25,
+ "h": 21
+ },
+ "frame": {
+ "x": 53,
+ "y": 479,
+ "w": 25,
+ "h": 21
+ }
+ },
+ {
+ "filename": "699s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 1,
+ "w": 24,
+ "h": 27
+ },
+ "frame": {
+ "x": 54,
+ "y": 500,
+ "w": 24,
+ "h": 27
+ }
+ },
+ {
+ "filename": "676s-dandy",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 24,
+ "h": 26
+ },
+ "frame": {
+ "x": 56,
+ "y": 527,
+ "w": 24,
+ "h": 26
+ }
+ },
+ {
+ "filename": "655",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 27,
+ "h": 23
+ },
+ "frame": {
+ "x": 159,
+ "y": 149,
+ "w": 27,
+ "h": 23
+ }
+ },
+ {
+ "filename": "655s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 5,
+ "w": 27,
+ "h": 23
+ },
+ "frame": {
+ "x": 186,
+ "y": 149,
+ "w": 27,
+ "h": 23
+ }
+ },
+ {
+ "filename": "676-matron",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 24,
+ "h": 25
+ },
+ "frame": {
+ "x": 213,
+ "y": 149,
+ "w": 24,
+ "h": 25
+ }
+ },
+ {
+ "filename": "650s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 17,
+ "h": 22
+ },
+ "frame": {
+ "x": 237,
+ "y": 168,
+ "w": 17,
+ "h": 22
+ }
+ },
+ {
+ "filename": "666s-marine",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 159,
+ "y": 172,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-meadow",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 185,
+ "y": 172,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-modern",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 211,
+ "y": 174,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-monsoon",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 159,
+ "y": 197,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-ocean",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 185,
+ "y": 197,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-poke-ball",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 211,
+ "y": 199,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "710-large",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 8,
+ "w": 17,
+ "h": 20
+ },
+ "frame": {
+ "x": 237,
+ "y": 190,
+ "w": 17,
+ "h": 20
+ }
+ },
+ {
+ "filename": "710s-large",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 8,
+ "w": 17,
+ "h": 20
+ },
+ "frame": {
+ "x": 237,
+ "y": 210,
+ "w": 17,
+ "h": 20
+ }
+ },
+ {
+ "filename": "707s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 5,
+ "w": 27,
+ "h": 24
+ },
+ "frame": {
+ "x": 159,
+ "y": 222,
+ "w": 27,
+ "h": 24
+ }
+ },
+ {
+ "filename": "676-debutante",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 186,
+ "y": 222,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-polar",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 211,
+ "y": 224,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "653",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 9,
+ "w": 17,
+ "h": 19
+ },
+ "frame": {
+ "x": 237,
+ "y": 230,
+ "w": 17,
+ "h": 19
+ }
+ },
+ {
+ "filename": "713",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 4,
+ "w": 27,
+ "h": 24
+ },
+ "frame": {
+ "x": 81,
+ "y": 228,
+ "w": 27,
"h": 24
}
},
@@ -1893,14 +2691,35 @@
"h": 24
},
"frame": {
- "x": 222,
- "y": 73,
+ "x": 108,
+ "y": 228,
"w": 27,
"h": 24
}
},
{
- "filename": "666-garden",
+ "filename": "676s-matron",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 24,
+ "h": 25
+ },
+ "frame": {
+ "x": 135,
+ "y": 228,
+ "w": 24,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-river",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1914,14 +2733,14 @@
"h": 25
},
"frame": {
- "x": 181,
- "y": 98,
+ "x": 80,
+ "y": 252,
"w": 26,
"h": 25
}
},
{
- "filename": "666-high-plains",
+ "filename": "666s-sandstorm",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1935,12 +2754,264 @@
"h": 25
},
"frame": {
- "x": 207,
- "y": 97,
+ "x": 80,
+ "y": 277,
"w": 26,
"h": 25
}
},
+ {
+ "filename": "666s-savanna",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 106,
+ "y": 252,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-sun",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 80,
+ "y": 302,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "666s-tundra",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 26,
+ "h": 25
+ },
+ "frame": {
+ "x": 106,
+ "y": 277,
+ "w": 26,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676-kabuki",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 106,
+ "y": 302,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676s-heart",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 25,
+ "h": 26
+ },
+ "frame": {
+ "x": 132,
+ "y": 253,
+ "w": 25,
+ "h": 26
+ }
+ },
+ {
+ "filename": "676-la-reine",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 132,
+ "y": 279,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676s-debutante",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 131,
+ "y": 304,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676s-kabuki",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 159,
+ "y": 246,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676s-la-reine",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 157,
+ "y": 271,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "709",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 184,
+ "y": 247,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "709s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 25,
+ "h": 25
+ },
+ "frame": {
+ "x": 182,
+ "y": 272,
+ "w": 25,
+ "h": 25
+ }
+ },
+ {
+ "filename": "676s-pharaoh",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 2,
+ "w": 24,
+ "h": 26
+ },
+ "frame": {
+ "x": 209,
+ "y": 249,
+ "w": 24,
+ "h": 26
+ }
+ },
{
"filename": "711",
"rotated": false,
@@ -1957,7 +3028,7 @@
},
"frame": {
"x": 233,
- "y": 97,
+ "y": 249,
"w": 21,
"h": 23
}
@@ -1978,977 +3049,11 @@
},
"frame": {
"x": 233,
- "y": 120,
+ "y": 272,
"w": 21,
"h": 23
}
},
- {
- "filename": "666-icy-snow",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 207,
- "y": 122,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "651s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 21,
- "h": 22
- },
- "frame": {
- "x": 233,
- "y": 143,
- "w": 21,
- "h": 22
- }
- },
- {
- "filename": "659s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 3,
- "w": 16,
- "h": 25
- },
- "frame": {
- "x": 84,
- "y": 115,
- "w": 16,
- "h": 25
- }
- },
- {
- "filename": "666-jungle",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 100,
- "y": 117,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-marine",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 126,
- "y": 118,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-meadow",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 152,
- "y": 121,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-modern",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 178,
- "y": 123,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "665",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 11,
- "w": 16,
- "h": 17
- },
- "frame": {
- "x": 84,
- "y": 140,
- "w": 16,
- "h": 17
- }
- },
- {
- "filename": "666-monsoon",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 100,
- "y": 142,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-ocean",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 126,
- "y": 143,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-poke-ball",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 152,
- "y": 146,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-polar",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 178,
- "y": 148,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "683",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 5,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 81,
- "y": 157,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "666-river",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 204,
- "y": 147,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "676-pharaoh",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 24,
- "h": 26
- },
- "frame": {
- "x": 230,
- "y": 165,
- "w": 24,
- "h": 26
- }
- },
- {
- "filename": "666-sandstorm",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 204,
- "y": 172,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "676s-dandy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 24,
- "h": 26
- },
- "frame": {
- "x": 230,
- "y": 191,
- "w": 24,
- "h": 26
- }
- },
- {
- "filename": "676s-heart",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 25,
- "h": 26
- },
- "frame": {
- "x": 81,
- "y": 180,
- "w": 25,
- "h": 26
- }
- },
- {
- "filename": "703",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 15,
- "w": 14,
- "h": 13
- },
- "frame": {
- "x": 100,
- "y": 167,
- "w": 14,
- "h": 13
- }
- },
- {
- "filename": "676s-pharaoh",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 24,
- "h": 26
- },
- "frame": {
- "x": 106,
- "y": 180,
- "w": 24,
- "h": 26
- }
- },
- {
- "filename": "695s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 4,
- "w": 22,
- "h": 24
- },
- "frame": {
- "x": 130,
- "y": 168,
- "w": 22,
- "h": 24
- }
- },
- {
- "filename": "666-savanna",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 152,
- "y": 171,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-sun",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 178,
- "y": 173,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666-tundra",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 204,
- "y": 197,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "676-matron",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 24,
- "h": 25
- },
- "frame": {
- "x": 230,
- "y": 217,
- "w": 24,
- "h": 25
- }
- },
- {
- "filename": "662",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 22,
- "h": 20
- },
- "frame": {
- "x": 130,
- "y": 192,
- "w": 22,
- "h": 20
- }
- },
- {
- "filename": "666s-archipelago",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 152,
- "y": 196,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-continental",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 178,
- "y": 198,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-elegant",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 204,
- "y": 222,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "676s-matron",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 24,
- "h": 25
- },
- "frame": {
- "x": 230,
- "y": 242,
- "w": 24,
- "h": 25
- }
- },
- {
- "filename": "666s-fancy",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 54,
- "y": 510,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "701",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 9,
- "w": 23,
- "h": 19
- },
- "frame": {
- "x": 50,
- "y": 535,
- "w": 23,
- "h": 19
- }
- },
- {
- "filename": "701s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 9,
- "w": 23,
- "h": 19
- },
- "frame": {
- "x": 73,
- "y": 535,
- "w": 23,
- "h": 19
- }
- },
- {
- "filename": "666s-garden",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 78,
- "y": 338,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-high-plains",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 363,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-icy-snow",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 388,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-jungle",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 413,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-marine",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 438,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-meadow",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 463,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-modern",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 488,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "657",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 23,
- "h": 22
- },
- "frame": {
- "x": 80,
- "y": 513,
- "w": 23,
- "h": 22
- }
- },
- {
- "filename": "720",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 21,
- "h": 19
- },
- "frame": {
- "x": 96,
- "y": 535,
- "w": 21,
- "h": 19
- }
- },
- {
- "filename": "650",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 17,
- "h": 22
- },
- "frame": {
- "x": 103,
- "y": 513,
- "w": 17,
- "h": 22
- }
- },
- {
- "filename": "720s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 21,
- "h": 19
- },
- "frame": {
- "x": 117,
- "y": 535,
- "w": 21,
- "h": 19
- }
- },
- {
- "filename": "666s-monsoon",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 104,
- "y": 206,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "662s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 22,
- "h": 20
- },
- "frame": {
- "x": 130,
- "y": 212,
- "w": 22,
- "h": 20
- }
- },
{
"filename": "687",
"rotated": false,
@@ -2964,14 +3069,14 @@
"h": 25
},
"frame": {
- "x": 80,
- "y": 207,
+ "x": 207,
+ "y": 275,
"w": 24,
"h": 25
}
},
{
- "filename": "666s-ocean",
+ "filename": "657s",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -2979,16 +3084,37 @@
"h": 30
},
"spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
+ "x": 10,
+ "y": 8,
+ "w": 23,
+ "h": 22
},
"frame": {
- "x": 80,
- "y": 232,
- "w": 26,
- "h": 25
+ "x": 231,
+ "y": 295,
+ "w": 23,
+ "h": 22
+ }
+ },
+ {
+ "filename": "708s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 7,
+ "w": 25,
+ "h": 21
+ },
+ "frame": {
+ "x": 157,
+ "y": 296,
+ "w": 25,
+ "h": 21
}
},
{
@@ -3006,96 +3132,12 @@
"h": 25
},
"frame": {
- "x": 106,
- "y": 231,
+ "x": 182,
+ "y": 297,
"w": 24,
"h": 25
}
},
- {
- "filename": "666s-poke-ball",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 130,
- "y": 232,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "700",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 156,
- "y": 221,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "666s-polar",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 178,
- "y": 223,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-river",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 204,
- "y": 247,
- "w": 26,
- "h": 25
- }
- },
{
"filename": "706",
"rotated": false,
@@ -3111,75 +3153,12 @@
"h": 24
},
"frame": {
- "x": 230,
- "y": 267,
+ "x": 206,
+ "y": 300,
"w": 24,
"h": 24
}
},
- {
- "filename": "700s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 22,
- "h": 23
- },
- "frame": {
- "x": 156,
- "y": 244,
- "w": 22,
- "h": 23
- }
- },
- {
- "filename": "666s-sandstorm",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 178,
- "y": 248,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-savanna",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 204,
- "y": 272,
- "w": 26,
- "h": 25
- }
- },
{
"filename": "706s",
"rotated": false,
@@ -3196,116 +3175,11 @@
},
"frame": {
"x": 230,
- "y": 291,
+ "y": 317,
"w": 24,
"h": 24
}
},
- {
- "filename": "685s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 5,
- "w": 20,
- "h": 23
- },
- "frame": {
- "x": 81,
- "y": 315,
- "w": 20,
- "h": 23
- }
- },
- {
- "filename": "666s-sun",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 80,
- "y": 257,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "666s-tundra",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 2,
- "w": 26,
- "h": 25
- },
- "frame": {
- "x": 79,
- "y": 282,
- "w": 26,
- "h": 25
- }
- },
- {
- "filename": "711-large",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 23,
- "h": 25
- },
- "frame": {
- "x": 106,
- "y": 256,
- "w": 23,
- "h": 25
- }
- },
- {
- "filename": "676-debutante",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 129,
- "y": 257,
- "w": 25,
- "h": 25
- }
- },
{
"filename": "692",
"rotated": false,
@@ -3321,14 +3195,14 @@
"h": 17
},
"frame": {
- "x": 154,
- "y": 267,
+ "x": 156,
+ "y": 317,
"w": 24,
"h": 17
}
},
{
- "filename": "676-kabuki",
+ "filename": "692s",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -3337,246 +3211,15 @@
},
"spriteSourceSize": {
"x": 8,
- "y": 3,
- "w": 25,
- "h": 25
+ "y": 11,
+ "w": 24,
+ "h": 17
},
"frame": {
- "x": 178,
- "y": 273,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "676-la-reine",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 105,
- "y": 282,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "711-super",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 23,
- "h": 25
- },
- "frame": {
- "x": 130,
- "y": 282,
- "w": 23,
- "h": 25
- }
- },
- {
- "filename": "676s-debutante",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 153,
- "y": 284,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "676s-kabuki",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 101,
- "y": 307,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "676s-la-reine",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 126,
- "y": 307,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "709",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 151,
- "y": 309,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "709s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 25,
- "h": 25
- },
- "frame": {
- "x": 104,
- "y": 332,
- "w": 25,
- "h": 25
- }
- },
- {
- "filename": "678-female",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 21,
- "h": 22
- },
- "frame": {
- "x": 129,
- "y": 332,
- "w": 21,
- "h": 22
- }
- },
- {
- "filename": "657s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 23,
- "h": 22
- },
- "frame": {
- "x": 150,
- "y": 334,
- "w": 23,
- "h": 22
- }
- },
- {
- "filename": "711s-large",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 4,
- "w": 23,
- "h": 25
- },
- "frame": {
- "x": 106,
- "y": 357,
- "w": 23,
- "h": 25
- }
- },
- {
- "filename": "711s-super",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 23,
- "h": 25
- },
- "frame": {
- "x": 106,
- "y": 382,
- "w": 23,
- "h": 25
+ "x": 180,
+ "y": 322,
+ "w": 24,
+ "h": 17
}
},
{
@@ -3594,12 +3237,75 @@
"h": 22
},
"frame": {
- "x": 106,
- "y": 407,
+ "x": 204,
+ "y": 324,
"w": 23,
"h": 22
}
},
+ {
+ "filename": "659",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 3,
+ "w": 16,
+ "h": 25
+ },
+ "frame": {
+ "x": 78,
+ "y": 479,
+ "w": 16,
+ "h": 25
+ }
+ },
+ {
+ "filename": "683s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 5,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 78,
+ "y": 504,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "659s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 3,
+ "w": 16,
+ "h": 25
+ },
+ "frame": {
+ "x": 80,
+ "y": 527,
+ "w": 16,
+ "h": 25
+ }
+ },
{
"filename": "673s",
"rotated": false,
@@ -3615,14 +3321,119 @@
"h": 22
},
"frame": {
- "x": 106,
- "y": 429,
+ "x": 227,
+ "y": 341,
"w": 23,
"h": 22
}
},
{
- "filename": "678",
+ "filename": "679s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 14,
+ "y": 4,
+ "w": 18,
+ "h": 24
+ },
+ "frame": {
+ "x": 79,
+ "y": 329,
+ "w": 18,
+ "h": 24
+ }
+ },
+ {
+ "filename": "695",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 4,
+ "w": 22,
+ "h": 24
+ },
+ "frame": {
+ "x": 97,
+ "y": 327,
+ "w": 22,
+ "h": 24
+ }
+ },
+ {
+ "filename": "695s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 4,
+ "w": 22,
+ "h": 24
+ },
+ "frame": {
+ "x": 79,
+ "y": 353,
+ "w": 22,
+ "h": 24
+ }
+ },
+ {
+ "filename": "700",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 79,
+ "y": 377,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "700s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 22,
+ "h": 23
+ },
+ "frame": {
+ "x": 79,
+ "y": 400,
+ "w": 22,
+ "h": 23
+ }
+ },
+ {
+ "filename": "651",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -3636,56 +3447,14 @@
"h": 22
},
"frame": {
- "x": 129,
- "y": 354,
+ "x": 79,
+ "y": 423,
"w": 21,
"h": 22
}
},
{
- "filename": "2670",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 106,
- "y": 451,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "2670s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 7,
- "w": 23,
- "h": 21
- },
- "frame": {
- "x": 106,
- "y": 472,
- "w": 23,
- "h": 21
- }
- },
- {
- "filename": "667",
+ "filename": "651s",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -3694,15 +3463,120 @@
},
"spriteSourceSize": {
"x": 10,
- "y": 8,
+ "y": 6,
"w": 21,
- "h": 20
+ "h": 22
},
"frame": {
- "x": 106,
- "y": 493,
+ "x": 79,
+ "y": 445,
"w": 21,
- "h": 20
+ "h": 22
+ }
+ },
+ {
+ "filename": "685",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 20,
+ "h": 23
+ },
+ "frame": {
+ "x": 101,
+ "y": 351,
+ "w": 20,
+ "h": 23
+ }
+ },
+ {
+ "filename": "685s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 5,
+ "w": 20,
+ "h": 23
+ },
+ "frame": {
+ "x": 101,
+ "y": 374,
+ "w": 20,
+ "h": 23
+ }
+ },
+ {
+ "filename": "654",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 20,
+ "h": 22
+ },
+ "frame": {
+ "x": 101,
+ "y": 397,
+ "w": 20,
+ "h": 22
+ }
+ },
+ {
+ "filename": "678-female",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 119,
+ "y": 329,
+ "w": 21,
+ "h": 22
+ }
+ },
+ {
+ "filename": "688",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 140,
+ "y": 329,
+ "w": 16,
+ "h": 24
}
},
{
@@ -3720,12 +3594,117 @@
"h": 22
},
"frame": {
- "x": 120,
- "y": 513,
+ "x": 121,
+ "y": 351,
"w": 19,
"h": 22
}
},
+ {
+ "filename": "701",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 9,
+ "w": 23,
+ "h": 19
+ },
+ "frame": {
+ "x": 156,
+ "y": 334,
+ "w": 23,
+ "h": 19
+ }
+ },
+ {
+ "filename": "2670",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 140,
+ "y": 353,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "670-orange",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 22
+ },
+ "frame": {
+ "x": 121,
+ "y": 373,
+ "w": 19,
+ "h": 22
+ }
+ },
+ {
+ "filename": "2670s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 7,
+ "w": 23,
+ "h": 21
+ },
+ "frame": {
+ "x": 140,
+ "y": 374,
+ "w": 23,
+ "h": 21
+ }
+ },
+ {
+ "filename": "678",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 21,
+ "h": 22
+ },
+ "frame": {
+ "x": 121,
+ "y": 395,
+ "w": 21,
+ "h": 22
+ }
+ },
{
"filename": "678s-female",
"rotated": false,
@@ -3741,12 +3720,33 @@
"h": 22
},
"frame": {
- "x": 129,
- "y": 376,
+ "x": 142,
+ "y": 395,
"w": 21,
"h": 22
}
},
+ {
+ "filename": "688s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 4,
+ "w": 16,
+ "h": 24
+ },
+ "frame": {
+ "x": 163,
+ "y": 353,
+ "w": 16,
+ "h": 24
+ }
+ },
{
"filename": "678s",
"rotated": false,
@@ -3762,12 +3762,180 @@
"h": 22
},
"frame": {
- "x": 150,
- "y": 356,
+ "x": 179,
+ "y": 339,
"w": 21,
"h": 22
}
},
+ {
+ "filename": "654s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 20,
+ "h": 22
+ },
+ "frame": {
+ "x": 163,
+ "y": 377,
+ "w": 20,
+ "h": 22
+ }
+ },
+ {
+ "filename": "662",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 22,
+ "h": 20
+ },
+ "frame": {
+ "x": 163,
+ "y": 399,
+ "w": 22,
+ "h": 20
+ }
+ },
+ {
+ "filename": "684",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 12,
+ "w": 17,
+ "h": 16
+ },
+ "frame": {
+ "x": 179,
+ "y": 361,
+ "w": 17,
+ "h": 16
+ }
+ },
+ {
+ "filename": "670-red",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 22
+ },
+ "frame": {
+ "x": 183,
+ "y": 377,
+ "w": 19,
+ "h": 22
+ }
+ },
+ {
+ "filename": "662s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 22,
+ "h": 20
+ },
+ "frame": {
+ "x": 185,
+ "y": 399,
+ "w": 22,
+ "h": 20
+ }
+ },
+ {
+ "filename": "696",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 12,
+ "w": 20,
+ "h": 17
+ },
+ "frame": {
+ "x": 207,
+ "y": 346,
+ "w": 20,
+ "h": 17
+ }
+ },
+ {
+ "filename": "701s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 9,
+ "w": 23,
+ "h": 19
+ },
+ "frame": {
+ "x": 121,
+ "y": 417,
+ "w": 23,
+ "h": 19
+ }
+ },
+ {
+ "filename": "696s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 12,
+ "w": 20,
+ "h": 17
+ },
+ "frame": {
+ "x": 101,
+ "y": 419,
+ "w": 20,
+ "h": 17
+ }
+ },
{
"filename": "719",
"rotated": false,
@@ -3783,8 +3951,8 @@
"h": 22
},
"frame": {
- "x": 129,
- "y": 398,
+ "x": 100,
+ "y": 436,
"w": 21,
"h": 22
}
@@ -3804,14 +3972,14 @@
"h": 22
},
"frame": {
- "x": 150,
- "y": 378,
+ "x": 121,
+ "y": 436,
"w": 21,
"h": 22
}
},
{
- "filename": "679",
+ "filename": "670-white",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -3819,20 +3987,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 14,
- "y": 4,
- "w": 18,
- "h": 24
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 22
},
"frame": {
- "x": 129,
- "y": 420,
- "w": 18,
- "h": 24
+ "x": 144,
+ "y": 417,
+ "w": 19,
+ "h": 22
}
},
{
- "filename": "679s",
+ "filename": "667",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -3840,16 +4008,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 14,
- "y": 4,
- "w": 18,
- "h": 24
+ "x": 10,
+ "y": 8,
+ "w": 21,
+ "h": 20
},
"frame": {
- "x": 129,
- "y": 444,
- "w": 18,
- "h": 24
+ "x": 163,
+ "y": 419,
+ "w": 21,
+ "h": 20
}
},
{
@@ -3867,117 +4035,12 @@
"h": 20
},
"frame": {
- "x": 150,
- "y": 400,
+ "x": 184,
+ "y": 419,
"w": 21,
"h": 20
}
},
- {
- "filename": "683s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 5,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 147,
- "y": 420,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "670-orange",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 19,
- "h": 22
- },
- "frame": {
- "x": 147,
- "y": 443,
- "w": 19,
- "h": 22
- }
- },
- {
- "filename": "698",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 4,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 129,
- "y": 468,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "656",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 10,
- "w": 18,
- "h": 19
- },
- "frame": {
- "x": 138,
- "y": 535,
- "w": 18,
- "h": 19
- }
- },
- {
- "filename": "692s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 11,
- "w": 24,
- "h": 17
- },
- "frame": {
- "x": 178,
- "y": 298,
- "w": 24,
- "h": 17
- }
- },
{
"filename": "714",
"rotated": false,
@@ -3993,8 +4056,29 @@
"h": 20
},
"frame": {
- "x": 176,
- "y": 315,
+ "x": 142,
+ "y": 439,
+ "w": 21,
+ "h": 20
+ }
+ },
+ {
+ "filename": "714s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 6,
+ "w": 21,
+ "h": 20
+ },
+ "frame": {
+ "x": 163,
+ "y": 439,
"w": 21,
"h": 20
}
@@ -4014,14 +4098,14 @@
"h": 21
},
"frame": {
- "x": 173,
- "y": 335,
+ "x": 184,
+ "y": 439,
"w": 20,
"h": 21
}
},
{
- "filename": "670-red",
+ "filename": "702",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -4029,20 +4113,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 19,
- "h": 22
+ "x": 8,
+ "y": 11,
+ "w": 22,
+ "h": 17
},
"frame": {
- "x": 171,
- "y": 356,
- "w": 19,
- "h": 22
+ "x": 100,
+ "y": 458,
+ "w": 22,
+ "h": 17
}
},
{
- "filename": "670-white",
+ "filename": "710s-super",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -4051,15 +4135,57 @@
},
"spriteSourceSize": {
"x": 10,
- "y": 6,
- "w": 19,
- "h": 22
+ "y": 7,
+ "w": 20,
+ "h": 21
},
"frame": {
- "x": 171,
- "y": 378,
- "w": 19,
- "h": 22
+ "x": 122,
+ "y": 458,
+ "w": 20,
+ "h": 21
+ }
+ },
+ {
+ "filename": "720",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 21,
+ "h": 19
+ },
+ "frame": {
+ "x": 142,
+ "y": 459,
+ "w": 21,
+ "h": 19
+ }
+ },
+ {
+ "filename": "720s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 21,
+ "h": 19
+ },
+ "frame": {
+ "x": 163,
+ "y": 459,
+ "w": 21,
+ "h": 19
}
},
{
@@ -4077,8 +4203,8 @@
"h": 22
},
"frame": {
- "x": 171,
- "y": 400,
+ "x": 184,
+ "y": 460,
"w": 19,
"h": 22
}
@@ -4098,8 +4224,8 @@
"h": 22
},
"frame": {
- "x": 166,
- "y": 422,
+ "x": 94,
+ "y": 475,
"w": 19,
"h": 22
}
@@ -4119,12 +4245,327 @@
"h": 22
},
"frame": {
- "x": 166,
- "y": 444,
+ "x": 97,
+ "y": 497,
"w": 19,
"h": 22
}
},
+ {
+ "filename": "702s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 11,
+ "w": 22,
+ "h": 17
+ },
+ "frame": {
+ "x": 113,
+ "y": 479,
+ "w": 22,
+ "h": 17
+ }
+ },
+ {
+ "filename": "670s-red",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 22
+ },
+ "frame": {
+ "x": 116,
+ "y": 496,
+ "w": 19,
+ "h": 22
+ }
+ },
+ {
+ "filename": "670s-white",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 22
+ },
+ "frame": {
+ "x": 135,
+ "y": 479,
+ "w": 19,
+ "h": 22
+ }
+ },
+ {
+ "filename": "670s-yellow",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 6,
+ "w": 19,
+ "h": 22
+ },
+ "frame": {
+ "x": 154,
+ "y": 478,
+ "w": 19,
+ "h": 22
+ }
+ },
+ {
+ "filename": "656",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 10,
+ "w": 18,
+ "h": 19
+ },
+ "frame": {
+ "x": 135,
+ "y": 501,
+ "w": 18,
+ "h": 19
+ }
+ },
+ {
+ "filename": "656s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 10,
+ "w": 18,
+ "h": 19
+ },
+ "frame": {
+ "x": 97,
+ "y": 519,
+ "w": 18,
+ "h": 19
+ }
+ },
+ {
+ "filename": "653s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 9,
+ "w": 17,
+ "h": 19
+ },
+ "frame": {
+ "x": 96,
+ "y": 538,
+ "w": 17,
+ "h": 19
+ }
+ },
+ {
+ "filename": "710",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 9,
+ "w": 17,
+ "h": 19
+ },
+ "frame": {
+ "x": 113,
+ "y": 538,
+ "w": 17,
+ "h": 19
+ }
+ },
+ {
+ "filename": "674",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 9,
+ "w": 15,
+ "h": 19
+ },
+ "frame": {
+ "x": 115,
+ "y": 519,
+ "w": 15,
+ "h": 19
+ }
+ },
+ {
+ "filename": "711-small",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 18,
+ "h": 22
+ },
+ "frame": {
+ "x": 130,
+ "y": 520,
+ "w": 18,
+ "h": 22
+ }
+ },
+ {
+ "filename": "661",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 13,
+ "w": 18,
+ "h": 15
+ },
+ "frame": {
+ "x": 130,
+ "y": 542,
+ "w": 18,
+ "h": 15
+ }
+ },
+ {
+ "filename": "705",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 6,
+ "w": 15,
+ "h": 22
+ },
+ "frame": {
+ "x": 148,
+ "y": 520,
+ "w": 15,
+ "h": 22
+ }
+ },
+ {
+ "filename": "661s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 13,
+ "w": 18,
+ "h": 15
+ },
+ "frame": {
+ "x": 148,
+ "y": 542,
+ "w": 18,
+ "h": 15
+ }
+ },
+ {
+ "filename": "674s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 9,
+ "w": 15,
+ "h": 19
+ },
+ "frame": {
+ "x": 153,
+ "y": 501,
+ "w": 15,
+ "h": 19
+ }
+ },
+ {
+ "filename": "705s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 6,
+ "w": 15,
+ "h": 22
+ },
+ "frame": {
+ "x": 163,
+ "y": 520,
+ "w": 15,
+ "h": 22
+ }
+ },
{
"filename": "686",
"rotated": false,
@@ -4140,14 +4581,14 @@
"h": 20
},
"frame": {
- "x": 127,
- "y": 493,
+ "x": 168,
+ "y": 500,
"w": 18,
"h": 20
}
},
{
- "filename": "650s",
+ "filename": "672",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -4155,16 +4596,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 12,
- "y": 6,
+ "x": 11,
+ "y": 10,
"w": 17,
- "h": 22
+ "h": 18
},
"frame": {
- "x": 139,
- "y": 513,
+ "x": 173,
+ "y": 482,
"w": 17,
- "h": 22
+ "h": 18
}
},
{
@@ -4182,119 +4623,14 @@
"h": 21
},
"frame": {
- "x": 145,
- "y": 492,
+ "x": 190,
+ "y": 482,
"w": 14,
"h": 21
}
},
{
- "filename": "688",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 146,
- "y": 468,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "670s-red",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 19,
- "h": 22
- },
- "frame": {
- "x": 162,
- "y": 466,
- "w": 19,
- "h": 22
- }
- },
- {
- "filename": "688s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 4,
- "w": 16,
- "h": 24
- },
- "frame": {
- "x": 185,
- "y": 422,
- "w": 16,
- "h": 24
- }
- },
- {
- "filename": "670s-white",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 19,
- "h": 22
- },
- "frame": {
- "x": 185,
- "y": 446,
- "w": 19,
- "h": 22
- }
- },
- {
- "filename": "714s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 6,
- "w": 21,
- "h": 20
- },
- "frame": {
- "x": 181,
- "y": 468,
- "w": 21,
- "h": 20
- }
- },
- {
- "filename": "698s",
+ "filename": "686s",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -4303,120 +4639,15 @@
},
"spriteSourceSize": {
"x": 11,
- "y": 4,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 156,
- "y": 513,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "702",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 11,
- "w": 22,
- "h": 17
- },
- "frame": {
- "x": 156,
- "y": 537,
- "w": 22,
- "h": 17
- }
- },
- {
- "filename": "664s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 7,
- "w": 14,
- "h": 21
- },
- "frame": {
- "x": 159,
- "y": 492,
- "w": 14,
- "h": 21
- }
- },
- {
- "filename": "670s-yellow",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 6,
- "w": 19,
- "h": 22
- },
- "frame": {
- "x": 173,
- "y": 488,
- "w": 19,
- "h": 22
- }
- },
- {
- "filename": "710s-super",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 20,
- "h": 21
- },
- "frame": {
- "x": 173,
- "y": 510,
- "w": 20,
- "h": 21
- }
- },
- {
- "filename": "711-small",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
+ "y": 8,
"w": 18,
- "h": 22
+ "h": 20
},
"frame": {
- "x": 192,
- "y": 488,
+ "x": 186,
+ "y": 503,
"w": 18,
- "h": 22
+ "h": 20
}
},
{
@@ -4434,14 +4665,14 @@
"h": 21
},
"frame": {
- "x": 193,
- "y": 510,
+ "x": 178,
+ "y": 523,
"w": 18,
"h": 21
}
},
{
- "filename": "696",
+ "filename": "664s",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -4449,16 +4680,58 @@
"h": 30
},
"spriteSourceSize": {
- "x": 10,
- "y": 12,
- "w": 20,
- "h": 17
+ "x": 13,
+ "y": 7,
+ "w": 14,
+ "h": 21
},
"frame": {
- "x": 210,
- "y": 297,
- "w": 20,
- "h": 17
+ "x": 196,
+ "y": 523,
+ "w": 14,
+ "h": 21
+ }
+ },
+ {
+ "filename": "703",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 15,
+ "w": 14,
+ "h": 13
+ },
+ "frame": {
+ "x": 166,
+ "y": 544,
+ "w": 14,
+ "h": 13
+ }
+ },
+ {
+ "filename": "703s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 15,
+ "w": 14,
+ "h": 13
+ },
+ "frame": {
+ "x": 180,
+ "y": 544,
+ "w": 14,
+ "h": 13
}
},
{
@@ -4476,8 +4749,8 @@
"h": 22
},
"frame": {
- "x": 178,
- "y": 531,
+ "x": 203,
+ "y": 460,
"w": 18,
"h": 22
}
@@ -4497,243 +4770,12 @@
"h": 21
},
"frame": {
- "x": 196,
- "y": 531,
+ "x": 204,
+ "y": 439,
"w": 18,
"h": 21
}
},
- {
- "filename": "686s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 8,
- "w": 18,
- "h": 20
- },
- "frame": {
- "x": 202,
- "y": 468,
- "w": 18,
- "h": 20
- }
- },
- {
- "filename": "710-large",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 8,
- "w": 17,
- "h": 20
- },
- "frame": {
- "x": 210,
- "y": 488,
- "w": 17,
- "h": 20
- }
- },
- {
- "filename": "710s-large",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 8,
- "w": 17,
- "h": 20
- },
- "frame": {
- "x": 211,
- "y": 508,
- "w": 17,
- "h": 20
- }
- },
- {
- "filename": "653",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 9,
- "w": 17,
- "h": 19
- },
- "frame": {
- "x": 214,
- "y": 528,
- "w": 17,
- "h": 19
- }
- },
- {
- "filename": "653s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 9,
- "w": 17,
- "h": 19
- },
- "frame": {
- "x": 197,
- "y": 315,
- "w": 17,
- "h": 19
- }
- },
- {
- "filename": "677",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 10,
- "w": 16,
- "h": 18
- },
- "frame": {
- "x": 214,
- "y": 314,
- "w": 16,
- "h": 18
- }
- },
- {
- "filename": "702s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 11,
- "w": 22,
- "h": 17
- },
- "frame": {
- "x": 230,
- "y": 315,
- "w": 22,
- "h": 17
- }
- },
- {
- "filename": "656s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 10,
- "w": 18,
- "h": 19
- },
- "frame": {
- "x": 193,
- "y": 335,
- "w": 18,
- "h": 19
- }
- },
- {
- "filename": "674",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 9,
- "w": 15,
- "h": 19
- },
- "frame": {
- "x": 190,
- "y": 356,
- "w": 15,
- "h": 19
- }
- },
- {
- "filename": "674s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 9,
- "w": 15,
- "h": 19
- },
- "frame": {
- "x": 190,
- "y": 375,
- "w": 15,
- "h": 19
- }
- },
- {
- "filename": "710",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 9,
- "w": 17,
- "h": 19
- },
- "frame": {
- "x": 190,
- "y": 394,
- "w": 17,
- "h": 19
- }
- },
{
"filename": "710s",
"rotated": false,
@@ -4749,8 +4791,8 @@
"h": 19
},
"frame": {
- "x": 205,
- "y": 354,
+ "x": 204,
+ "y": 482,
"w": 17,
"h": 19
}
@@ -4770,8 +4812,8 @@
"h": 18
},
"frame": {
- "x": 205,
- "y": 373,
+ "x": 204,
+ "y": 501,
"w": 17,
"h": 18
}
@@ -4791,14 +4833,14 @@
"h": 18
},
"frame": {
- "x": 207,
- "y": 391,
+ "x": 210,
+ "y": 519,
"w": 15,
"h": 18
}
},
{
- "filename": "696s",
+ "filename": "665",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -4806,18 +4848,39 @@
"h": 30
},
"spriteSourceSize": {
- "x": 10,
- "y": 12,
- "w": 20,
+ "x": 12,
+ "y": 11,
+ "w": 16,
"h": 17
},
"frame": {
- "x": 214,
- "y": 332,
- "w": 20,
+ "x": 210,
+ "y": 537,
+ "w": 16,
"h": 17
}
},
+ {
+ "filename": "704",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 14,
+ "y": 14,
+ "w": 12,
+ "h": 14
+ },
+ "frame": {
+ "x": 196,
+ "y": 363,
+ "w": 12,
+ "h": 14
+ }
+ },
{
"filename": "694",
"rotated": false,
@@ -4833,8 +4896,8 @@
"h": 17
},
"frame": {
- "x": 234,
- "y": 332,
+ "x": 208,
+ "y": 363,
"w": 18,
"h": 17
}
@@ -4854,33 +4917,12 @@
"h": 17
},
"frame": {
- "x": 222,
- "y": 349,
+ "x": 226,
+ "y": 363,
"w": 18,
"h": 17
}
},
- {
- "filename": "703s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 15,
- "w": 14,
- "h": 13
- },
- "frame": {
- "x": 240,
- "y": 349,
- "w": 14,
- "h": 13
- }
- },
{
"filename": "712",
"rotated": false,
@@ -4896,33 +4938,12 @@
"h": 18
},
"frame": {
- "x": 222,
- "y": 366,
+ "x": 202,
+ "y": 380,
"w": 17,
"h": 18
}
},
- {
- "filename": "669-orange",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 10,
- "w": 15,
- "h": 18
- },
- "frame": {
- "x": 239,
- "y": 366,
- "w": 15,
- "h": 18
- }
- },
{
"filename": "712s",
"rotated": false,
@@ -4938,12 +4959,54 @@
"h": 18
},
"frame": {
- "x": 222,
- "y": 384,
+ "x": 219,
+ "y": 380,
"w": 17,
"h": 18
}
},
+ {
+ "filename": "677",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 10,
+ "w": 16,
+ "h": 18
+ },
+ "frame": {
+ "x": 207,
+ "y": 398,
+ "w": 16,
+ "h": 18
+ }
+ },
+ {
+ "filename": "669-orange",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 10,
+ "w": 15,
+ "h": 18
+ },
+ "frame": {
+ "x": 223,
+ "y": 398,
+ "w": 15,
+ "h": 18
+ }
+ },
{
"filename": "669-red",
"rotated": false,
@@ -4959,75 +5022,12 @@
"h": 18
},
"frame": {
- "x": 239,
- "y": 384,
+ "x": 236,
+ "y": 380,
"w": 15,
"h": 18
}
},
- {
- "filename": "661",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 13,
- "w": 18,
- "h": 15
- },
- "frame": {
- "x": 222,
- "y": 402,
- "w": 18,
- "h": 15
- }
- },
- {
- "filename": "669-white",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 13,
- "y": 10,
- "w": 15,
- "h": 18
- },
- "frame": {
- "x": 207,
- "y": 409,
- "w": 15,
- "h": 18
- }
- },
- {
- "filename": "661s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 13,
- "w": 18,
- "h": 15
- },
- "frame": {
- "x": 222,
- "y": 417,
- "w": 18,
- "h": 15
- }
- },
{
"filename": "677s",
"rotated": false,
@@ -5043,14 +5043,14 @@
"h": 18
},
"frame": {
- "x": 201,
- "y": 427,
+ "x": 238,
+ "y": 398,
"w": 16,
"h": 18
}
},
{
- "filename": "669-yellow",
+ "filename": "669-white",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -5064,54 +5064,12 @@
"h": 18
},
"frame": {
- "x": 204,
- "y": 445,
+ "x": 205,
+ "y": 419,
"w": 15,
"h": 18
}
},
- {
- "filename": "704",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 14,
- "y": 14,
- "w": 12,
- "h": 14
- },
- "frame": {
- "x": 240,
- "y": 402,
- "w": 12,
- "h": 14
- }
- },
- {
- "filename": "704s",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 14,
- "y": 14,
- "w": 12,
- "h": 14
- },
- "frame": {
- "x": 240,
- "y": 416,
- "w": 12,
- "h": 14
- }
- },
{
"filename": "665s",
"rotated": false,
@@ -5127,8 +5085,8 @@
"h": 17
},
"frame": {
- "x": 219,
- "y": 432,
+ "x": 220,
+ "y": 416,
"w": 16,
"h": 17
}
@@ -5148,12 +5106,33 @@
"h": 16
},
"frame": {
- "x": 219,
- "y": 449,
+ "x": 236,
+ "y": 416,
"w": 17,
"h": 16
}
},
+ {
+ "filename": "669-yellow",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 13,
+ "y": 10,
+ "w": 15,
+ "h": 18
+ },
+ "frame": {
+ "x": 222,
+ "y": 433,
+ "w": 15,
+ "h": 18
+ }
+ },
{
"filename": "669s-blue",
"rotated": false,
@@ -5169,31 +5148,10 @@
"h": 18
},
"frame": {
- "x": 220,
- "y": 465,
- "w": 15,
- "h": 18
- }
- },
- {
- "filename": "710-small",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 9,
- "w": 15,
- "h": 17
- },
- "frame": {
- "x": 235,
+ "x": 237,
"y": 432,
"w": 15,
- "h": 17
+ "h": 18
}
},
{
@@ -5211,8 +5169,8 @@
"h": 18
},
"frame": {
- "x": 236,
- "y": 449,
+ "x": 222,
+ "y": 451,
"w": 15,
"h": 18
}
@@ -5232,8 +5190,8 @@
"h": 18
},
"frame": {
- "x": 235,
- "y": 467,
+ "x": 237,
+ "y": 450,
"w": 15,
"h": 18
}
@@ -5253,8 +5211,8 @@
"h": 18
},
"frame": {
- "x": 227,
- "y": 485,
+ "x": 221,
+ "y": 469,
"w": 15,
"h": 18
}
@@ -5274,12 +5232,54 @@
"h": 18
},
"frame": {
- "x": 228,
- "y": 503,
+ "x": 221,
+ "y": 487,
"w": 15,
"h": 18
}
},
+ {
+ "filename": "704s",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 14,
+ "y": 14,
+ "w": 12,
+ "h": 14
+ },
+ "frame": {
+ "x": 221,
+ "y": 505,
+ "w": 12,
+ "h": 14
+ }
+ },
+ {
+ "filename": "710-small",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 9,
+ "w": 15,
+ "h": 17
+ },
+ "frame": {
+ "x": 225,
+ "y": 519,
+ "w": 15,
+ "h": 17
+ }
+ },
{
"filename": "710s-small",
"rotated": false,
@@ -5295,12 +5295,33 @@
"h": 17
},
"frame": {
- "x": 231,
- "y": 521,
+ "x": 226,
+ "y": 536,
"w": 15,
"h": 17
}
},
+ {
+ "filename": "682",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 12,
+ "w": 15,
+ "h": 16
+ },
+ "frame": {
+ "x": 236,
+ "y": 469,
+ "w": 15,
+ "h": 16
+ }
+ },
{
"filename": "682s",
"rotated": false,
@@ -5316,8 +5337,8 @@
"h": 16
},
"frame": {
- "x": 231,
- "y": 538,
+ "x": 236,
+ "y": 485,
"w": 15,
"h": 16
}
@@ -5328,6 +5349,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:049c5b1c50b54f73bca369d3cece4336:2c861a7365c9c9423b050bde6e7e0742:96737d38f2029744a75c1ee001bc1929$"
+ "smartupdate": "$TexturePacker:SmartUpdate:a80f4550917ab6469d19d3cdd7fc8ebc:a52ccf05d060a2fd0a793e2f02508109:96737d38f2029744a75c1ee001bc1929$"
}
}
diff --git a/public/images/pokemon_icons_6.png b/public/images/pokemon_icons_6.png
index 9373aca8b..46ff8597c 100644
Binary files a/public/images/pokemon_icons_6.png and b/public/images/pokemon_icons_6.png differ
diff --git a/public/images/pokemon_icons_8v.json b/public/images/pokemon_icons_8v.json
index 0f1b8c30a..f4af38d82 100644
--- a/public/images/pokemon_icons_8v.json
+++ b/public/images/pokemon_icons_8v.json
@@ -4,8 +4,8 @@
"image": "pokemon_icons_8v.png",
"format": "RGBA8888",
"size": {
- "w": 196,
- "h": 196
+ "w": 203,
+ "h": 203
},
"scale": 1,
"frames": [
@@ -44,11 +44,53 @@
"w": 40,
"h": 30
},
+ "frame": {
+ "x": 0,
+ "y": 30,
+ "w": 40,
+ "h": 30
+ }
+ },
+ {
+ "filename": "851_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 39,
+ "h": 30
+ },
"frame": {
"x": 40,
"y": 0,
+ "w": 39,
+ "h": 30
+ }
+ },
+ {
+ "filename": "851_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
"w": 40,
"h": 30
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 39,
+ "h": 30
+ },
+ "frame": {
+ "x": 0,
+ "y": 60,
+ "w": 39,
+ "h": 30
}
},
{
@@ -66,8 +108,8 @@
"h": 30
},
"frame": {
- "x": 80,
- "y": 0,
+ "x": 40,
+ "y": 30,
"w": 35,
"h": 30
}
@@ -87,7 +129,7 @@
"h": 30
},
"frame": {
- "x": 115,
+ "x": 79,
"y": 0,
"w": 35,
"h": 30
@@ -108,8 +150,8 @@
"h": 30
},
"frame": {
- "x": 150,
- "y": 0,
+ "x": 0,
+ "y": 90,
"w": 31,
"h": 30
}
@@ -129,8 +171,8 @@
"h": 30
},
"frame": {
- "x": 0,
- "y": 30,
+ "x": 39,
+ "y": 60,
"w": 31,
"h": 30
}
@@ -150,8 +192,8 @@
"h": 28
},
"frame": {
- "x": 0,
- "y": 60,
+ "x": 75,
+ "y": 30,
"w": 32,
"h": 28
}
@@ -171,8 +213,8 @@
"h": 28
},
"frame": {
- "x": 31,
- "y": 30,
+ "x": 114,
+ "y": 0,
"w": 32,
"h": 28
}
@@ -192,8 +234,8 @@
"h": 28
},
"frame": {
- "x": 0,
- "y": 88,
+ "x": 31,
+ "y": 90,
"w": 32,
"h": 28
}
@@ -214,7 +256,7 @@
},
"frame": {
"x": 0,
- "y": 116,
+ "y": 120,
"w": 28,
"h": 27
}
@@ -234,117 +276,12 @@
"h": 27
},
"frame": {
- "x": 0,
- "y": 143,
+ "x": 146,
+ "y": 0,
"w": 28,
"h": 27
}
},
- {
- "filename": "886_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 2,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 0,
- "y": 170,
- "w": 28,
- "h": 26
- }
- },
- {
- "filename": "900_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 2,
- "w": 27,
- "h": 27
- },
- "frame": {
- "x": 28,
- "y": 116,
- "w": 27,
- "h": 27
- }
- },
- {
- "filename": "900_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 2,
- "w": 27,
- "h": 27
- },
- "frame": {
- "x": 28,
- "y": 143,
- "w": 27,
- "h": 27
- }
- },
- {
- "filename": "886_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 2,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 28,
- "y": 170,
- "w": 28,
- "h": 26
- }
- },
- {
- "filename": "886_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 2,
- "w": 28,
- "h": 26
- },
- "frame": {
- "x": 32,
- "y": 58,
- "w": 28,
- "h": 26
- }
- },
{
"filename": "4078_2",
"rotated": false,
@@ -360,8 +297,8 @@
"h": 25
},
"frame": {
- "x": 32,
- "y": 84,
+ "x": 174,
+ "y": 0,
"w": 29,
"h": 25
}
@@ -381,14 +318,14 @@
"h": 25
},
"frame": {
- "x": 60,
- "y": 58,
+ "x": 174,
+ "y": 25,
"w": 29,
"h": 25
}
},
{
- "filename": "6571_2",
+ "filename": "886_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -397,19 +334,19 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 4,
- "w": 27,
- "h": 25
+ "y": 2,
+ "w": 28,
+ "h": 26
},
"frame": {
- "x": 63,
- "y": 30,
- "w": 27,
- "h": 25
+ "x": 0,
+ "y": 147,
+ "w": 28,
+ "h": 26
}
},
{
- "filename": "6571_3",
+ "filename": "886_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -418,19 +355,19 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 4,
- "w": 27,
- "h": 25
+ "y": 2,
+ "w": 28,
+ "h": 26
},
"frame": {
- "x": 55,
- "y": 109,
- "w": 27,
- "h": 25
+ "x": 0,
+ "y": 173,
+ "w": 28,
+ "h": 26
}
},
{
- "filename": "873_1",
+ "filename": "886_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -439,15 +376,15 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 3,
- "w": 27,
- "h": 24
+ "y": 2,
+ "w": 28,
+ "h": 26
},
"frame": {
- "x": 61,
- "y": 83,
- "w": 27,
- "h": 24
+ "x": 146,
+ "y": 27,
+ "w": 28,
+ "h": 26
}
},
{
@@ -465,8 +402,8 @@
"h": 27
},
"frame": {
- "x": 55,
- "y": 134,
+ "x": 63,
+ "y": 90,
"w": 24,
"h": 27
}
@@ -486,14 +423,14 @@
"h": 27
},
"frame": {
- "x": 56,
- "y": 161,
+ "x": 107,
+ "y": 30,
"w": 24,
"h": 27
}
},
{
- "filename": "873_2",
+ "filename": "900_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -502,19 +439,19 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 3,
+ "y": 2,
"w": 27,
- "h": 24
+ "h": 27
},
"frame": {
- "x": 79,
- "y": 134,
+ "x": 70,
+ "y": 60,
"w": 27,
- "h": 24
+ "h": 27
}
},
{
- "filename": "873_3",
+ "filename": "900_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -523,204 +460,15 @@
},
"spriteSourceSize": {
"x": 6,
- "y": 3,
+ "y": 2,
"w": 27,
- "h": 24
+ "h": 27
},
"frame": {
- "x": 82,
- "y": 107,
+ "x": 97,
+ "y": 58,
"w": 27,
- "h": 24
- }
- },
- {
- "filename": "4077_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 26,
- "h": 23
- },
- "frame": {
- "x": 88,
- "y": 83,
- "w": 26,
- "h": 23
- }
- },
- {
- "filename": "4077_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 3,
- "w": 26,
- "h": 23
- },
- "frame": {
- "x": 89,
- "y": 55,
- "w": 26,
- "h": 23
- }
- },
- {
- "filename": "857_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 24,
- "h": 24
- },
- "frame": {
- "x": 90,
- "y": 30,
- "w": 24,
- "h": 24
- }
- },
- {
- "filename": "857_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 3,
- "w": 24,
- "h": 24
- },
- "frame": {
- "x": 114,
- "y": 30,
- "w": 24,
- "h": 24
- }
- },
- {
- "filename": "4264_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 80,
- "y": 158,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "872_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 19,
- "h": 16
- },
- "frame": {
- "x": 80,
- "y": 180,
- "w": 19,
- "h": 16
- }
- },
- {
- "filename": "872_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 19,
- "h": 16
- },
- "frame": {
- "x": 99,
- "y": 180,
- "w": 19,
- "h": 16
- }
- },
- {
- "filename": "4264_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 24,
- "h": 22
- },
- "frame": {
- "x": 104,
- "y": 158,
- "w": 24,
- "h": 22
- }
- },
- {
- "filename": "872_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 7,
- "w": 19,
- "h": 16
- },
- "frame": {
- "x": 118,
- "y": 180,
- "w": 19,
- "h": 16
+ "h": 27
}
},
{
@@ -738,8 +486,8 @@
"h": 25
},
"frame": {
- "x": 106,
- "y": 131,
+ "x": 87,
+ "y": 87,
"w": 21,
"h": 25
}
@@ -759,8 +507,8 @@
"h": 25
},
"frame": {
- "x": 109,
- "y": 106,
+ "x": 108,
+ "y": 85,
"w": 21,
"h": 25
}
@@ -780,14 +528,14 @@
"h": 25
},
"frame": {
- "x": 127,
- "y": 131,
+ "x": 124,
+ "y": 57,
"w": 21,
"h": 25
}
},
{
- "filename": "885_1",
+ "filename": "6571_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -795,37 +543,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 26,
- "h": 19
+ "x": 6,
+ "y": 4,
+ "w": 27,
+ "h": 25
},
"frame": {
- "x": 128,
- "y": 156,
- "w": 26,
- "h": 19
- }
- },
- {
- "filename": "885_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 5,
- "w": 26,
- "h": 19
- },
- "frame": {
- "x": 137,
- "y": 175,
- "w": 26,
- "h": 19
+ "x": 145,
+ "y": 53,
+ "w": 27,
+ "h": 25
}
},
{
@@ -843,14 +570,77 @@
"h": 25
},
"frame": {
- "x": 114,
- "y": 78,
+ "x": 129,
+ "y": 82,
"w": 21,
"h": 25
}
},
{
- "filename": "885_3",
+ "filename": "6571_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 4,
+ "w": 27,
+ "h": 25
+ },
+ "frame": {
+ "x": 150,
+ "y": 78,
+ "w": 27,
+ "h": 25
+ }
+ },
+ {
+ "filename": "4077_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 3,
+ "w": 26,
+ "h": 23
+ },
+ "frame": {
+ "x": 177,
+ "y": 50,
+ "w": 26,
+ "h": 23
+ }
+ },
+ {
+ "filename": "4077_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 3,
+ "w": 26,
+ "h": 23
+ },
+ "frame": {
+ "x": 177,
+ "y": 73,
+ "w": 26,
+ "h": 23
+ }
+ },
+ {
+ "filename": "885_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -864,14 +654,14 @@
"h": 19
},
"frame": {
- "x": 130,
- "y": 103,
+ "x": 177,
+ "y": 96,
"w": 26,
"h": 19
}
},
{
- "filename": "6570_2",
+ "filename": "873_1",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -879,20 +669,20 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
- "y": 5,
- "w": 20,
+ "x": 6,
+ "y": 3,
+ "w": 27,
"h": 24
},
"frame": {
- "x": 148,
- "y": 122,
- "w": 20,
+ "x": 150,
+ "y": 103,
+ "w": 27,
"h": 24
}
},
{
- "filename": "6570_3",
+ "filename": "885_2",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -900,18 +690,144 @@
"h": 30
},
"spriteSourceSize": {
- "x": 11,
+ "x": 7,
"y": 5,
- "w": 20,
+ "w": 26,
+ "h": 19
+ },
+ "frame": {
+ "x": 177,
+ "y": 115,
+ "w": 26,
+ "h": 19
+ }
+ },
+ {
+ "filename": "873_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 3,
+ "w": 27,
"h": 24
},
"frame": {
- "x": 154,
- "y": 146,
- "w": 20,
+ "x": 31,
+ "y": 118,
+ "w": 27,
"h": 24
}
},
+ {
+ "filename": "873_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 3,
+ "w": 27,
+ "h": 24
+ },
+ "frame": {
+ "x": 28,
+ "y": 142,
+ "w": 27,
+ "h": 24
+ }
+ },
+ {
+ "filename": "857_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 24,
+ "h": 24
+ },
+ "frame": {
+ "x": 28,
+ "y": 166,
+ "w": 24,
+ "h": 24
+ }
+ },
+ {
+ "filename": "850_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 9,
+ "w": 23,
+ "h": 12
+ },
+ "frame": {
+ "x": 28,
+ "y": 190,
+ "w": 23,
+ "h": 12
+ }
+ },
+ {
+ "filename": "857_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 3,
+ "w": 24,
+ "h": 24
+ },
+ "frame": {
+ "x": 58,
+ "y": 118,
+ "w": 24,
+ "h": 24
+ }
+ },
+ {
+ "filename": "4264_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 24,
+ "h": 22
+ },
+ "frame": {
+ "x": 55,
+ "y": 142,
+ "w": 24,
+ "h": 22
+ }
+ },
{
"filename": "6549_2",
"rotated": false,
@@ -927,203 +843,35 @@
"h": 25
},
"frame": {
- "x": 163,
- "y": 170,
- "w": 18,
- "h": 25
- }
- },
- {
- "filename": "877-hangry_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 3,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 115,
- "y": 54,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "877-hangry_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 3,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 134,
- "y": 54,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "877-hangry_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 3,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 138,
- "y": 30,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "6549_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 4,
- "w": 18,
- "h": 25
- },
- "frame": {
- "x": 135,
- "y": 77,
- "w": 18,
- "h": 25
- }
- },
- {
- "filename": "877_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 3,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 153,
- "y": 53,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "877_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 3,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 157,
- "y": 30,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "877_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 3,
- "w": 19,
- "h": 23
- },
- "frame": {
- "x": 153,
- "y": 76,
- "w": 19,
- "h": 23
- }
- },
- {
- "filename": "4263_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 6,
- "w": 24,
- "h": 18
- },
- "frame": {
- "x": 156,
- "y": 99,
- "w": 24,
- "h": 18
- }
- },
- {
- "filename": "4263_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 6,
- "w": 24,
- "h": 18
- },
- "frame": {
- "x": 168,
+ "x": 82,
"y": 117,
+ "w": 18,
+ "h": 25
+ }
+ },
+ {
+ "filename": "4264_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
"w": 24,
- "h": 18
+ "h": 22
+ },
+ "frame": {
+ "x": 79,
+ "y": 142,
+ "w": 24,
+ "h": 22
}
},
{
- "filename": "6705_2",
+ "filename": "885_3",
"rotated": false,
"trimmed": true,
"sourceSize": {
@@ -1131,37 +879,16 @@
"h": 30
},
"spriteSourceSize": {
- "x": 12,
+ "x": 7,
"y": 5,
- "w": 17,
- "h": 24
+ "w": 26,
+ "h": 19
},
"frame": {
- "x": 174,
- "y": 135,
- "w": 17,
- "h": 24
- }
- },
- {
- "filename": "6705_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 5,
- "w": 17,
- "h": 24
- },
- "frame": {
- "x": 172,
- "y": 53,
- "w": 17,
- "h": 24
+ "x": 55,
+ "y": 164,
+ "w": 26,
+ "h": 19
}
},
{
@@ -1179,8 +906,8 @@
"h": 20
},
"frame": {
- "x": 176,
- "y": 30,
+ "x": 52,
+ "y": 183,
"w": 19,
"h": 20
}
@@ -1200,11 +927,368 @@
"h": 20
},
"frame": {
- "x": 172,
- "y": 77,
+ "x": 71,
+ "y": 183,
"w": 19,
"h": 20
}
+ },
+ {
+ "filename": "4263_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 6,
+ "w": 24,
+ "h": 18
+ },
+ "frame": {
+ "x": 81,
+ "y": 164,
+ "w": 24,
+ "h": 18
+ }
+ },
+ {
+ "filename": "4263_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 6,
+ "w": 24,
+ "h": 18
+ },
+ "frame": {
+ "x": 90,
+ "y": 182,
+ "w": 24,
+ "h": 18
+ }
+ },
+ {
+ "filename": "6549_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 4,
+ "w": 18,
+ "h": 25
+ },
+ "frame": {
+ "x": 100,
+ "y": 112,
+ "w": 18,
+ "h": 25
+ }
+ },
+ {
+ "filename": "6570_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 103,
+ "y": 137,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "6570_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 5,
+ "w": 20,
+ "h": 24
+ },
+ "frame": {
+ "x": 118,
+ "y": 110,
+ "w": 20,
+ "h": 24
+ }
+ },
+ {
+ "filename": "6705_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 5,
+ "w": 17,
+ "h": 24
+ },
+ "frame": {
+ "x": 123,
+ "y": 134,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "872_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 19,
+ "h": 16
+ },
+ "frame": {
+ "x": 105,
+ "y": 161,
+ "w": 19,
+ "h": 16
+ }
+ },
+ {
+ "filename": "877-hangry_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 3,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 124,
+ "y": 158,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "6705_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 5,
+ "w": 17,
+ "h": 24
+ },
+ "frame": {
+ "x": 140,
+ "y": 134,
+ "w": 17,
+ "h": 24
+ }
+ },
+ {
+ "filename": "877-hangry_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 3,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 143,
+ "y": 158,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "877-hangry_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 3,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 157,
+ "y": 127,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "850_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 9,
+ "w": 23,
+ "h": 12
+ },
+ "frame": {
+ "x": 176,
+ "y": 134,
+ "w": 23,
+ "h": 12
+ }
+ },
+ {
+ "filename": "877_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 3,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 162,
+ "y": 150,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "877_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 3,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 181,
+ "y": 146,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "872_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 19,
+ "h": 16
+ },
+ "frame": {
+ "x": 162,
+ "y": 173,
+ "w": 19,
+ "h": 16
+ }
+ },
+ {
+ "filename": "877_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 3,
+ "w": 19,
+ "h": 23
+ },
+ "frame": {
+ "x": 181,
+ "y": 169,
+ "w": 19,
+ "h": 23
+ }
+ },
+ {
+ "filename": "872_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 7,
+ "w": 19,
+ "h": 16
+ },
+ "frame": {
+ "x": 114,
+ "y": 181,
+ "w": 19,
+ "h": 16
+ }
}
]
}
@@ -1212,6 +1296,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:cd142ac26d3ff4d777ac48395f6c0967:80a80b33bb322d66e0dec19a53a88db9:ec5f05e7f30cd98f74db0c2326109fd3$"
+ "smartupdate": "$TexturePacker:SmartUpdate:8e75e5f92e697e744733262699ff9e55:55db782b3e64029bab811bdeb9677cdf:ec5f05e7f30cd98f74db0c2326109fd3$"
}
}
diff --git a/public/images/pokemon_icons_8v.png b/public/images/pokemon_icons_8v.png
index 2a46b3af7..bf3fe4528 100644
Binary files a/public/images/pokemon_icons_8v.png and b/public/images/pokemon_icons_8v.png differ
diff --git a/public/images/pokemon_icons_9v.json b/public/images/pokemon_icons_9v.json
index ee5bb9419..6817a30a7 100644
--- a/public/images/pokemon_icons_9v.json
+++ b/public/images/pokemon_icons_9v.json
@@ -4,1082 +4,11 @@
"image": "pokemon_icons_9v.png",
"format": "RGBA8888",
"size": {
- "w": 193,
- "h": 193
+ "w": 204,
+ "h": 204
},
"scale": 1,
"frames": [
- {
- "filename": "919_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 12,
- "w": 18,
- "h": 17
- },
- "frame": {
- "x": 0,
- "y": 0,
- "w": 18,
- "h": 17
- }
- },
- {
- "filename": "919_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 12,
- "w": 18,
- "h": 17
- },
- "frame": {
- "x": 18,
- "y": 0,
- "w": 18,
- "h": 17
- }
- },
- {
- "filename": "919_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 12,
- "w": 18,
- "h": 17
- },
- "frame": {
- "x": 36,
- "y": 0,
- "w": 18,
- "h": 17
- }
- },
- {
- "filename": "932_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 20,
- "h": 21
- },
- "frame": {
- "x": 54,
- "y": 0,
- "w": 20,
- "h": 21
- }
- },
- {
- "filename": "932_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 10,
- "y": 8,
- "w": 20,
- "h": 21
- },
- "frame": {
- "x": 74,
- "y": 0,
- "w": 20,
- "h": 21
- }
- },
- {
- "filename": "967_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 94,
- "y": 0,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "967_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 8,
- "w": 22,
- "h": 21
- },
- "frame": {
- "x": 116,
- "y": 0,
- "w": 22,
- "h": 21
- }
- },
- {
- "filename": "924_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 31,
- "h": 22
- },
- "frame": {
- "x": 138,
- "y": 0,
- "w": 31,
- "h": 22
- }
- },
- {
- "filename": "1004_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 7,
- "w": 23,
- "h": 22
- },
- "frame": {
- "x": 169,
- "y": 0,
- "w": 23,
- "h": 22
- }
- },
- {
- "filename": "924_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 31,
- "h": 22
- },
- "frame": {
- "x": 0,
- "y": 17,
- "w": 31,
- "h": 22
- }
- },
- {
- "filename": "1004_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 7,
- "w": 23,
- "h": 22
- },
- "frame": {
- "x": 31,
- "y": 17,
- "w": 23,
- "h": 22
- }
- },
- {
- "filename": "924_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 31,
- "h": 22
- },
- "frame": {
- "x": 54,
- "y": 21,
- "w": 31,
- "h": 22
- }
- },
- {
- "filename": "925-three_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 31,
- "h": 22
- },
- "frame": {
- "x": 85,
- "y": 21,
- "w": 31,
- "h": 22
- }
- },
- {
- "filename": "925-three_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 31,
- "h": 22
- },
- "frame": {
- "x": 116,
- "y": 22,
- "w": 31,
- "h": 22
- }
- },
- {
- "filename": "925-three_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 7,
- "w": 31,
- "h": 22
- },
- "frame": {
- "x": 147,
- "y": 22,
- "w": 31,
- "h": 22
- }
- },
- {
- "filename": "935_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 12,
- "y": 6,
- "w": 15,
- "h": 23
- },
- "frame": {
- "x": 178,
- "y": 22,
- "w": 15,
- "h": 23
- }
- },
- {
- "filename": "933_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 27,
- "h": 23
- },
- "frame": {
- "x": 0,
- "y": 39,
- "w": 27,
- "h": 23
- }
- },
- {
- "filename": "933_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 6,
- "y": 6,
- "w": 27,
- "h": 23
- },
- "frame": {
- "x": 27,
- "y": 39,
- "w": 27,
- "h": 23
- }
- },
- {
- "filename": "948_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 6,
- "w": 18,
- "h": 23
- },
- "frame": {
- "x": 54,
- "y": 43,
- "w": 18,
- "h": 23
- }
- },
- {
- "filename": "948_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 6,
- "w": 18,
- "h": 23
- },
- "frame": {
- "x": 72,
- "y": 43,
- "w": 18,
- "h": 23
- }
- },
- {
- "filename": "920_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 24,
- "h": 25
- },
- "frame": {
- "x": 90,
- "y": 43,
- "w": 24,
- "h": 25
- }
- },
- {
- "filename": "925-four_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 114,
- "y": 44,
- "w": 31,
- "h": 24
- }
- },
- {
- "filename": "925-four_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 145,
- "y": 44,
- "w": 31,
- "h": 24
- }
- },
- {
- "filename": "973_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 1,
- "w": 17,
- "h": 28
- },
- "frame": {
- "x": 176,
- "y": 45,
- "w": 17,
- "h": 28
- }
- },
- {
- "filename": "925-four_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 5,
- "w": 31,
- "h": 24
- },
- "frame": {
- "x": 0,
- "y": 62,
- "w": 31,
- "h": 24
- }
- },
- {
- "filename": "949_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 2,
- "w": 22,
- "h": 27
- },
- "frame": {
- "x": 31,
- "y": 62,
- "w": 22,
- "h": 27
- }
- },
- {
- "filename": "920_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 24,
- "h": 25
- },
- "frame": {
- "x": 53,
- "y": 66,
- "w": 24,
- "h": 25
- }
- },
- {
- "filename": "920_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 4,
- "w": 24,
- "h": 25
- },
- "frame": {
- "x": 77,
- "y": 68,
- "w": 24,
- "h": 25
- }
- },
- {
- "filename": "987_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 26,
- "h": 26
- },
- "frame": {
- "x": 101,
- "y": 68,
- "w": 26,
- "h": 26
- }
- },
- {
- "filename": "987_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 26,
- "h": 26
- },
- "frame": {
- "x": 127,
- "y": 68,
- "w": 26,
- "h": 26
- }
- },
- {
- "filename": "949_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 2,
- "w": 22,
- "h": 27
- },
- "frame": {
- "x": 153,
- "y": 68,
- "w": 22,
- "h": 27
- }
- },
- {
- "filename": "973_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 1,
- "w": 17,
- "h": 28
- },
- "frame": {
- "x": 175,
- "y": 73,
- "w": 17,
- "h": 28
- }
- },
- {
- "filename": "987_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 3,
- "w": 26,
- "h": 26
- },
- "frame": {
- "x": 0,
- "y": 86,
- "w": 26,
- "h": 26
- }
- },
- {
- "filename": "962_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 2,
- "w": 21,
- "h": 27
- },
- "frame": {
- "x": 26,
- "y": 89,
- "w": 21,
- "h": 27
- }
- },
- {
- "filename": "962_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 2,
- "w": 21,
- "h": 27
- },
- "frame": {
- "x": 47,
- "y": 91,
- "w": 21,
- "h": 27
- }
- },
- {
- "filename": "962_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 2,
- "w": 21,
- "h": 27
- },
- "frame": {
- "x": 68,
- "y": 93,
- "w": 21,
- "h": 27
- }
- },
- {
- "filename": "973_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 11,
- "y": 1,
- "w": 17,
- "h": 28
- },
- "frame": {
- "x": 89,
- "y": 94,
- "w": 17,
- "h": 28
- }
- },
- {
- "filename": "936_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 9,
- "y": 0,
- "w": 22,
- "h": 29
- },
- "frame": {
- "x": 106,
- "y": 94,
- "w": 22,
- "h": 29
- }
- },
- {
- "filename": "1000_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 0,
- "w": 24,
- "h": 29
- },
- "frame": {
- "x": 128,
- "y": 94,
- "w": 24,
- "h": 29
- }
- },
- {
- "filename": "937_9",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 4,
- "y": 0,
- "w": 31,
- "h": 29
- },
- "frame": {
- "x": 152,
- "y": 101,
- "w": 31,
- "h": 29
- }
- },
- {
- "filename": "1000_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 0,
- "w": 24,
- "h": 29
- },
- "frame": {
- "x": 0,
- "y": 112,
- "w": 24,
- "h": 29
- }
- },
- {
- "filename": "1000_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 0,
- "w": 24,
- "h": 29
- },
- "frame": {
- "x": 24,
- "y": 118,
- "w": 24,
- "h": 29
- }
- },
- {
- "filename": "934_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 0,
- "w": 29,
- "h": 30
- },
- "frame": {
- "x": 48,
- "y": 120,
- "w": 29,
- "h": 30
- }
- },
- {
- "filename": "934_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 5,
- "y": 0,
- "w": 29,
- "h": 30
- },
- "frame": {
- "x": 77,
- "y": 122,
- "w": 29,
- "h": 30
- }
- },
- {
- "filename": "988_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 0,
- "w": 28,
- "h": 30
- },
- "frame": {
- "x": 106,
- "y": 123,
- "w": 28,
- "h": 30
- }
- },
- {
- "filename": "988_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 0,
- "w": 28,
- "h": 30
- },
- "frame": {
- "x": 134,
- "y": 130,
- "w": 28,
- "h": 30
- }
- },
- {
- "filename": "994_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 0,
- "w": 29,
- "h": 30
- },
- "frame": {
- "x": 162,
- "y": 130,
- "w": 29,
- "h": 30
- }
- },
- {
- "filename": "999_1",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 0,
- "w": 24,
- "h": 30
- },
- "frame": {
- "x": 0,
- "y": 141,
- "w": 24,
- "h": 30
- }
- },
- {
- "filename": "999_2",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 0,
- "w": 24,
- "h": 30
- },
- "frame": {
- "x": 24,
- "y": 147,
- "w": 24,
- "h": 30
- }
- },
- {
- "filename": "994_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 7,
- "y": 0,
- "w": 29,
- "h": 30
- },
- "frame": {
- "x": 48,
- "y": 150,
- "w": 29,
- "h": 30
- }
- },
- {
- "filename": "999_3",
- "rotated": false,
- "trimmed": true,
- "sourceSize": {
- "w": 40,
- "h": 30
- },
- "spriteSourceSize": {
- "x": 8,
- "y": 0,
- "w": 24,
- "h": 30
- },
- "frame": {
- "x": 77,
- "y": 152,
- "w": 24,
- "h": 30
- }
- },
{
"filename": "1001_2",
"rotated": false,
@@ -1095,8 +24,8 @@
"h": 30
},
"frame": {
- "x": 101,
- "y": 153,
+ "x": 0,
+ "y": 0,
"w": 32,
"h": 30
}
@@ -1116,11 +45,1229 @@
"h": 30
},
"frame": {
- "x": 133,
- "y": 160,
+ "x": 0,
+ "y": 30,
"w": 32,
"h": 30
}
+ },
+ {
+ "filename": "937_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 0,
+ "w": 31,
+ "h": 29
+ },
+ "frame": {
+ "x": 32,
+ "y": 0,
+ "w": 31,
+ "h": 29
+ }
+ },
+ {
+ "filename": "937_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 0,
+ "w": 31,
+ "h": 29
+ },
+ "frame": {
+ "x": 0,
+ "y": 60,
+ "w": 31,
+ "h": 29
+ }
+ },
+ {
+ "filename": "937_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 0,
+ "w": 31,
+ "h": 29
+ },
+ "frame": {
+ "x": 32,
+ "y": 29,
+ "w": 31,
+ "h": 29
+ }
+ },
+ {
+ "filename": "937_9",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 0,
+ "w": 31,
+ "h": 29
+ },
+ "frame": {
+ "x": 63,
+ "y": 0,
+ "w": 31,
+ "h": 29
+ }
+ },
+ {
+ "filename": "934_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 0,
+ "w": 29,
+ "h": 30
+ },
+ "frame": {
+ "x": 0,
+ "y": 89,
+ "w": 29,
+ "h": 30
+ }
+ },
+ {
+ "filename": "934_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 5,
+ "y": 0,
+ "w": 29,
+ "h": 30
+ },
+ "frame": {
+ "x": 0,
+ "y": 119,
+ "w": 29,
+ "h": 30
+ }
+ },
+ {
+ "filename": "994_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 0,
+ "w": 29,
+ "h": 30
+ },
+ "frame": {
+ "x": 0,
+ "y": 149,
+ "w": 29,
+ "h": 30
+ }
+ },
+ {
+ "filename": "920_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 24,
+ "h": 25
+ },
+ "frame": {
+ "x": 0,
+ "y": 179,
+ "w": 24,
+ "h": 25
+ }
+ },
+ {
+ "filename": "994_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 0,
+ "w": 29,
+ "h": 30
+ },
+ "frame": {
+ "x": 63,
+ "y": 29,
+ "w": 29,
+ "h": 30
+ }
+ },
+ {
+ "filename": "988_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 0,
+ "w": 28,
+ "h": 30
+ },
+ "frame": {
+ "x": 94,
+ "y": 0,
+ "w": 28,
+ "h": 30
+ }
+ },
+ {
+ "filename": "988_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 7,
+ "y": 0,
+ "w": 28,
+ "h": 30
+ },
+ "frame": {
+ "x": 122,
+ "y": 0,
+ "w": 28,
+ "h": 30
+ }
+ },
+ {
+ "filename": "925-four_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 31,
+ "h": 24
+ },
+ "frame": {
+ "x": 150,
+ "y": 0,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "1004_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 23,
+ "h": 22
+ },
+ "frame": {
+ "x": 181,
+ "y": 0,
+ "w": 23,
+ "h": 22
+ }
+ },
+ {
+ "filename": "920_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 24,
+ "h": 25
+ },
+ "frame": {
+ "x": 24,
+ "y": 179,
+ "w": 24,
+ "h": 25
+ }
+ },
+ {
+ "filename": "925-four_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 31,
+ "h": 24
+ },
+ "frame": {
+ "x": 92,
+ "y": 30,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "925-four_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 5,
+ "w": 31,
+ "h": 24
+ },
+ "frame": {
+ "x": 123,
+ "y": 30,
+ "w": 31,
+ "h": 24
+ }
+ },
+ {
+ "filename": "999_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 30
+ },
+ "frame": {
+ "x": 154,
+ "y": 24,
+ "w": 24,
+ "h": 30
+ }
+ },
+ {
+ "filename": "987_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 26,
+ "h": 26
+ },
+ "frame": {
+ "x": 178,
+ "y": 24,
+ "w": 26,
+ "h": 26
+ }
+ },
+ {
+ "filename": "987_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 26,
+ "h": 26
+ },
+ "frame": {
+ "x": 178,
+ "y": 50,
+ "w": 26,
+ "h": 26
+ }
+ },
+ {
+ "filename": "924_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 31,
+ "h": 22
+ },
+ "frame": {
+ "x": 92,
+ "y": 54,
+ "w": 31,
+ "h": 22
+ }
+ },
+ {
+ "filename": "924_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 31,
+ "h": 22
+ },
+ "frame": {
+ "x": 123,
+ "y": 54,
+ "w": 31,
+ "h": 22
+ }
+ },
+ {
+ "filename": "920_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 4,
+ "w": 24,
+ "h": 25
+ },
+ "frame": {
+ "x": 154,
+ "y": 54,
+ "w": 24,
+ "h": 25
+ }
+ },
+ {
+ "filename": "987_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 3,
+ "w": 26,
+ "h": 26
+ },
+ "frame": {
+ "x": 178,
+ "y": 76,
+ "w": 26,
+ "h": 26
+ }
+ },
+ {
+ "filename": "924_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 31,
+ "h": 22
+ },
+ "frame": {
+ "x": 32,
+ "y": 58,
+ "w": 31,
+ "h": 22
+ }
+ },
+ {
+ "filename": "933_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 27,
+ "h": 23
+ },
+ "frame": {
+ "x": 63,
+ "y": 59,
+ "w": 27,
+ "h": 23
+ }
+ },
+ {
+ "filename": "925-three_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 31,
+ "h": 22
+ },
+ "frame": {
+ "x": 31,
+ "y": 80,
+ "w": 31,
+ "h": 22
+ }
+ },
+ {
+ "filename": "999_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 30
+ },
+ "frame": {
+ "x": 29,
+ "y": 102,
+ "w": 24,
+ "h": 30
+ }
+ },
+ {
+ "filename": "999_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 30
+ },
+ "frame": {
+ "x": 29,
+ "y": 132,
+ "w": 24,
+ "h": 30
+ }
+ },
+ {
+ "filename": "919_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 12,
+ "w": 18,
+ "h": 17
+ },
+ "frame": {
+ "x": 29,
+ "y": 162,
+ "w": 18,
+ "h": 17
+ }
+ },
+ {
+ "filename": "925-three_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 31,
+ "h": 22
+ },
+ "frame": {
+ "x": 62,
+ "y": 82,
+ "w": 31,
+ "h": 22
+ }
+ },
+ {
+ "filename": "925-three_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 4,
+ "y": 7,
+ "w": 31,
+ "h": 22
+ },
+ "frame": {
+ "x": 93,
+ "y": 76,
+ "w": 31,
+ "h": 22
+ }
+ },
+ {
+ "filename": "933_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 6,
+ "y": 6,
+ "w": 27,
+ "h": 23
+ },
+ "frame": {
+ "x": 124,
+ "y": 76,
+ "w": 27,
+ "h": 23
+ }
+ },
+ {
+ "filename": "1000_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 29
+ },
+ "frame": {
+ "x": 53,
+ "y": 104,
+ "w": 24,
+ "h": 29
+ }
+ },
+ {
+ "filename": "1000_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 29
+ },
+ "frame": {
+ "x": 53,
+ "y": 133,
+ "w": 24,
+ "h": 29
+ }
+ },
+ {
+ "filename": "936_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 0,
+ "w": 22,
+ "h": 29
+ },
+ "frame": {
+ "x": 77,
+ "y": 104,
+ "w": 22,
+ "h": 29
+ }
+ },
+ {
+ "filename": "936_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 0,
+ "w": 22,
+ "h": 29
+ },
+ "frame": {
+ "x": 77,
+ "y": 133,
+ "w": 22,
+ "h": 29
+ }
+ },
+ {
+ "filename": "1000_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 0,
+ "w": 24,
+ "h": 29
+ },
+ "frame": {
+ "x": 99,
+ "y": 98,
+ "w": 24,
+ "h": 29
+ }
+ },
+ {
+ "filename": "936_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 0,
+ "w": 22,
+ "h": 29
+ },
+ "frame": {
+ "x": 99,
+ "y": 127,
+ "w": 22,
+ "h": 29
+ }
+ },
+ {
+ "filename": "949_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 2,
+ "w": 22,
+ "h": 27
+ },
+ "frame": {
+ "x": 123,
+ "y": 99,
+ "w": 22,
+ "h": 27
+ }
+ },
+ {
+ "filename": "1004_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 8,
+ "y": 7,
+ "w": 23,
+ "h": 22
+ },
+ "frame": {
+ "x": 151,
+ "y": 79,
+ "w": 23,
+ "h": 22
+ }
+ },
+ {
+ "filename": "949_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 2,
+ "w": 22,
+ "h": 27
+ },
+ "frame": {
+ "x": 145,
+ "y": 101,
+ "w": 22,
+ "h": 27
+ }
+ },
+ {
+ "filename": "919_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 12,
+ "w": 18,
+ "h": 17
+ },
+ "frame": {
+ "x": 47,
+ "y": 162,
+ "w": 18,
+ "h": 17
+ }
+ },
+ {
+ "filename": "948_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 6,
+ "w": 18,
+ "h": 23
+ },
+ "frame": {
+ "x": 48,
+ "y": 179,
+ "w": 18,
+ "h": 23
+ }
+ },
+ {
+ "filename": "919_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 12,
+ "w": 18,
+ "h": 17
+ },
+ "frame": {
+ "x": 65,
+ "y": 162,
+ "w": 18,
+ "h": 17
+ }
+ },
+ {
+ "filename": "948_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 6,
+ "w": 18,
+ "h": 23
+ },
+ "frame": {
+ "x": 66,
+ "y": 179,
+ "w": 18,
+ "h": 23
+ }
+ },
+ {
+ "filename": "962_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 2,
+ "w": 21,
+ "h": 27
+ },
+ "frame": {
+ "x": 167,
+ "y": 102,
+ "w": 21,
+ "h": 27
+ }
+ },
+ {
+ "filename": "935_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 15,
+ "h": 23
+ },
+ "frame": {
+ "x": 188,
+ "y": 102,
+ "w": 15,
+ "h": 23
+ }
+ },
+ {
+ "filename": "973_1",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 1,
+ "w": 17,
+ "h": 28
+ },
+ "frame": {
+ "x": 121,
+ "y": 127,
+ "w": 17,
+ "h": 28
+ }
+ },
+ {
+ "filename": "962_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 2,
+ "w": 21,
+ "h": 27
+ },
+ "frame": {
+ "x": 138,
+ "y": 128,
+ "w": 21,
+ "h": 27
+ }
+ },
+ {
+ "filename": "962_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 2,
+ "w": 21,
+ "h": 27
+ },
+ "frame": {
+ "x": 159,
+ "y": 129,
+ "w": 21,
+ "h": 27
+ }
+ },
+ {
+ "filename": "973_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 1,
+ "w": 17,
+ "h": 28
+ },
+ "frame": {
+ "x": 180,
+ "y": 129,
+ "w": 17,
+ "h": 28
+ }
+ },
+ {
+ "filename": "967_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 99,
+ "y": 156,
+ "w": 22,
+ "h": 21
+ }
+ },
+ {
+ "filename": "967_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 9,
+ "y": 8,
+ "w": 22,
+ "h": 21
+ },
+ "frame": {
+ "x": 121,
+ "y": 155,
+ "w": 22,
+ "h": 21
+ }
+ },
+ {
+ "filename": "935_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 15,
+ "h": 23
+ },
+ "frame": {
+ "x": 84,
+ "y": 162,
+ "w": 15,
+ "h": 23
+ }
+ },
+ {
+ "filename": "935_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 12,
+ "y": 6,
+ "w": 15,
+ "h": 23
+ },
+ "frame": {
+ "x": 143,
+ "y": 155,
+ "w": 15,
+ "h": 23
+ }
+ },
+ {
+ "filename": "932_2",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 20,
+ "h": 21
+ },
+ "frame": {
+ "x": 158,
+ "y": 156,
+ "w": 20,
+ "h": 21
+ }
+ },
+ {
+ "filename": "932_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 10,
+ "y": 8,
+ "w": 20,
+ "h": 21
+ },
+ "frame": {
+ "x": 178,
+ "y": 157,
+ "w": 20,
+ "h": 21
+ }
+ },
+ {
+ "filename": "973_3",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 40,
+ "h": 30
+ },
+ "spriteSourceSize": {
+ "x": 11,
+ "y": 1,
+ "w": 17,
+ "h": 28
+ },
+ "frame": {
+ "x": 121,
+ "y": 176,
+ "w": 17,
+ "h": 28
+ }
}
]
}
@@ -1128,6 +1275,6 @@
"meta": {
"app": "https://www.codeandweb.com/texturepacker",
"version": "3.0",
- "smartupdate": "$TexturePacker:SmartUpdate:050f7edcd10f98c70b4b9fc98e69c0d6:03ae662454323b748908e92fa92433dc:3ec5c0bc286c296cfb7fa30a8b06f3da$"
+ "smartupdate": "$TexturePacker:SmartUpdate:4b71cf0612d22372033807aba7026391:ccaa2f3365fdc125ee93279c465f951f:3ec5c0bc286c296cfb7fa30a8b06f3da$"
}
}
diff --git a/public/images/pokemon_icons_9v.png b/public/images/pokemon_icons_9v.png
index 256ec26d3..b3cf588da 100644
Binary files a/public/images/pokemon_icons_9v.png and b/public/images/pokemon_icons_9v.png differ
diff --git a/public/images/ui/achv_bar_4.png b/public/images/ui/achv_bar_4.png
index cc06af916..f14026c7a 100644
Binary files a/public/images/ui/achv_bar_4.png and b/public/images/ui/achv_bar_4.png differ
diff --git a/public/images/ui/achv_bar_5.png b/public/images/ui/achv_bar_5.png
new file mode 100644
index 000000000..cc06af916
Binary files /dev/null and b/public/images/ui/achv_bar_5.png differ
diff --git a/public/images/ui/candy.png b/public/images/ui/candy.png
new file mode 100644
index 000000000..6b633a195
Binary files /dev/null and b/public/images/ui/candy.png differ
diff --git a/public/images/ui/candy_overlay.png b/public/images/ui/candy_overlay.png
new file mode 100644
index 000000000..835cfccb0
Binary files /dev/null and b/public/images/ui/candy_overlay.png differ
diff --git a/public/images/ui/champion_ribbon.png b/public/images/ui/champion_ribbon.png
new file mode 100644
index 000000000..96e36075d
Binary files /dev/null and b/public/images/ui/champion_ribbon.png differ
diff --git a/public/images/ui/legacy/achv_bar_4.png b/public/images/ui/legacy/achv_bar_4.png
index dae7a30de..d52fbfd05 100644
Binary files a/public/images/ui/legacy/achv_bar_4.png and b/public/images/ui/legacy/achv_bar_4.png differ
diff --git a/public/images/ui/legacy/achv_bar_5.png b/public/images/ui/legacy/achv_bar_5.png
new file mode 100644
index 000000000..dae7a30de
Binary files /dev/null and b/public/images/ui/legacy/achv_bar_5.png differ
diff --git a/public/images/ui/legacy/candy.png b/public/images/ui/legacy/candy.png
new file mode 100644
index 000000000..6b633a195
Binary files /dev/null and b/public/images/ui/legacy/candy.png differ
diff --git a/public/images/ui/legacy/candy_overlay.png b/public/images/ui/legacy/candy_overlay.png
new file mode 100644
index 000000000..835cfccb0
Binary files /dev/null and b/public/images/ui/legacy/candy_overlay.png differ
diff --git a/public/images/ui/legacy/champion_ribbon.png b/public/images/ui/legacy/champion_ribbon.png
new file mode 100644
index 000000000..96e36075d
Binary files /dev/null and b/public/images/ui/legacy/champion_ribbon.png differ
diff --git a/public/images/ui/legacy/pbinfo_enemy_boss_stats.png b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png
new file mode 100644
index 000000000..94c9f2a18
Binary files /dev/null and b/public/images/ui/legacy/pbinfo_enemy_boss_stats.png differ
diff --git a/public/images/ui/legacy/pbinfo_enemy_mini_stats.png b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png
new file mode 100644
index 000000000..eb32e6941
Binary files /dev/null and b/public/images/ui/legacy/pbinfo_enemy_mini_stats.png differ
diff --git a/public/images/ui/legacy/pbinfo_player_mini_stats.png b/public/images/ui/legacy/pbinfo_player_mini_stats.png
new file mode 100644
index 000000000..dd2b7e65b
Binary files /dev/null and b/public/images/ui/legacy/pbinfo_player_mini_stats.png differ
diff --git a/public/images/ui/legacy/pbinfo_player_stats.png b/public/images/ui/legacy/pbinfo_player_stats.png
new file mode 100644
index 000000000..078248624
Binary files /dev/null and b/public/images/ui/legacy/pbinfo_player_stats.png differ
diff --git a/public/images/ui/legacy/pbinfo_stat.json b/public/images/ui/legacy/pbinfo_stat.json
new file mode 100644
index 000000000..b7da47fc1
--- /dev/null
+++ b/public/images/ui/legacy/pbinfo_stat.json
@@ -0,0 +1,188 @@
+{
+ "textures": [
+ {
+ "image": "pbinfo_stat.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 112,
+ "h": 6
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "SPATK",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 19,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 18,
+ "h": 6
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 18,
+ "h": 6
+ }
+ },
+ {
+ "filename": "SPDEF",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 19,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 18,
+ "h": 6
+ },
+ "frame": {
+ "x": 18,
+ "y": 0,
+ "w": 18,
+ "h": 6
+ }
+ },
+ {
+ "filename": "CRIT",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 17,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 16,
+ "h": 6
+ },
+ "frame": {
+ "x": 36,
+ "y": 0,
+ "w": 16,
+ "h": 6
+ }
+ },
+ {
+ "filename": "ACC",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 12,
+ "h": 6
+ },
+ "frame": {
+ "x": 52,
+ "y": 0,
+ "w": 12,
+ "h": 6
+ }
+ },
+ {
+ "filename": "ATK",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 12,
+ "h": 6
+ },
+ "frame": {
+ "x": 64,
+ "y": 0,
+ "w": 12,
+ "h": 6
+ }
+ },
+ {
+ "filename": "DEF",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 12,
+ "h": 6
+ },
+ "frame": {
+ "x": 76,
+ "y": 0,
+ "w": 12,
+ "h": 6
+ }
+ },
+ {
+ "filename": "EVA",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 12,
+ "h": 6
+ },
+ "frame": {
+ "x": 88,
+ "y": 0,
+ "w": 12,
+ "h": 6
+ }
+ },
+ {
+ "filename": "SPD",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 1,
+ "y": 2,
+ "w": 12,
+ "h": 6
+ },
+ "frame": {
+ "x": 100,
+ "y": 0,
+ "w": 12,
+ "h": 6
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:40d30205ce8efd40dfa86cd11b0491d6:7076db6ed74199dcfb38fc8cd4d4a0e8:05882267d3999884e0491134e98b1b53$"
+ }
+}
diff --git a/public/images/ui/legacy/pbinfo_stat.png b/public/images/ui/legacy/pbinfo_stat.png
new file mode 100644
index 000000000..62ec37587
Binary files /dev/null and b/public/images/ui/legacy/pbinfo_stat.png differ
diff --git a/public/images/ui/legacy/pbinfo_stat_numbers.json b/public/images/ui/legacy/pbinfo_stat_numbers.json
new file mode 100644
index 000000000..fa7d75799
--- /dev/null
+++ b/public/images/ui/legacy/pbinfo_stat_numbers.json
@@ -0,0 +1,293 @@
+{
+ "textures": [
+ {
+ "image": "pbinfo_stat_numbers.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 117,
+ "h": 8
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "1",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "2",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 9,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "3",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 18,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "4",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 27,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "5",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 36,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "6",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 45,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-1",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 54,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-2",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 63,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-3",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 72,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-4",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 81,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-5",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 90,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-6",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 99,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "0",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 108,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:1f22b7cb085faf9e9764273fa5e70c28:afc5587ebacca78d178ac7e0c434591b:6537c634087637bb27e8a1edb1ee2e35$"
+ }
+}
diff --git a/public/images/ui/legacy/pbinfo_stat_numbers.png b/public/images/ui/legacy/pbinfo_stat_numbers.png
new file mode 100644
index 000000000..ee1453b21
Binary files /dev/null and b/public/images/ui/legacy/pbinfo_stat_numbers.png differ
diff --git a/public/images/ui/pbinfo_enemy_boss.png b/public/images/ui/pbinfo_enemy_boss.png
index 58edefa16..ff5ba6614 100644
Binary files a/public/images/ui/pbinfo_enemy_boss.png and b/public/images/ui/pbinfo_enemy_boss.png differ
diff --git a/public/images/ui/pbinfo_enemy_boss_stats.png b/public/images/ui/pbinfo_enemy_boss_stats.png
new file mode 100644
index 000000000..7148a7af4
Binary files /dev/null and b/public/images/ui/pbinfo_enemy_boss_stats.png differ
diff --git a/public/images/ui/pbinfo_enemy_mini.png b/public/images/ui/pbinfo_enemy_mini.png
index 5250cb6f0..a7ff3cb9b 100644
Binary files a/public/images/ui/pbinfo_enemy_mini.png and b/public/images/ui/pbinfo_enemy_mini.png differ
diff --git a/public/images/ui/pbinfo_enemy_mini_stats.png b/public/images/ui/pbinfo_enemy_mini_stats.png
new file mode 100644
index 000000000..69ac5d494
Binary files /dev/null and b/public/images/ui/pbinfo_enemy_mini_stats.png differ
diff --git a/public/images/ui/pbinfo_enemy_type.png b/public/images/ui/pbinfo_enemy_type.png
index 021a12007..9bac63e5e 100644
Binary files a/public/images/ui/pbinfo_enemy_type.png and b/public/images/ui/pbinfo_enemy_type.png differ
diff --git a/public/images/ui/pbinfo_enemy_type1.png b/public/images/ui/pbinfo_enemy_type1.png
index 89b84d7f6..6d94871e8 100644
Binary files a/public/images/ui/pbinfo_enemy_type1.png and b/public/images/ui/pbinfo_enemy_type1.png differ
diff --git a/public/images/ui/pbinfo_enemy_type2.png b/public/images/ui/pbinfo_enemy_type2.png
index d1f9818d7..56a1989f2 100644
Binary files a/public/images/ui/pbinfo_enemy_type2.png and b/public/images/ui/pbinfo_enemy_type2.png differ
diff --git a/public/images/ui/pbinfo_player.png b/public/images/ui/pbinfo_player.png
index 9d3e03bd6..fee08f710 100644
Binary files a/public/images/ui/pbinfo_player.png and b/public/images/ui/pbinfo_player.png differ
diff --git a/public/images/ui/pbinfo_player_mini.png b/public/images/ui/pbinfo_player_mini.png
index db2762272..f12d46bb4 100644
Binary files a/public/images/ui/pbinfo_player_mini.png and b/public/images/ui/pbinfo_player_mini.png differ
diff --git a/public/images/ui/pbinfo_player_mini_stats.png b/public/images/ui/pbinfo_player_mini_stats.png
new file mode 100644
index 000000000..7ce3bd1af
Binary files /dev/null and b/public/images/ui/pbinfo_player_mini_stats.png differ
diff --git a/public/images/ui/pbinfo_player_stats.png b/public/images/ui/pbinfo_player_stats.png
new file mode 100644
index 000000000..cda978979
Binary files /dev/null and b/public/images/ui/pbinfo_player_stats.png differ
diff --git a/public/images/ui/pbinfo_player_type.png b/public/images/ui/pbinfo_player_type.png
index ad8895039..b78d078de 100644
Binary files a/public/images/ui/pbinfo_player_type.png and b/public/images/ui/pbinfo_player_type.png differ
diff --git a/public/images/ui/pbinfo_player_type1.png b/public/images/ui/pbinfo_player_type1.png
index d1f9818d7..56a1989f2 100644
Binary files a/public/images/ui/pbinfo_player_type1.png and b/public/images/ui/pbinfo_player_type1.png differ
diff --git a/public/images/ui/pbinfo_player_type2.png b/public/images/ui/pbinfo_player_type2.png
index 89b84d7f6..6d94871e8 100644
Binary files a/public/images/ui/pbinfo_player_type2.png and b/public/images/ui/pbinfo_player_type2.png differ
diff --git a/public/images/ui/pbinfo_stat.json b/public/images/ui/pbinfo_stat.json
new file mode 100644
index 000000000..f431e5afa
--- /dev/null
+++ b/public/images/ui/pbinfo_stat.json
@@ -0,0 +1,188 @@
+{
+ "textures": [
+ {
+ "image": "pbinfo_stat.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 120,
+ "h": 7
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "SPATK",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 19,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 19,
+ "h": 7
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 19,
+ "h": 7
+ }
+ },
+ {
+ "filename": "SPDEF",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 19,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 19,
+ "h": 7
+ },
+ "frame": {
+ "x": 19,
+ "y": 0,
+ "w": 19,
+ "h": 7
+ }
+ },
+ {
+ "filename": "CRIT",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 17,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 17,
+ "h": 7
+ },
+ "frame": {
+ "x": 38,
+ "y": 0,
+ "w": 17,
+ "h": 7
+ }
+ },
+ {
+ "filename": "ACC",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 13,
+ "h": 7
+ },
+ "frame": {
+ "x": 55,
+ "y": 0,
+ "w": 13,
+ "h": 7
+ }
+ },
+ {
+ "filename": "ATK",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 13,
+ "h": 7
+ },
+ "frame": {
+ "x": 68,
+ "y": 0,
+ "w": 13,
+ "h": 7
+ }
+ },
+ {
+ "filename": "DEF",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 13,
+ "h": 7
+ },
+ "frame": {
+ "x": 81,
+ "y": 0,
+ "w": 13,
+ "h": 7
+ }
+ },
+ {
+ "filename": "EVA",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 13,
+ "h": 7
+ },
+ "frame": {
+ "x": 94,
+ "y": 0,
+ "w": 13,
+ "h": 7
+ }
+ },
+ {
+ "filename": "SPD",
+ "rotated": false,
+ "trimmed": true,
+ "sourceSize": {
+ "w": 13,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 1,
+ "w": 13,
+ "h": 7
+ },
+ "frame": {
+ "x": 107,
+ "y": 0,
+ "w": 13,
+ "h": 7
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:86fbd1b45d46271597a7d9de482aaa74:df702dd9d88db50369f1a096f82fd915:05882267d3999884e0491134e98b1b53$"
+ }
+}
diff --git a/public/images/ui/pbinfo_stat.png b/public/images/ui/pbinfo_stat.png
new file mode 100644
index 000000000..46169091e
Binary files /dev/null and b/public/images/ui/pbinfo_stat.png differ
diff --git a/public/images/ui/pbinfo_stat_numbers.json b/public/images/ui/pbinfo_stat_numbers.json
new file mode 100644
index 000000000..ec4f7117b
--- /dev/null
+++ b/public/images/ui/pbinfo_stat_numbers.json
@@ -0,0 +1,293 @@
+{
+ "textures": [
+ {
+ "image": "pbinfo_stat_numbers.png",
+ "format": "RGBA8888",
+ "size": {
+ "w": 117,
+ "h": 8
+ },
+ "scale": 1,
+ "frames": [
+ {
+ "filename": "1",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "2",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 9,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "3",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 18,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "4",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 27,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "5",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 36,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "6",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 45,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-1",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 54,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-2",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 63,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-3",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 72,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-4",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 81,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-5",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 90,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "-6",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 99,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ },
+ {
+ "filename": "0",
+ "rotated": false,
+ "trimmed": false,
+ "sourceSize": {
+ "w": 9,
+ "h": 8
+ },
+ "spriteSourceSize": {
+ "x": 0,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ },
+ "frame": {
+ "x": 108,
+ "y": 0,
+ "w": 9,
+ "h": 8
+ }
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "app": "https://www.codeandweb.com/texturepacker",
+ "version": "3.0",
+ "smartupdate": "$TexturePacker:SmartUpdate:b0719fae0d9b670a727148cdc7202249:afc5587ebacca78d178ac7e0c434591b:4825a9f02f72f1fe28a724c6c5dffb37$"
+ }
+}
diff --git a/public/images/ui/pbinfo_stat_numbers.png b/public/images/ui/pbinfo_stat_numbers.png
new file mode 100644
index 000000000..c778ba992
Binary files /dev/null and b/public/images/ui/pbinfo_stat_numbers.png differ
diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest
index e6eedd27e..cefde7f86 100644
--- a/public/manifest.webmanifest
+++ b/public/manifest.webmanifest
@@ -4,7 +4,7 @@
"description": "A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible.",
"scope": "/",
"start_url": "/",
- "display": "standalone",
+ "display": "fullscreen",
"background_color": "#8c8c8c",
"theme_color": "#8c8c8c",
"icons": [
diff --git a/service-worker.js b/public/service-worker.js
similarity index 100%
rename from service-worker.js
rename to public/service-worker.js
diff --git a/src/battle-scene.ts b/src/battle-scene.ts
index c1faf6fef..f117615e5 100644
--- a/src/battle-scene.ts
+++ b/src/battle-scene.ts
@@ -1,4 +1,4 @@
-import Phaser, { Time } from 'phaser';
+import Phaser from 'phaser';
import UI, { Mode } from './ui/ui';
import { NextEncounterPhase, NewBiomeEncounterPhase, SelectBiomePhase, MessagePhase, TurnInitPhase, ReturnPhase, LevelCapPhase, ShowTrainerPhase, LoginPhase, MovePhase, TitlePhase, SwitchPhase } from './phases';
import Pokemon, { PlayerPokemon, EnemyPokemon } from './field/pokemon';
@@ -54,62 +54,28 @@ import CharSprite from './ui/char-sprite';
import DamageNumberHandler from './field/damage-number-handler';
import PokemonInfoContainer from './ui/pokemon-info-container';
import { biomeDepths } from './data/biomes';
-import { initTouchControls } from './touch-controls';
import { UiTheme } from './enums/ui-theme';
import { SceneBase } from './scene-base';
import CandyBar from './ui/candy-bar';
import { Variant, variantData } from './data/variant';
import { Localizable } from './plugins/i18n';
+import { STARTING_WAVE_OVERRIDE, OPP_SPECIES_OVERRIDE, SEED_OVERRIDE, STARTING_BIOME_OVERRIDE, DOUBLE_BATTLE_OVERRIDE } from './overrides';
+import {InputsController} from "./inputs-controller";
+import {UiInputs} from "./ui-inputs";
export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";
-export const SEED_OVERRIDE = '';
-export const STARTER_SPECIES_OVERRIDE = 0;
-export const STARTER_FORM_OVERRIDE = 0;
-export const STARTING_LEVEL_OVERRIDE = 0;
-export const STARTING_WAVE_OVERRIDE = 0;
-export const STARTING_BIOME_OVERRIDE = Biome.TOWN;
-export const STARTING_MONEY_OVERRIDE = 0;
-
-export const ABILITY_OVERRIDE = Abilities.NONE;
-export const MOVE_OVERRIDE = Moves.NONE;
-export const OPP_SPECIES_OVERRIDE = 0;
-export const OPP_ABILITY_OVERRIDE = Abilities.NONE;
-export const OPP_MOVE_OVERRIDE = Moves.NONE;
-export const OPP_SHINY_OVERRIDE = false;
-export const OPP_VARIANT_OVERRIDE = 0;
-
const DEBUG_RNG = false;
export const startingWave = STARTING_WAVE_OVERRIDE || 1;
const expSpriteKeys: string[] = [];
-const repeatInputDelayMillis = 250;
export let starterColors: StarterColors;
interface StarterColors {
[key: string]: [string, string]
}
-export enum Button {
- UP,
- DOWN,
- LEFT,
- RIGHT,
- SUBMIT,
- ACTION,
- CANCEL,
- MENU,
- CYCLE_SHINY,
- CYCLE_FORM,
- CYCLE_GENDER,
- CYCLE_ABILITY,
- CYCLE_NATURE,
- CYCLE_VARIANT,
- SPEED_UP,
- SLOW_DOWN
-}
-
export interface PokeballCounts {
[pb: string]: integer;
}
@@ -118,6 +84,8 @@ export type AnySound = Phaser.Sound.WebAudioSound | Phaser.Sound.HTML5AudioSound
export default class BattleScene extends SceneBase {
public rexUI: UIPlugin;
+ public inputController: InputsController;
+ public uiInputs: UiInputs;
public sessionPlayTime: integer = null;
public masterVolume: number = 0.5;
@@ -138,7 +106,8 @@ export default class BattleScene extends SceneBase {
public gamepadSupport: boolean = true;
public enableTouchControls: boolean = false;
public enableVibration: boolean = false;
-
+ public abSwapped: boolean = false;
+
public disableMenu: boolean = false;
public gameData: GameData;
@@ -203,33 +172,6 @@ export default class BattleScene extends SceneBase {
private bgmResumeTimer: Phaser.Time.TimerEvent;
private bgmCache: Set = new Set();
private playTimeTimer: Phaser.Time.TimerEvent;
-
- private buttonKeys: Phaser.Input.Keyboard.Key[][];
- private lastProcessedButtonPressTimes: Map = new Map();
- // movementButtonLock ensures only a single movement key is firing repeated inputs
- // (i.e. by holding down a button) at a time
- private movementButtonLock: Button;
-
- // using a dualshock controller as a map
- private gamepadKeyConfig = {
- [Button.UP]: 12, // up
- [Button.DOWN]: 13, // down
- [Button.LEFT]: 14, // left
- [Button.RIGHT]: 15, // right
- [Button.SUBMIT]: 17, // touchpad
- [Button.ACTION]: 0, // X
- [Button.CANCEL]: 1, // O
- [Button.MENU]: 9, // options
- [Button.CYCLE_SHINY]: 5, // RB
- [Button.CYCLE_FORM]: 4, // LB
- [Button.CYCLE_GENDER]: 6, // LT
- [Button.CYCLE_ABILITY]: 7, // RT
- [Button.CYCLE_NATURE]: 2, // square
- [Button.CYCLE_VARIANT]: 3, // triangle
- [Button.SPEED_UP]: 10, // L3
- [Button.SLOW_DOWN]: 11 // R3
- };
- public gamepadButtonStates: boolean[] = new Array(17).fill(false);
public rngCounter: integer = 0;
public rngSeedOverride: string = '';
@@ -273,7 +215,7 @@ export default class BattleScene extends SceneBase {
return ret;
};
}
-
+
populateAnims();
await this.initVariantData();
@@ -281,13 +223,13 @@ export default class BattleScene extends SceneBase {
create() {
initGameSpeed.apply(this);
+ this.inputController = new InputsController(this);
+ this.uiInputs = new UiInputs(this, this.inputController);
this.gameData = new GameData(this);
addUiThemeOverrides(this);
- this.setupControls();
-
this.load.setBaseURL();
this.spritePipeline = new SpritePipeline(this.game);
@@ -300,7 +242,7 @@ export default class BattleScene extends SceneBase {
}
update() {
- this.checkInput();
+ this.inputController.update();
this.ui?.update();
}
@@ -619,41 +561,6 @@ export default class BattleScene extends SceneBase {
return true;
}
- setupControls() {
- const keyCodes = Phaser.Input.Keyboard.KeyCodes;
- const keyConfig = {
- [Button.UP]: [keyCodes.UP, keyCodes.W],
- [Button.DOWN]: [keyCodes.DOWN, keyCodes.S],
- [Button.LEFT]: [keyCodes.LEFT, keyCodes.A],
- [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D],
- [Button.SUBMIT]: [keyCodes.ENTER],
- [Button.ACTION]: [keyCodes.SPACE, keyCodes.ENTER, keyCodes.Z],
- [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X],
- [Button.MENU]: [keyCodes.ESC, keyCodes.M],
- [Button.CYCLE_SHINY]: [keyCodes.R],
- [Button.CYCLE_FORM]: [keyCodes.F],
- [Button.CYCLE_GENDER]: [keyCodes.G],
- [Button.CYCLE_ABILITY]: [keyCodes.E],
- [Button.CYCLE_NATURE]: [keyCodes.N],
- [Button.CYCLE_VARIANT]: [keyCodes.V],
- [Button.SPEED_UP]: [keyCodes.PLUS],
- [Button.SLOW_DOWN]: [keyCodes.MINUS]
- };
- const mobileKeyConfig = {};
- this.buttonKeys = [];
- for (let b of Utils.getEnumValues(Button)) {
- const keys: Phaser.Input.Keyboard.Key[] = [];
- if (keyConfig.hasOwnProperty(b)) {
- for (let k of keyConfig[b])
- keys.push(this.input.keyboard.addKey(k, false));
- mobileKeyConfig[Button[b]] = keys[0];
- }
- this.buttonKeys[b] = keys;
- }
-
- initTouchControls(mobileKeyConfig);
- }
-
getParty(): PlayerPokemon[] {
return this.party;
}
@@ -935,6 +842,9 @@ export default class BattleScene extends SceneBase {
} else if (!battleConfig)
newDouble = !!double;
+ if (DOUBLE_BATTLE_OVERRIDE)
+ newDouble = true;
+
const lastBattle = this.currentBattle;
if (lastBattle?.double && !newDouble)
@@ -1056,6 +966,8 @@ 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:
@@ -1066,6 +978,10 @@ export default class BattleScene extends SceneBase {
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:
@@ -1117,7 +1033,7 @@ export default class BattleScene extends SceneBase {
return 5;
let isBoss: boolean;
- if (forceBoss || (species && (species.pseudoLegendary || species.legendary || species.mythical)))
+ if (forceBoss || (species && (species.subLegendary || species.legendary || species.mythical)))
isBoss = true;
else {
this.executeWithSeedOffset(() => {
@@ -1349,152 +1265,6 @@ export default class BattleScene extends SceneBase {
return biomes[Utils.randSeedInt(biomes.length)];
}
- checkInput(): boolean {
- let inputSuccess = false;
- let vibrationLength = 0;
- if (this.buttonJustPressed(Button.UP) || this.repeatInputDurationJustPassed(Button.UP)) {
- inputSuccess = this.ui.processInput(Button.UP);
- vibrationLength = 5;
- this.setLastProcessedMovementTime(Button.UP)
- } else if (this.buttonJustPressed(Button.DOWN) || this.repeatInputDurationJustPassed(Button.DOWN)) {
- inputSuccess = this.ui.processInput(Button.DOWN);
- vibrationLength = 5;
- this.setLastProcessedMovementTime(Button.DOWN)
- } else if (this.buttonJustPressed(Button.LEFT) || this.repeatInputDurationJustPassed(Button.LEFT)) {
- inputSuccess = this.ui.processInput(Button.LEFT);
- vibrationLength = 5;
- this.setLastProcessedMovementTime(Button.LEFT)
- } else if (this.buttonJustPressed(Button.RIGHT) || this.repeatInputDurationJustPassed(Button.RIGHT)) {
- inputSuccess = this.ui.processInput(Button.RIGHT);
- vibrationLength = 5;
- this.setLastProcessedMovementTime(Button.RIGHT)
- } else if (this.buttonJustPressed(Button.SUBMIT) || this.repeatInputDurationJustPassed(Button.SUBMIT)) {
- inputSuccess = this.ui.processInput(Button.SUBMIT) || this.ui.processInput(Button.ACTION);
- this.setLastProcessedMovementTime(Button.SUBMIT);
- } else if (this.buttonJustPressed(Button.ACTION) || this.repeatInputDurationJustPassed(Button.ACTION)) {
- inputSuccess = this.ui.processInput(Button.ACTION);
- this.setLastProcessedMovementTime(Button.ACTION);
- } else if (this.buttonJustPressed(Button.CANCEL)|| this.repeatInputDurationJustPassed(Button.CANCEL)) {
- inputSuccess = this.ui.processInput(Button.CANCEL);
- this.setLastProcessedMovementTime(Button.CANCEL);
- } else if (this.buttonJustPressed(Button.MENU)) {
- if (this.disableMenu)
- return;
- switch (this.ui?.getMode()) {
- case Mode.MESSAGE:
- if (!(this.ui.getHandler() as MessageUiHandler).pendingPrompt)
- return;
- case Mode.TITLE:
- case Mode.COMMAND:
- case Mode.FIGHT:
- case Mode.BALL:
- case Mode.TARGET_SELECT:
- case Mode.SAVE_SLOT:
- case Mode.PARTY:
- case Mode.SUMMARY:
- case Mode.STARTER_SELECT:
- case Mode.CONFIRM:
- case Mode.OPTION_SELECT:
- this.ui.setOverlayMode(Mode.MENU);
- inputSuccess = true;
- break;
- case Mode.MENU:
- case Mode.SETTINGS:
- case Mode.ACHIEVEMENTS:
- this.ui.revertMode();
- this.playSound('select');
- inputSuccess = true;
- break;
- default:
- return;
- }
- } else if (this.ui?.getHandler() instanceof StarterSelectUiHandler) {
- if (this.buttonJustPressed(Button.CYCLE_SHINY)) {
- inputSuccess = this.ui.processInput(Button.CYCLE_SHINY);
- this.setLastProcessedMovementTime(Button.CYCLE_SHINY);
- } else if (this.buttonJustPressed(Button.CYCLE_FORM)) {
- inputSuccess = this.ui.processInput(Button.CYCLE_FORM);
- this.setLastProcessedMovementTime(Button.CYCLE_FORM);
- } else if (this.buttonJustPressed(Button.CYCLE_GENDER)) {
- inputSuccess = this.ui.processInput(Button.CYCLE_GENDER);
- this.setLastProcessedMovementTime(Button.CYCLE_GENDER);
- } else if (this.buttonJustPressed(Button.CYCLE_ABILITY)) {
- inputSuccess = this.ui.processInput(Button.CYCLE_ABILITY);
- this.setLastProcessedMovementTime(Button.CYCLE_ABILITY);
- } else if (this.buttonJustPressed(Button.CYCLE_NATURE)) {
- inputSuccess = this.ui.processInput(Button.CYCLE_NATURE);
- this.setLastProcessedMovementTime(Button.CYCLE_NATURE);
- } else if (this.buttonJustPressed(Button.CYCLE_VARIANT)) {
- inputSuccess = this.ui.processInput(Button.CYCLE_VARIANT);
- this.setLastProcessedMovementTime(Button.CYCLE_VARIANT);
- } else
- return;
- } else if (this.buttonJustPressed(Button.SPEED_UP)) {
- if (this.gameSpeed < 5) {
- this.gameData.saveSetting(Setting.Game_Speed, settingOptions[Setting.Game_Speed].indexOf(`${this.gameSpeed}x`) + 1);
- if (this.ui?.getMode() === Mode.SETTINGS)
- (this.ui.getHandler() as SettingsUiHandler).show([]);
- }
- } else if (this.buttonJustPressed(Button.SLOW_DOWN)) {
- if (this.gameSpeed > 1) {
- this.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.gameSpeed}x`) - 1, 0));
- if (this.ui?.getMode() === Mode.SETTINGS)
- (this.ui.getHandler() as SettingsUiHandler).show([]);
- }
- } else
- return;
- if (inputSuccess && this.enableVibration && typeof navigator.vibrate !== 'undefined')
- navigator.vibrate(vibrationLength || 10);
- }
-
- /**
- * gamepadButtonJustDown returns true if @param button has just been pressed down
- * or not. It will only return true once, until the key is released and pressed down
- * again.
- */
- gamepadButtonJustDown(button: Phaser.Input.Gamepad.Button) : boolean {
- if (!button || !this.gamepadSupport)
- return false;
-
- let ret = false;
- if (button.pressed) {
- if (!this.gamepadButtonStates[button.index])
- ret = true;
- this.gamepadButtonStates[button.index] = true;
- } else
- this.gamepadButtonStates[button.index] = false;
-
- return ret;
- }
-
- buttonJustPressed(button: Button): boolean {
- const gamepad = this.input.gamepad?.gamepads[0];
- return this.buttonKeys[button].some(k => Phaser.Input.Keyboard.JustDown(k)) || this.gamepadButtonJustDown(gamepad?.buttons[this.gamepadKeyConfig[button]]);
- }
-
- /**
- * repeatInputDurationJustPassed returns true if @param button has been held down long
- * enough to fire a repeated input. A button must claim the movementButtonLock before
- * firing a repeated input - this is to prevent multiple buttons from firing repeatedly.
- */
- repeatInputDurationJustPassed(button: Button): boolean {
- if (this.movementButtonLock !== null && this.movementButtonLock !== button) {
- return false;
- }
- if (this.buttonKeys[button].every(k => k.isUp) && this.gamepadButtonStates.every(b => b == false)) {
- this.movementButtonLock = null;
- return false;
- }
- if (this.time.now - this.lastProcessedButtonPressTimes.get(button) >= repeatInputDelayMillis) {
- return true;
- }
- }
-
- setLastProcessedMovementTime(button: Button) {
- this.lastProcessedButtonPressTimes.set(button, this.time.now);
- this.movementButtonLock = button;
- }
-
isBgmPlaying(): boolean {
return this.bgm && this.bgm.isPlaying;
}
@@ -1652,11 +1422,13 @@ export default class BattleScene extends SceneBase {
return 13.122;
case 'battle_unova_gym':
return 19.145;
- case 'battle_legendary':
+ case 'battle_legendary_regis': //B2W2 Legendary Titan Battle
+ return 49.500;
+ case 'battle_legendary_unova': //BW Unova Legendary Battle
return 13.855;
- case 'battle_legendary_k':
+ case 'battle_legendary_kyurem': //BW Kyurem Battle
return 18.314;
- case 'battle_legendary_rz':
+ case 'battle_legendary_res_zek': //BW Reshiram & Zekrom Battle
return 18.329;
case 'battle_rival':
return 13.689;
diff --git a/src/battle.ts b/src/battle.ts
index 97dec4716..580bad9a5 100644
--- a/src/battle.ts
+++ b/src/battle.ts
@@ -194,12 +194,18 @@ export default class Battle {
return 'battle_final';
return 'battle_final_encounter';
}
- if (pokemon.species.legendary || pokemon.species.pseudoLegendary || pokemon.species.mythical) {
+ if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) {
+ if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO)
+ return 'battle_legendary_regis';
+ if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT)
+ return 'battle_legendary_unova';
+ if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM)
+ return 'battle_legendary_res_zek';
if (pokemon.species.speciesId === Species.KYUREM)
- return 'battle_legendary_k';
+ return 'battle_legendary_kyurem';
if (pokemon.species.legendary)
- return 'battle_legendary_rz';
- return 'battle_legendary';
+ return 'battle_legendary_res_zek';
+ return 'battle_legendary_unova';
}
}
diff --git a/src/configs/pad_dualshock.ts b/src/configs/pad_dualshock.ts
new file mode 100644
index 000000000..4f66ff8c0
--- /dev/null
+++ b/src/configs/pad_dualshock.ts
@@ -0,0 +1,29 @@
+/**
+ * Dualshock mapping
+ */
+const pad_dualshock = {
+ padID: 'Dualshock',
+ padType: 'Sony',
+ gamepadMapping: {
+ RC_S: 0,
+ RC_E: 1,
+ RC_W: 2,
+ RC_N: 3,
+ START: 9, // Options
+ SELECT: 8, // Share
+ LB: 4,
+ RB: 5,
+ LT: 6,
+ RT: 7,
+ LS: 10,
+ RS: 11,
+ LC_N: 12,
+ LC_S: 13,
+ LC_W: 14,
+ LC_E: 15,
+ MENU: 16,
+ TOUCH: 17
+ },
+};
+
+export default pad_dualshock;
diff --git a/src/configs/pad_generic.ts b/src/configs/pad_generic.ts
new file mode 100644
index 000000000..19b5d3df1
--- /dev/null
+++ b/src/configs/pad_generic.ts
@@ -0,0 +1,27 @@
+/**
+ * Generic pad mapping
+ */
+const pad_generic = {
+ padID: 'Generic',
+ padType: 'generic',
+ gamepadMapping: {
+ RC_S: 0,
+ RC_E: 1,
+ RC_W: 2,
+ RC_N: 3,
+ START: 9,
+ SELECT: 8,
+ LB: 4,
+ RB: 5,
+ LT: 6,
+ RT: 7,
+ LS: 10,
+ RS: 11,
+ LC_N: 12,
+ LC_S: 13,
+ LC_W: 14,
+ LC_E: 15
+ },
+};
+
+export default pad_generic;
diff --git a/src/configs/pad_unlicensedSNES.ts b/src/configs/pad_unlicensedSNES.ts
new file mode 100644
index 000000000..ba8ee538d
--- /dev/null
+++ b/src/configs/pad_unlicensedSNES.ts
@@ -0,0 +1,23 @@
+/**
+ * 081f-e401 - UnlicensedSNES
+ */
+const pad_unlicensedSNES = {
+ padID: '081f-e401',
+ padType: 'snes',
+ gamepadMapping : {
+ RC_S: 2,
+ RC_E: 1,
+ RC_W: 3,
+ RC_N: 0,
+ START: 9,
+ SELECT: 8,
+ LB: 4,
+ RB: 5,
+ LC_N: 12,
+ LC_S: 13,
+ LC_W: 14,
+ LC_E: 15
+ }
+};
+
+export default pad_unlicensedSNES;
diff --git a/src/configs/pad_xbox360.ts b/src/configs/pad_xbox360.ts
new file mode 100644
index 000000000..e44ebb54b
--- /dev/null
+++ b/src/configs/pad_xbox360.ts
@@ -0,0 +1,28 @@
+/**
+ * Generic pad mapping
+ */
+const pad_xbox360 = {
+ padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)',
+ padType: 'xbox',
+ gamepadMapping: {
+ RC_S: 0,
+ RC_E: 1,
+ RC_W: 2,
+ RC_N: 3,
+ START: 9,
+ SELECT: 8,
+ LB: 4,
+ RB: 5,
+ LT: 6,
+ RT: 7,
+ LS: 10,
+ RS: 11,
+ LC_N: 12,
+ LC_S: 13,
+ LC_W: 14,
+ LC_E: 15,
+ MENU: 16
+ },
+};
+
+export default pad_xbox360;
diff --git a/src/data/ability.ts b/src/data/ability.ts
index f6ccf7e85..92b26ea15 100644
--- a/src/data/ability.ts
+++ b/src/data/ability.ts
@@ -9,7 +9,7 @@ import { BattlerTag } from "./battler-tags";
import { BattlerTagType } from "./enums/battler-tag-type";
import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect";
import { Gender } from "./gender";
-import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves } from "./move";
+import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove } from "./move";
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
import { ArenaTagType } from "./enums/arena-tag-type";
import { Stat } from "./pokemon-stat";
@@ -20,6 +20,8 @@ import { SpeciesFormChangeManualTrigger } from "./pokemon-forms";
import { Abilities } from "./enums/abilities";
import i18next, { Localizable } from "#app/plugins/i18n.js";
import { Command } from "../ui/command-ui-handler";
+import Battle from "#app/battle.js";
+import { ability } from "#app/locales/en/ability.js";
export class Ability implements Localizable {
public id: Abilities;
@@ -247,7 +249,7 @@ export class PreDefendFormChangeAbAttr extends PreDefendAbAttr {
}
export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr {
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
- if (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp)
+ if (pokemon.getMaxHp() <= 1 && (pokemon.getHpRatio() < 1 || (args[0] as Utils.NumberHolder).value < pokemon.hp))
return false;
return pokemon.addTag(BattlerTagType.STURDY, 1);
@@ -424,7 +426,7 @@ export class NonSuperEffectiveImmunityAbAttr extends TypeImmunityAbAttr {
}
applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean {
- if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type) < 2) {
+ if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, attacker) < 2) {
cancelled.value = true;
(args[0] as Utils.NumberHolder).value = 0;
return true;
@@ -580,6 +582,35 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr {
}
}
+export class PostDefendHpGatedStatChangeAbAttr extends PostDefendAbAttr {
+ private condition: PokemonDefendCondition;
+ private hpGate: number;
+ private stats: BattleStat[];
+ private levels: integer;
+ private selfTarget: boolean;
+
+ constructor(condition: PokemonDefendCondition, hpGate: number, stats: BattleStat[], levels: integer, selfTarget: boolean = true) {
+ super(true);
+
+ this.condition = condition;
+ this.hpGate = hpGate;
+ this.stats = stats;
+ this.levels = levels;
+ this.selfTarget = selfTarget;
+ }
+
+ applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
+ const hpGateFlat: integer = Math.ceil(pokemon.getMaxHp() * this.hpGate)
+ const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1]
+ if (this.condition(pokemon, attacker, move.getMove()) && (pokemon.hp <= hpGateFlat && (pokemon.hp + lastAttackReceived.damage) > hpGateFlat)) {
+ pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.levels));
+ return true;
+ }
+
+ return false;
+ }
+}
+
export class PostDefendApplyArenaTrapTagAbAttr extends PostDefendAbAttr {
private condition: PokemonDefendCondition;
private tagType: ArenaTagType;
@@ -679,6 +710,19 @@ export class PostDefendContactApplyStatusEffectAbAttr extends PostDefendAbAttr {
}
}
+export class EffectSporeAbAttr extends PostDefendContactApplyStatusEffectAbAttr {
+ constructor() {
+ super(10, StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP);
+ }
+
+ applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
+ if (attacker.hasAbility(Abilities.OVERCOAT) || attacker.isOfType(Type.GRASS)) {
+ return false;
+ }
+ return super.applyPostDefend(pokemon, passive, attacker, move, hitResult, args);
+ }
+}
+
export class PostDefendContactApplyTagChanceAbAttr extends PostDefendAbAttr {
private chance: integer;
private tagType: BattlerTagType;
@@ -785,13 +829,16 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr {
}
export class PostDefendAbilityGiveAbAttr extends PostDefendAbAttr {
- constructor() {
+ private ability: Abilities;
+
+ constructor(ability: Abilities) {
super();
+ this.ability = ability;
}
applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean {
if (move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon) && !attacker.getAbility().hasAttr(UnsuppressableAbilityAbAttr) && !attacker.getAbility().hasAttr(PostDefendAbilityGiveAbAttr)) {
- attacker.summonData.ability = pokemon.getAbility().id;
+ attacker.summonData.ability = this.ability;
return true;
}
@@ -906,8 +953,8 @@ export class MovePowerBoostAbAttr extends VariableMovePowerAbAttr {
private condition: PokemonAttackCondition;
private powerMultiplier: number;
- constructor(condition: PokemonAttackCondition, powerMultiplier: number) {
- super(true);
+ constructor(condition: PokemonAttackCondition, powerMultiplier: number, showAbility: boolean = true) {
+ super(showAbility);
this.condition = condition;
this.powerMultiplier = powerMultiplier;
}
@@ -976,16 +1023,19 @@ export class FieldMoveTypePowerBoostAbAttr extends FieldMovePowerBoostAbAttr {
export class BattleStatMultiplierAbAttr extends AbAttr {
private battleStat: BattleStat;
private multiplier: number;
+ private condition: PokemonAttackCondition;
- constructor(battleStat: BattleStat, multiplier: number) {
+ constructor(battleStat: BattleStat, multiplier: number, condition?: PokemonAttackCondition) {
super(false);
this.battleStat = battleStat;
this.multiplier = multiplier;
+ this.condition = condition;
}
applyBattleStat(pokemon: Pokemon, passive: boolean, battleStat: BattleStat, statValue: Utils.NumberHolder, args: any[]): boolean | Promise {
- if (battleStat === this.battleStat) {
+ const move = (args[0] as Move);
+ if (battleStat === this.battleStat && (!this.condition || this.condition(pokemon, null, move))) {
statValue.value *= this.multiplier;
return true;
}
@@ -1148,6 +1198,26 @@ class PostVictoryStatChangeAbAttr extends PostVictoryAbAttr {
}
}
+export class PostVictoryFormChangeAbAttr extends PostVictoryAbAttr {
+ private formFunc: (p: Pokemon) => integer;
+
+ constructor(formFunc: ((p: Pokemon) => integer)) {
+ super(true);
+
+ this.formFunc = formFunc;
+ }
+
+ applyPostVictory(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise {
+ const formIndex = this.formFunc(pokemon);
+ if (formIndex !== pokemon.formIndex) {
+ pokemon.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false);
+ return true;
+ }
+
+ return false;
+ }
+}
+
export class PostKnockOutAbAttr extends AbAttr {
applyPostKnockOut(pokemon: Pokemon, passive: boolean, knockedOut: Pokemon, args: any[]): boolean | Promise {
return false;
@@ -1203,6 +1273,40 @@ export class IgnoreOpponentStatChangesAbAttr extends AbAttr {
}
}
+export class IntimidateImmunityAbAttr extends AbAttr {
+ constructor() {
+ super(false);
+ }
+
+ apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
+ cancelled.value = true;
+ return true;
+ }
+
+ getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string {
+ return getPokemonMessage(pokemon, `'s ${abilityName} prevented it from being Intimidated!`);
+ }
+}
+
+export class PostIntimidateStatChangeAbAttr extends AbAttr {
+ private stats: BattleStat[];
+ private levels: integer;
+ private overwrites: boolean;
+
+ constructor(stats: BattleStat[], levels: integer, overwrites?: boolean) {
+ super(true)
+ this.stats = stats
+ this.levels = levels
+ this.overwrites = !!overwrites
+ }
+
+ apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
+ pokemon.scene.pushPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), false, this.stats, this.levels));
+ cancelled.value = this.overwrites;
+ return true;
+ }
+}
+
export class PostSummonAbAttr extends AbAttr {
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise {
return false;
@@ -1245,34 +1349,36 @@ export class PostSummonStatChangeAbAttr extends PostSummonAbAttr {
private stats: BattleStat[];
private levels: integer;
private selfTarget: boolean;
+ private intimidate: boolean;
- constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean) {
- super();
+ constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean, intimidate?: boolean) {
+ super(false);
this.stats = typeof(stats) === 'number'
? [ stats as BattleStat ]
: stats as BattleStat[];
this.levels = levels;
this.selfTarget = !!selfTarget;
+ this.intimidate = !!intimidate;
}
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
- const statChangePhases: StatChangePhase[] = [];
-
- if (this.selfTarget)
- statChangePhases.push(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels));
- else {
- for (let opponent of pokemon.getOpponents())
- statChangePhases.push(new StatChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.levels));
+ queueShowAbility(pokemon, passive); // TODO: Better solution than manually showing the ability here
+ if (this.selfTarget) {
+ pokemon.scene.pushPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels));
+ return true;
}
-
- for (let statChangePhase of statChangePhases) {
- if (!this.selfTarget && !statChangePhase.getPokemon().summonData)
- pokemon.scene.pushPhase(statChangePhase); // TODO: This causes the ability bar to be shown at the wrong time
- else
+ for (let opponent of pokemon.getOpponents()) {
+ const cancelled = new Utils.BooleanHolder(false)
+ if (this.intimidate) {
+ applyAbAttrs(IntimidateImmunityAbAttr, opponent, cancelled);
+ applyAbAttrs(PostIntimidateStatChangeAbAttr, opponent, cancelled);
+ }
+ if (!cancelled.value) {
+ const statChangePhase = new StatChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.levels);
pokemon.scene.unshiftPhase(statChangePhase);
+ }
}
-
return true;
}
}
@@ -1382,6 +1488,7 @@ export class TraceAbAttr extends PostSummonAbAttr {
const targets = pokemon.getOpponents();
if (!targets.length)
return false;
+
let target: Pokemon;
if (targets.length > 1)
pokemon.scene.executeWithSeedOffset(() => target = Utils.randSeedItem(targets), pokemon.scene.currentBattle.waveIndex);
@@ -1407,6 +1514,9 @@ export class PostSummonTransformAbAttr extends PostSummonAbAttr {
applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
const targets = pokemon.getOpponents();
+ if (!targets.length)
+ return false;
+
let target: Pokemon;
if (targets.length > 1)
pokemon.scene.executeWithSeedOffset(() => target = Utils.randSeedItem(targets), pokemon.scene.currentBattle.waveIndex);
@@ -1569,6 +1679,27 @@ export class BonusCritAbAttr extends AbAttr {
}
}
+export class MultCritAbAttr extends AbAttr {
+ public multAmount: number;
+
+ constructor(multAmount: number) {
+ super(true);
+
+ this.multAmount = multAmount;
+ }
+
+ apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
+ const critMult = args[0] as Utils.NumberHolder;
+ if (critMult.value > 1){
+ critMult.value *= this.multAmount;
+ return true;
+ }
+
+ return false;
+ }
+}
+
+
export class BlockNonDirectDamageAbAttr extends AbAttr {
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
cancelled.value = true;
@@ -1663,7 +1794,7 @@ function getAnticipationCondition(): AbAttrCondition {
for (let opponent of pokemon.getOpponents()) {
for (let move of opponent.moveset) {
// move is super effective
- if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type) >= 2) {
+ if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent) >= 2) {
return true;
}
// move is a OHKO
@@ -1685,7 +1816,7 @@ function getAnticipationCondition(): AbAttrCondition {
Type.FIRE, Type.WATER, Type.GRASS, Type.ELECTRIC,
Type.PSYCHIC, Type.ICE, Type.DRAGON, Type.DARK][iv_val];
- if (pokemon.getAttackTypeEffectiveness(type) >= 2) {
+ if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) {
return true;
}
}
@@ -1695,6 +1826,66 @@ function getAnticipationCondition(): AbAttrCondition {
};
}
+/**
+ * Creates an ability condition that causes the ability to fail if that ability
+ * has already been used by that pokemon that battle. It requires an ability to
+ * be specified due to current limitations in how conditions on abilities work.
+ * @param {Abilities} ability The ability to check if it's already been applied
+ * @returns {AbAttrCondition} The condition
+ */
+function getOncePerBattleCondition(ability: Abilities): AbAttrCondition {
+ return (pokemon: Pokemon) => {
+ return !pokemon.battleData?.abilitiesApplied.includes(ability);
+ }
+}
+
+export class ForewarnAbAttr extends PostSummonAbAttr {
+ constructor() {
+ super(true);
+ }
+
+ applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
+ let maxPowerSeen = 0;
+ let maxMove = "";
+ let movePower = 0;
+ for (let opponent of pokemon.getOpponents()) {
+ for (let move of opponent.moveset) {
+ if (move.getMove() instanceof StatusMove) {
+ movePower = 1;
+ } else if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) {
+ movePower = 150;
+ } else if (move.getMove().id === Moves.COUNTER || move.getMove().id === Moves.MIRROR_COAT || move.getMove().id === Moves.METAL_BURST) {
+ movePower = 120;
+ } else if (move.getMove().power === -1) {
+ movePower = 80;
+ } else {
+ movePower = move.getMove().power;
+ }
+
+ if (movePower > maxPowerSeen) {
+ maxPowerSeen = movePower;
+ maxMove = move.getName();
+ }
+ }
+ }
+ pokemon.scene.queueMessage(getPokemonMessage(pokemon, " was forewarned about " + maxMove + "!"));
+ return true;
+ }
+}
+
+export class FriskAbAttr extends PostSummonAbAttr {
+ constructor() {
+ super(true);
+ }
+
+ applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
+ for (let opponent of pokemon.getOpponents()) {
+ pokemon.scene.queueMessage(getPokemonMessage(pokemon, " frisked " + opponent.name + "\'s " + opponent.getAbility().name + "!"));
+ }
+ return true;
+ }
+}
+
export class PostWeatherChangeAbAttr extends AbAttr {
applyPostWeatherChange(pokemon: Pokemon, passive: boolean, weather: WeatherType, args: any[]): boolean {
return false;
@@ -1845,13 +2036,19 @@ export class MoodyAbAttr extends PostTurnAbAttr {
}
applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean {
- // TODO: Edge case of not choosing to buff or debuff a stat that's already maxed
let selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD];
- let increaseStat = selectableStats[Utils.randInt(selectableStats.length)];
- selectableStats = selectableStats.filter(s => s !== increaseStat);
- let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
- pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2));
- pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1));
+ let increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6);
+ let decreaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] > -6);
+
+ if (increaseStatArray.length > 0) {
+ let increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)];
+ decreaseStatArray = decreaseStatArray.filter(s => s !== increaseStat);
+ pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2));
+ }
+ if (decreaseStatArray.length > 0) {
+ let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)];
+ pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1));
+ }
return true;
}
}
@@ -1958,6 +2155,13 @@ export class StatChangeMultiplierAbAttr extends AbAttr {
}
}
+export class StatChangeCopyAbAttr extends AbAttr {
+ apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean | Promise {
+ pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, (args[0] as BattleStat[]), (args[1] as integer), true, false, false));
+ return true;
+ }
+}
+
export class BypassBurnDamageReductionAbAttr extends AbAttr {
constructor() {
super(false);
@@ -2163,6 +2367,13 @@ export class FlinchStatChangeAbAttr extends FlinchEffectAbAttr {
export class IncreasePpAbAttr extends AbAttr { }
+export class ForceSwitchOutImmunityAbAttr extends AbAttr {
+ apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
+ cancelled.value = true;
+ return true;
+ }
+}
+
export class ReduceBerryUseThresholdAbAttr extends AbAttr {
constructor() {
super();
@@ -2274,6 +2485,25 @@ export class NoFusionAbilityAbAttr extends AbAttr {
}
}
+export class IgnoreTypeImmunityAbAttr extends AbAttr {
+ defenderType: Type;
+ allowedMoveTypes: Type[];
+
+ constructor(defenderType: Type, allowedMoveTypes: Type[]) {
+ super(true);
+ this.defenderType = defenderType;
+ this.allowedMoveTypes = allowedMoveTypes;
+ }
+
+ apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
+ if (this.defenderType !== (args[1] as Type)) {
+ return false;
+ }
+
+ return this.allowedMoveTypes.some(type => type === (args[0] as Type));
+ }
+}
+
function applyAbAttrsInternal(attrType: { new(...args: any[]): TAttr },
pokemon: Pokemon, applyFunc: AbAttrApplyFunc, args: any[], isAsync: boolean = false, showAbilityInstant: boolean = false, quiet: boolean = false, passive: boolean = false): Promise {
return new Promise(resolve => {
@@ -2305,6 +2535,9 @@ function applyAbAttrsInternal(attrType: { new(...args: any
return applyNextAbAttr();
pokemon.scene.setPhaseQueueSplice();
const onApplySuccess = () => {
+ if (pokemon.battleData && !pokemon.battleData.abilitiesApplied.includes(ability.id)) {
+ pokemon.battleData.abilitiesApplied.push(ability.id);
+ }
if (attr.showAbility && !quiet) {
if (showAbilityInstant)
pokemon.scene.abilityBar.showAbility(pokemon, passive);
@@ -2494,7 +2727,8 @@ export function initAbilities() {
.condition(getWeatherCondition(WeatherType.SANDSTORM))
.ignorable(),
new Ability(Abilities.STATIC, 3)
- .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS),
+ .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS)
+ .bypassFaint(),
new Ability(Abilities.VOLT_ABSORB, 3)
.attr(TypeImmunityHealAbAttr, Type.ELECTRIC)
.ignorable(),
@@ -2503,6 +2737,7 @@ export function initAbilities() {
.ignorable(),
new Ability(Abilities.OBLIVIOUS, 3)
.attr(BattlerTagImmunityAbAttr, BattlerTagType.INFATUATED)
+ .attr(IntimidateImmunityAbAttr)
.ignorable(),
new Ability(Abilities.CLOUD_NINE, 3)
.attr(SuppressWeatherEffectAbAttr, true),
@@ -2525,12 +2760,13 @@ export function initAbilities() {
.unimplemented(),
new Ability(Abilities.OWN_TEMPO, 3)
.attr(BattlerTagImmunityAbAttr, BattlerTagType.CONFUSED)
+ .attr(IntimidateImmunityAbAttr)
.ignorable(),
new Ability(Abilities.SUCTION_CUPS, 3)
- .ignorable()
- .unimplemented(),
+ .attr(ForceSwitchOutImmunityAbAttr)
+ .ignorable(),
new Ability(Abilities.INTIMIDATE, 3)
- .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, -1),
+ .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, -1, false, true),
new Ability(Abilities.SHADOW_TAG, 3)
.attr(ArenaTrapAbAttr),
new Ability(Abilities.ROUGH_SKIN, 3)
@@ -2545,7 +2781,7 @@ export function initAbilities() {
.attr(TypeImmunityAbAttr, Type.GROUND, (pokemon: Pokemon) => !pokemon.getTag(BattlerTagType.IGNORE_FLYING) && !pokemon.scene.arena.getTag(ArenaTagType.GRAVITY) && !pokemon.getTag(BattlerTagType.GROUNDED))
.ignorable(),
new Ability(Abilities.EFFECT_SPORE, 3)
- .attr(PostDefendContactApplyStatusEffectAbAttr, 10, StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP),
+ .attr(EffectSporeAbAttr),
new Ability(Abilities.SYNCHRONIZE, 3)
.attr(SyncEncounterNatureAbAttr)
.unimplemented(),
@@ -2576,9 +2812,11 @@ export function initAbilities() {
new Ability(Abilities.HUGE_POWER, 3)
.attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 2),
new Ability(Abilities.POISON_POINT, 3)
- .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON),
+ .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON)
+ .bypassFaint(),
new Ability(Abilities.INNER_FOCUS, 3)
.attr(BattlerTagImmunityAbAttr, BattlerTagType.FLINCHED)
+ .attr(IntimidateImmunityAbAttr)
.ignorable(),
new Ability(Abilities.MAGMA_ARMOR, 3)
.attr(StatusEffectImmunityAbAttr, StatusEffect.FREEZE)
@@ -2608,7 +2846,8 @@ export function initAbilities() {
new Ability(Abilities.EARLY_BIRD, 3)
.attr(ReduceStatusEffectDurationAbAttr, StatusEffect.SLEEP),
new Ability(Abilities.FLAME_BODY, 3)
- .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN),
+ .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN)
+ .bypassFaint(),
new Ability(Abilities.RUN_AWAY, 3)
.attr(RunSuccessAbAttr),
new Ability(Abilities.KEEN_EYE, 3)
@@ -2622,8 +2861,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 +2924,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 +2975,7 @@ export function initAbilities() {
.attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL &&
move.id !== Moves.NATURAL_GIFT && move.id !== Moves.JUDGMENT && move.id !== Moves.TECHNO_BLAST),
new Ability(Abilities.SNIPER, 4)
- .unimplemented(),
+ .attr(MultCritAbAttr, 1.5),
new Ability(Abilities.MAGIC_GUARD, 4)
.attr(BlockNonDirectDamageAbAttr),
new Ability(Abilities.NO_GUARD, 4)
@@ -2764,19 +3003,20 @@ export function initAbilities() {
new Ability(Abilities.ANTICIPATION, 4)
.conditionalAttr(getAnticipationCondition(), PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' shuddered!')),
new Ability(Abilities.FOREWARN, 4)
- .unimplemented(),
+ .attr(ForewarnAbAttr),
new Ability(Abilities.UNAWARE, 4)
.attr(IgnoreOpponentStatChangesAbAttr)
.ignorable(),
new Ability(Abilities.TINTED_LENS, 4)
- .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) <= 0.5, 2),
+ .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) <= 0.5, 2),
new Ability(Abilities.FILTER, 4)
- .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75)
+ .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75)
.ignorable(),
new Ability(Abilities.SLOW_START, 4)
.attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.SLOW_START, 5),
new Ability(Abilities.SCRAPPY, 4)
- .unimplemented(),
+ .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [Type.NORMAL, Type.FIGHTING])
+ .attr(IntimidateImmunityAbAttr),
new Ability(Abilities.STORM_DRAIN, 4)
.attr(RedirectTypeMoveAbAttr, Type.WATER)
.attr(TypeImmunityStatChangeAbAttr, Type.WATER, BattleStat.SPATK, 1)
@@ -2785,7 +3025,7 @@ export function initAbilities() {
.attr(BlockWeatherDamageAttr, WeatherType.HAIL)
.attr(PostWeatherLapseHealAbAttr, 1, WeatherType.HAIL, WeatherType.SNOW),
new Ability(Abilities.SOLID_ROCK, 4)
- .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75)
+ .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75)
.ignorable(),
new Ability(Abilities.SNOW_WARNING, 4)
.attr(PostSummonWeatherChangeAbAttr, WeatherType.SNOW)
@@ -2793,7 +3033,7 @@ export function initAbilities() {
new Ability(Abilities.HONEY_GATHER, 4)
.unimplemented(),
new Ability(Abilities.FRISK, 4)
- .unimplemented(),
+ .attr(FriskAbAttr),
new Ability(Abilities.RECKLESS, 4)
.attr(MovePowerBoostAbAttr, (user, target, move) => move.getAttrs(RecoilAttr).length && move.id !== Moves.STRUGGLE, 1.2),
new Ability(Abilities.MULTITYPE, 4)
@@ -2886,7 +3126,7 @@ export function initAbilities() {
new Ability(Abilities.INFILTRATOR, 5)
.unimplemented(),
new Ability(Abilities.MUMMY, 5)
- .attr(PostDefendAbilityGiveAbAttr)
+ .attr(PostDefendAbilityGiveAbAttr, Abilities.MUMMY)
.bypassFaint(),
new Ability(Abilities.MOXIE, 5)
.attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1),
@@ -2895,7 +3135,7 @@ export function initAbilities() {
new Ability(Abilities.RATTLED, 5)
.attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS && (move.type === Type.DARK || move.type === Type.BUG ||
move.type === Type.GHOST), BattleStat.SPD, 1)
- .partial(),
+ .attr(PostIntimidateStatChangeAbAttr, [BattleStat.SPD], 1),
new Ability(Abilities.MAGIC_BOUNCE, 5)
.ignorable()
.unimplemented(),
@@ -3030,7 +3270,7 @@ export function initAbilities() {
new Ability(Abilities.STEELWORKER, 7)
.attr(MoveTypePowerBoostAbAttr, Type.STEEL),
new Ability(Abilities.BERSERK, 7)
- .unimplemented(),
+ .attr(PostDefendHpGatedStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [BattleStat.SPATK], 1),
new Ability(Abilities.SLUSH_RUSH, 7)
.attr(BattleStatMultiplierAbAttr, BattleStat.SPD, 2)
.condition(getWeatherCondition(WeatherType.HAIL, WeatherType.SNOW)),
@@ -3053,7 +3293,7 @@ export function initAbilities() {
.attr(UnsuppressableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr),
new Ability(Abilities.DISGUISE, 7)
- .attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type) > 0)
+ .attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type, user) > 0)
.attr(PostSummonFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
.attr(PostBattleInitFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
.attr(PostDefendFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1)
@@ -3067,17 +3307,20 @@ export function initAbilities() {
.ignorable()
.partial(),
new Ability(Abilities.BATTLE_BOND, 7)
+ .attr(PostVictoryFormChangeAbAttr, p => p.getFormKey() ? 2 : 1)
+ .attr(UncopiableAbilityAbAttr)
+ .attr(UnswappableAbilityAbAttr)
+ .attr(UnsuppressableAbilityAbAttr)
+ .attr(NoFusionAbilityAbAttr),
+ new Ability(Abilities.POWER_CONSTRUCT, 7) // TODO: 10% Power Construct Zygarde isn't accounted for yet. If changed, update Zygarde's getSpeciesFormIndex entry accordingly
+ .attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
+ .attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
+ .attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 4 : 2)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr)
.attr(NoFusionAbilityAbAttr)
- .unimplemented(),
- new Ability(Abilities.POWER_CONSTRUCT, 7)
- .attr(UncopiableAbilityAbAttr)
- .attr(UnswappableAbilityAbAttr)
- .attr(UnsuppressableAbilityAbAttr)
- .attr(NoFusionAbilityAbAttr)
- .unimplemented(),
+ .partial(),
new Ability(Abilities.CORROSION, 7)
.unimplemented(),
new Ability(Abilities.COMATOSE, 7)
@@ -3148,13 +3391,15 @@ export function initAbilities() {
new Ability(Abilities.SHADOW_SHIELD, 7)
.attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getHpRatio() === 1, 0.5),
new Ability(Abilities.PRISM_ARMOR, 7)
- .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75),
+ .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 0.75),
new Ability(Abilities.NEUROFORCE, 7)
- .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 1.25),
+ .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2, 1.25),
new Ability(Abilities.INTREPID_SWORD, 8)
- .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, 1, true),
+ .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, 1, true)
+ .condition(getOncePerBattleCondition(Abilities.INTREPID_SWORD)),
new Ability(Abilities.DAUNTLESS_SHIELD, 8)
- .attr(PostSummonStatChangeAbAttr, BattleStat.DEF, 1, true),
+ .attr(PostSummonStatChangeAbAttr, BattleStat.DEF, 1, true)
+ .condition(getOncePerBattleCondition(Abilities.DAUNTLESS_SHIELD)),
new Ability(Abilities.LIBERO, 8)
.unimplemented(),
new Ability(Abilities.BALL_FETCH, 8)
@@ -3215,6 +3460,7 @@ export function initAbilities() {
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(NoTransformAbilityAbAttr)
+ .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, '\'s Neutralizing Gas filled the area!'))
.partial(),
new Ability(Abilities.PASTEL_VEIL, 8)
.attr(StatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC)
@@ -3225,7 +3471,8 @@ export function initAbilities() {
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
.attr(NoTransformAbilityAbAttr)
- .attr(NoFusionAbilityAbAttr),
+ .attr(NoFusionAbilityAbAttr)
+ .condition((pokemon) => !pokemon.isTerastallized()),
new Ability(Abilities.QUICK_DRAW, 8)
.unimplemented(),
new Ability(Abilities.UNSEEN_FIST, 8)
@@ -3253,7 +3500,7 @@ export function initAbilities() {
.attr(UnswappableAbilityAbAttr)
.attr(UnsuppressableAbilityAbAttr),
new Ability(Abilities.LINGERING_AROMA, 9)
- .attr(PostDefendAbilityGiveAbAttr)
+ .attr(PostDefendAbilityGiveAbAttr, Abilities.LINGERING_AROMA)
.bypassFaint(),
new Ability(Abilities.SEED_SOWER, 9)
.attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY),
@@ -3262,7 +3509,8 @@ export function initAbilities() {
.attr(StatusEffectImmunityAbAttr, StatusEffect.BURN)
.ignorable(),
new Ability(Abilities.ANGER_SHELL, 9)
- .unimplemented(),
+ .attr(PostDefendHpGatedStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ BattleStat.ATK, BattleStat.SPATK, BattleStat.SPD ], 1)
+ .attr(PostDefendHpGatedStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, 0.5, [ BattleStat.DEF, BattleStat.SPDEF ], -1),
new Ability(Abilities.PURIFYING_SALT, 9)
.attr(StatusEffectImmunityAbAttr)
.attr(ReceivedTypeDamageMultiplierAbAttr, Type.GHOST, 0.5)
@@ -3275,8 +3523,9 @@ export function initAbilities() {
.ignorable()
.partial(),
new Ability(Abilities.GUARD_DOG, 9)
- .ignorable()
- .unimplemented(),
+ .attr(PostIntimidateStatChangeAbAttr, [BattleStat.ATK], 1, true)
+ .attr(ForceSwitchOutImmunityAbAttr)
+ .ignorable(),
new Ability(Abilities.ROCKY_PAYLOAD, 9)
.attr(MoveTypePowerBoostAbAttr, Type.ROCK),
new Ability(Abilities.WIND_POWER, 9)
@@ -3300,13 +3549,15 @@ export function initAbilities() {
.attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
- .attr(NoTransformAbilityAbAttr),
+ .attr(NoTransformAbilityAbAttr)
+ .partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
new Ability(Abilities.QUARK_DRIVE, 9)
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true)
.attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC)
.attr(UncopiableAbilityAbAttr)
.attr(UnswappableAbilityAbAttr)
- .attr(NoTransformAbilityAbAttr),
+ .attr(NoTransformAbilityAbAttr)
+ .partial(), // While setting the tag, the getbattlestat should ignore all modifiers to stats except stat stages
new Ability(Abilities.GOOD_AS_GOLD, 9)
.attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().category === MoveCategory.STATUS)
.ignorable()
@@ -3332,7 +3583,7 @@ export function initAbilities() {
.attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC)
.conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPATK, 4 / 3),
new Ability(Abilities.OPPORTUNIST, 9)
- .unimplemented(),
+ .attr(StatChangeCopyAbAttr),
new Ability(Abilities.CUD_CHEW, 9)
.unimplemented(),
new Ability(Abilities.SHARPNESS, 9)
@@ -3354,10 +3605,11 @@ export function initAbilities() {
.attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS)
.partial(),
new Ability(Abilities.MINDS_EYE, 9)
- .ignorable()
- .unimplemented(),
+ .attr(IgnoreTypeImmunityAbAttr, Type.GHOST, [Type.NORMAL, Type.FIGHTING])
+ .ignorable(), // TODO: evasiveness bypass should not be ignored, but accuracy immunity should
new Ability(Abilities.SUPERSWEET_SYRUP, 9)
- .unimplemented(),
+ .attr(PostSummonStatChangeAbAttr, BattleStat.EVA, -1)
+ .condition(getOncePerBattleCondition(Abilities.SUPERSWEET_SYRUP)),
new Ability(Abilities.HOSPITALITY, 9)
.attr(PostSummonAllyHealAbAttr, 4, true),
new Ability(Abilities.TOXIC_CHAIN, 9)
diff --git a/src/data/api.ts b/src/data/api.ts
index 1f2690c6a..fcfe95671 100644
--- a/src/data/api.ts
+++ b/src/data/api.ts
@@ -340,7 +340,7 @@ export async function printPokemon() {
const speciesKey = (pokemonSpecies as any).key as string;
enumStr += ` ${speciesKey}${pokemonSpecies.speciesId >= 2000 ? ` = ${pokemonSpecies.speciesId}` : ''},\n`;
- pokemonSpeciesStr += ` new PokemonSpecies(Species.${speciesKey}, "${pokemonSpecies.name}", ${pokemonSpecies.generation}, ${pokemonSpecies.pseudoLegendary}, ${pokemonSpecies.legendary}, ${pokemonSpecies.mythical}, "${pokemonSpecies.species}", Type.${Type[pokemonSpecies.type1]}, ${pokemonSpecies.type2 ? `Type.${Type[pokemonSpecies.type2]}` : 'null'}, ${pokemonSpecies.height}, ${pokemonSpecies.weight}, Abilities.${Abilities[pokemonSpecies.ability1]}, Abilities.${Abilities[pokemonSpecies.ability2]}, Abilities.${Abilities[pokemonSpecies.abilityHidden]}, ${pokemonSpecies.baseTotal}, ${pokemonSpecies.baseStats[0]}, ${pokemonSpecies.baseStats[1]}, ${pokemonSpecies.baseStats[2]}, ${pokemonSpecies.baseStats[3]}, ${pokemonSpecies.baseStats[4]}, ${pokemonSpecies.baseStats[5]}, ${pokemonSpecies.catchRate}, ${pokemonSpecies.baseFriendship}, ${pokemonSpecies.baseExp}, GrowthRate.${GrowthRate[pokemonSpecies.growthRate]}, ${pokemonSpecies.malePercent}, ${pokemonSpecies.genderDiffs}`;
+ pokemonSpeciesStr += ` new PokemonSpecies(Species.${speciesKey}, "${pokemonSpecies.name}", ${pokemonSpecies.generation}, ${pokemonSpecies.subLegendary}, ${pokemonSpecies.legendary}, ${pokemonSpecies.mythical}, "${pokemonSpecies.species}", Type.${Type[pokemonSpecies.type1]}, ${pokemonSpecies.type2 ? `Type.${Type[pokemonSpecies.type2]}` : 'null'}, ${pokemonSpecies.height}, ${pokemonSpecies.weight}, Abilities.${Abilities[pokemonSpecies.ability1]}, Abilities.${Abilities[pokemonSpecies.ability2]}, Abilities.${Abilities[pokemonSpecies.abilityHidden]}, ${pokemonSpecies.baseTotal}, ${pokemonSpecies.baseStats[0]}, ${pokemonSpecies.baseStats[1]}, ${pokemonSpecies.baseStats[2]}, ${pokemonSpecies.baseStats[3]}, ${pokemonSpecies.baseStats[4]}, ${pokemonSpecies.baseStats[5]}, ${pokemonSpecies.catchRate}, ${pokemonSpecies.baseFriendship}, ${pokemonSpecies.baseExp}, GrowthRate.${GrowthRate[pokemonSpecies.growthRate]}, ${pokemonSpecies.malePercent}, ${pokemonSpecies.genderDiffs}`;
if (pokemonSpecies.forms.length > 1) {
pokemonSpeciesStr += `, ${pokemonSpecies.canChangeForm},`;
for (let form of pokemonSpecies.forms)
diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts
index bb76a9880..8942cfe4b 100644
--- a/src/data/arena-tag.ts
+++ b/src/data/arena-tag.ts
@@ -1,10 +1,10 @@
import { Arena } from "../field/arena";
import { Type } from "./type";
import * as Utils from "../utils";
-import { MoveCategory, StatChangeAttr, allMoves } from "./move";
+import { MoveCategory, allMoves } from "./move";
import { getPokemonMessage } from "../messages";
import Pokemon, { HitResult, PokemonMove } from "../field/pokemon";
-import { MoveEffectPhase, StatChangePhase } from "../phases";
+import { MoveEffectPhase, PokemonHealPhase, StatChangePhase} from "../phases";
import { StatusEffect } from "./status-effect";
import { BattlerIndex } from "../battle";
import { Moves } from "./enums/moves";
@@ -146,6 +146,31 @@ class AuroraVeilTag extends WeakenMoveScreenTag {
}
}
+class WishTag extends ArenaTag {
+ private battlerIndex: BattlerIndex;
+ private triggerMessage: string;
+ private healHp: number;
+
+ constructor(turnCount: integer, sourceId: integer, side: ArenaTagSide) {
+ super(ArenaTagType.WISH, turnCount, Moves.WISH, sourceId, side);
+ }
+
+ onAdd(arena: Arena): void {
+ const user = arena.scene.getPokemonById(this.sourceId);
+ this.battlerIndex = user.getBattlerIndex();
+ this.triggerMessage = getPokemonMessage(user, '\'s wish\ncame true!');
+ this.healHp = Math.max(Math.floor(user.getMaxHp() / 2), 1);
+ }
+
+ onRemove(arena: Arena): void {
+ const target = arena.scene.getField()[this.battlerIndex];
+ if (target?.isActive(true)) {
+ arena.scene.queueMessage(this.triggerMessage);
+ arena.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), this.healHp, null, true, false));
+ }
+ }
+}
+
export class WeakenMoveTypeTag extends ArenaTag {
private weakenedType: Type;
@@ -457,6 +482,20 @@ export class GravityTag extends ArenaTag {
}
}
+class TailwindTag extends ArenaTag {
+ constructor(turnCount: integer, sourceId: integer, side: ArenaTagSide) {
+ super(ArenaTagType.TAILWIND, turnCount, Moves.TAILWIND, sourceId, side);
+ }
+
+ onAdd(arena: Arena): void {
+ arena.scene.queueMessage(`The Tailwind blew from behind${this.side === ArenaTagSide.PLAYER ? '\nyour' : this.side === ArenaTagSide.ENEMY ? '\nthe opposing' : ''} team!`);
+ }
+
+ onRemove(arena: Arena): void {
+ arena.scene.queueMessage(`${this.side === ArenaTagSide.PLAYER ? 'Your' : this.side === ArenaTagSide.ENEMY ? 'The opposing' : ''} team's Tailwind petered out!`);
+ }
+}
+
export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag {
switch (tagType) {
case ArenaTagType.MIST:
@@ -472,6 +511,8 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov
case ArenaTagType.FUTURE_SIGHT:
case ArenaTagType.DOOM_DESIRE:
return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex);
+ case ArenaTagType.WISH:
+ return new WishTag(turnCount, sourceId, side);
case ArenaTagType.STEALTH_ROCK:
return new StealthRockTag(sourceId, side);
case ArenaTagType.STICKY_WEB:
@@ -486,5 +527,7 @@ export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMov
return new LightScreenTag(turnCount, sourceId, side);
case ArenaTagType.AURORA_VEIL:
return new AuroraVeilTag(turnCount, sourceId, side);
+ case ArenaTagType.TAILWIND:
+ return new TailwindTag(turnCount, sourceId, side);
}
}
diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts
index aaab9f9a4..0fea80c37 100644
--- a/src/data/battler-tags.ts
+++ b/src/data/battler-tags.ts
@@ -163,6 +163,29 @@ export class FlinchedTag extends BattlerTag {
}
}
+export class InterruptedTag extends BattlerTag {
+ constructor(sourceMove: Moves){
+ super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove)
+ }
+
+ canAdd(pokemon: Pokemon): boolean {
+ return !!pokemon.getTag(BattlerTagType.FLYING)
+ }
+
+ onAdd(pokemon: Pokemon): void {
+ super.onAdd(pokemon);
+
+ pokemon.getMoveQueue().shift()
+ pokemon.pushMoveHistory({move: Moves.NONE, result: MoveResult.OTHER})
+ }
+
+ lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
+ super.lapse(pokemon, lapseType);
+ (pokemon.scene.getCurrentPhase() as MovePhase).cancel();
+ return true
+ }
+}
+
export class ConfusedTag extends BattlerTag {
constructor(turnCount: integer, sourceMove: Moves) {
super(BattlerTagType.CONFUSED, BattlerTagLapseType.MOVE, turnCount, sourceMove);
@@ -368,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;
@@ -891,7 +920,7 @@ export class HighestStatBoostTag extends AbilityBattlerTag {
stats.map(s => pokemon.getBattleStat(s)).reduce((highestValue: integer, value: integer, i: integer) => {
if (value > highestValue) {
highestStat = stats[i];
- return highestValue += value;
+ return value;
}
return highestValue;
}, 0);
@@ -955,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;
@@ -1081,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:
@@ -1091,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:
@@ -1178,6 +1224,8 @@ export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourc
return new CursedTag(sourceId);
case BattlerTagType.CHARGED:
return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true);
+ case BattlerTagType.MAGNET_RISEN:
+ return new MagnetRisenTag(tagType, sourceMove);
case BattlerTagType.NONE:
default:
return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId);
diff --git a/src/data/berry.ts b/src/data/berry.ts
index b28772373..96b50caa9 100644
--- a/src/data/berry.ts
+++ b/src/data/berry.ts
@@ -99,6 +99,8 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc {
case BerryType.SITRUS:
case BerryType.ENIGMA:
return (pokemon: Pokemon) => {
+ if (pokemon.battleData)
+ pokemon.battleData.berriesEaten.push(berryType);
const hpHealed = new Utils.NumberHolder(Math.floor(pokemon.getMaxHp() / 4));
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, hpHealed);
pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(),
@@ -106,11 +108,14 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc {
};
case BerryType.LUM:
return (pokemon: Pokemon) => {
+ if (pokemon.battleData)
+ pokemon.battleData.berriesEaten.push(berryType);
if (pokemon.status) {
pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect)));
pokemon.resetStatus();
pokemon.updateInfo();
- } else if (pokemon.getTag(BattlerTagType.CONFUSED))
+ }
+ if (pokemon.getTag(BattlerTagType.CONFUSED))
pokemon.lapseTag(BattlerTagType.CONFUSED);
};
case BerryType.LIECHI:
@@ -119,6 +124,8 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc {
case BerryType.APICOT:
case BerryType.SALAC:
return (pokemon: Pokemon) => {
+ if (pokemon.battleData)
+ pokemon.battleData.berriesEaten.push(berryType);
const battleStat = (berryType - BerryType.LIECHI) as BattleStat;
const statLevels = new Utils.NumberHolder(1);
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels);
@@ -126,16 +133,22 @@ export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc {
};
case BerryType.LANSAT:
return (pokemon: Pokemon) => {
+ if (pokemon.battleData)
+ pokemon.battleData.berriesEaten.push(berryType);
pokemon.addTag(BattlerTagType.CRIT_BOOST);
};
case BerryType.STARF:
return (pokemon: Pokemon) => {
+ if (pokemon.battleData)
+ pokemon.battleData.berriesEaten.push(berryType);
const statLevels = new Utils.NumberHolder(2);
applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels);
pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ BattleStat.RAND ], statLevels.value));
};
case BerryType.LEPPA:
return (pokemon: Pokemon) => {
+ if (pokemon.battleData)
+ pokemon.battleData.berriesEaten.push(berryType);
const ppRestoreMove = pokemon.getMoveset().find(m => !m.getPpRatio());
ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0);
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` restored PP to its move ${ppRestoreMove.getName()}\nusing its ${getBerryName(berryType)}!`));
diff --git a/src/data/biomes.ts b/src/data/biomes.ts
index d6e84bcbc..61da0410d 100644
--- a/src/data/biomes.ts
+++ b/src/data/biomes.ts
@@ -241,10 +241,10 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ { 1: [ Species.BULBASAUR ], 16: [ Species.IVYSAUR ], 32: [ Species.VENUSAUR ] }, Species.GROWLITHE, { 1: [ Species.TURTWIG ], 18: [ Species.GROTLE ], 32: [ Species.TORTERRA ] } ]
},
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SUDOWOODO ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.JUMPLUFF, Species.SUNFLORA, Species.WHIMSICOTT ], [TimeOfDay.DAY]: [ Species.JUMPLUFF, Species.SUNFLORA, Species.WHIMSICOTT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VENUSAUR, Species.SUDOWOODO, Species.TORTERRA ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.TALL_GRASS]: {
@@ -487,14 +487,14 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [ Species.ARBOK, Species.CLODSIRE ],
[TimeOfDay.ALL]: [ Species.POLIWRATH, Species.SWALOT, Species.WHISCASH, Species.GASTRODON, Species.SEISMITOAD, Species.STUNFISK, Species.TOXAPEX ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.FERALIGATR, Species.POLITOED, Species.SWAMPERT ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: {
+ [BiomePoolTier.BOSS_RARE]: {
[TimeOfDay.DAWN]: [ Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING, Species.HISUI_GOODRA ],
[TimeOfDay.DAY]: [ Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING, Species.HISUI_GOODRA ],
[TimeOfDay.DUSK]: [],
[TimeOfDay.NIGHT]: [],
- [TimeOfDay.ALL]: [ Species.AZELF, Species.NAGANADEL, Species.GALAR_STUNFISK ]
+ [TimeOfDay.ALL]: [ Species.FERALIGATR, Species.POLITOED, Species.SWAMPERT, Species.GALAR_STUNFISK ]
},
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.AZELF, Species.NAGANADEL ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.BEACH]: {
@@ -521,7 +521,7 @@ export const biomePokemonPools: BiomePokemonPools = {
},
[BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.QUAXLY ], 16: [ Species.QUAXWELL ], 36: [ Species.QUAQUAVAL ] }, Species.TATSUGIRI ] },
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.TIRTOUGA ], 37: [ Species.CARRACOSTA ] } ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KELDEO ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.KELDEO, Species.TAPU_FINI ] },
[BiomePoolTier.BOSS]: {
[TimeOfDay.DAWN]: [ Species.STARMIE ],
[TimeOfDay.DAY]: [ Species.STARMIE ],
@@ -530,7 +530,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ Species.KINGLER, Species.CRAWDAUNT, Species.WORMADAM, Species.CRUSTLE, Species.BARBARACLE, Species.CLAWITZER, Species.TOXAPEX, Species.PALOSSAND ]
},
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CARRACOSTA, Species.QUAQUAVAL ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KELDEO ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.KELDEO, Species.TAPU_FINI ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.LAKE]: {
@@ -615,7 +615,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.DAY]: [],
[TimeOfDay.DUSK]: [],
[TimeOfDay.NIGHT]: [],
- [TimeOfDay.ALL]: [ Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, { 1: [ Species.MANTYKE ], 20: [ Species.MANTINE ] }, Species.ALOMOMOLA, { 1: [ Species.TYNAMO ], 39: [ Species.EELEKTRIK ] }, Species.DHELMISE ]
+ [TimeOfDay.ALL]: [ Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, { 1: [ Species.MANTYKE ], 52: [ Species.MANTINE ] }, Species.ALOMOMOLA, { 1: [ Species.TYNAMO ], 39: [ Species.EELEKTRIK ] }, Species.DHELMISE ]
},
[BiomePoolTier.SUPER_RARE]: {
[TimeOfDay.DAWN]: [],
@@ -640,8 +640,14 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.LANTURN, Species.QWILFISH, Species.CORSOLA, Species.OCTILLERY, Species.MANTINE, Species.WAILORD, Species.HUNTAIL, Species.GOREBYSS, Species.LUVDISC, Species.JELLICENT, Species.ALOMOMOLA, Species.DRAGALGE, Species.BARRASKEWDA, Species.DONDOZO ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.OMASTAR, Species.KABUTOPS, Species.RELICANTH, Species.EELEKTROSS, Species.PYUKUMUKU, Species.DHELMISE, Species.ARCTOVISH, Species.BASCULEGION ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MILOTIC, Species.NIHILEGO, Species.CURSOLA, Species.OVERQWIL ] },
+ [BiomePoolTier.BOSS_RARE]: {
+ [TimeOfDay.DAWN]: [],
+ [TimeOfDay.DAY]: [],
+ [TimeOfDay.DUSK]: [],
+ [TimeOfDay.NIGHT]: [],
+ [TimeOfDay.ALL]: [ Species.OMASTAR, Species.KABUTOPS, Species.RELICANTH, Species.EELEKTROSS, Species.PYUKUMUKU, Species.DHELMISE, Species.CURSOLA, Species.ARCTOVISH, Species.BASCULEGION, Species.OVERQWIL ]
+ },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MILOTIC, Species.NIHILEGO ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KYOGRE ] }
},
[Biome.MOUNTAIN]: {
@@ -840,7 +846,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ { 1: [ Species.DARUMAKA ], 35: [ Species.DARMANITAN ] } ]
},
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.LILEEP ], 40: [ Species.CRADILY ] }, { 1: [ Species.ANORITH ], 40: [ Species.ARMALDO ] } ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.PHEROMOSA ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.TAPU_BULU, Species.PHEROMOSA ] },
[BiomePoolTier.BOSS]: {
[TimeOfDay.DAWN]: [ Species.HIPPOWDON, Species.HELIOLISK, Species.RABSCA ],
[TimeOfDay.DAY]: [ Species.HIPPOWDON, Species.HELIOLISK, Species.RABSCA ],
@@ -849,7 +855,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ Species.SANDSLASH, Species.DRAPION, Species.DARMANITAN, Species.MARACTUS, Species.SANDACONDA, Species.BRAMBLEGHAST ]
},
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRADILY, Species.ARMALDO ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.PHEROMOSA ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIROCK, Species.TAPU_BULU, Species.PHEROMOSA ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.ICE_CAVE]: {
@@ -951,9 +957,9 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.TAUROS, Species.MILTANK, Species.GARDEVOIR, Species.PURUGLY, Species.ZEBSTRIKA, Species.FLORGES, Species.RIBOMBEE, Species.DUBWOOL ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLISSEY, Species.SYLVEON, Species.FLAPPLE, Species.APPLETUN, Species.MEOWSCARADA, Species.HYDRAPPLE ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MELOETTA ] },
- [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DAY]: [ Species.HISUI_LILLIGANT ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLISSEY, Species.SYLVEON, Species.FLAPPLE, Species.APPLETUN, Species.MEOWSCARADA, Species.HYDRAPPLE ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MELOETTA ] },
+ [BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SHAYMIN ] }
},
[Biome.POWER_PLANT]: {
[BiomePoolTier.COMMON]: {
@@ -984,8 +990,8 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.RAICHU, Species.MANECTRIC, Species.LUXRAY, Species.MAGNEZONE, Species.ELECTIVIRE, Species.DEDENNE, Species.VIKAVOLT, Species.TOGEDEMARU, Species.PAWMOT, Species.BELLIBOLT ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JOLTEON, Species.AMPHAROS ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZAPDOS, Species.RAIKOU, Species.THUNDURUS, Species.XURKITREE, Species.ZERAORA, Species.REGIELEKI, Species.HISUI_ELECTRODE ] },
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.JOLTEON, Species.AMPHAROS, Species.HISUI_ELECTRODE ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZAPDOS, Species.RAIKOU, Species.THUNDURUS, Species.XURKITREE, Species.ZERAORA, Species.REGIELEKI ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZEKROM ] }
},
[Biome.VOLCANO]: {
@@ -1035,9 +1041,9 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.DAY]: [],
[TimeOfDay.DUSK]: [],
[TimeOfDay.NIGHT]: [],
- [TimeOfDay.ALL]: [ Species.CHARIZARD, Species.FLAREON, Species.TYPHLOSION, Species.INFERNAPE, Species.EMBOAR, Species.VOLCARONA, Species.DELPHOX, Species.INCINEROAR, Species.CINDERACE, Species.ARMAROUGE ]
+ [TimeOfDay.ALL]: [ Species.CHARIZARD, Species.FLAREON, Species.TYPHLOSION, Species.INFERNAPE, Species.EMBOAR, Species.VOLCARONA, Species.DELPHOX, Species.INCINEROAR, Species.CINDERACE, Species.ARMAROUGE, Species.HISUI_ARCANINE ]
},
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MOLTRES, Species.ENTEI, Species.ROTOM, Species.HEATRAN, Species.VOLCANION, Species.CHI_YU, Species.HISUI_ARCANINE ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MOLTRES, Species.ENTEI, Species.ROTOM, Species.HEATRAN, Species.VOLCANION, Species.CHI_YU ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.RESHIRAM ] }
},
[Biome.GRAVEYARD]: {
@@ -1074,8 +1080,8 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.GENGAR, Species.BANETTE, Species.DRIFBLIM, Species.MISMAGIUS, Species.DUSKNOIR, Species.CHANDELURE, Species.TREVENANT, Species.GOURGEIST, Species.MIMIKYU, Species.POLTEAGEIST, Species.HOUNDSTONE ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SKELEDIRGE, Species.CERULEDGE ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MARSHADOW, Species.SPECTRIER, Species.HISUI_TYPHLOSION ] },
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.SKELEDIRGE, Species.CERULEDGE, Species.HISUI_TYPHLOSION ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MARSHADOW, Species.SPECTRIER ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GIRATINA ] }
},
[Biome.DOJO]: {
@@ -1109,8 +1115,8 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.HITMONLEE, Species.HITMONCHAN, Species.HARIYAMA, Species.MEDICHAM, Species.LUCARIO, Species.TOXICROAK, Species.THROH, Species.SAWK, Species.SCRAFTY, Species.MIENSHAO, Species.BEWEAR, Species.GRAPPLOCT, Species.ANNIHILAPE ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HITMONTOP, Species.GALLADE, Species.PANGORO ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TERRAKION, Species.SIRFETCHD, Species.URSHIFU, Species.HISUI_DECIDUEYE ] },
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HITMONTOP, Species.GALLADE, Species.PANGORO, Species.SIRFETCHD, Species.HISUI_DECIDUEYE ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TERRAKION, Species.URSHIFU ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZAMAZENTA, Species.GALAR_ZAPDOS ] }
},
[Biome.FACTORY]: {
@@ -1128,8 +1134,8 @@ export const biomePokemonPools: BiomePokemonPools = {
]
},
[BiomePoolTier.UNCOMMON]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.BRONZOR ], 33: [ Species.BRONZONG ] }, Species.KLEFKI ] },
- [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
- [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ] }, { 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ] } ] },
+ [BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ] } ] },
+ [BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ] } ] },
[BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GENESECT, Species.MAGEARNA ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KLINKLANG, Species.KLEFKI ] },
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
@@ -1168,8 +1174,8 @@ export const biomePokemonPools: BiomePokemonPools = {
},
[BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGISTEEL, Species.FEZANDIPITI ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ALAKAZAM, Species.HYPNO, Species.XATU, Species.GRUMPIG, Species.CLAYDOL, Species.SIGILYPH, Species.GOTHITELLE, Species.BEHEEYEM, Species.TINKATON ] },
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.ESPEON ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MR_MIME, Species.WOBBUFFET, Species.ARCHEOPS ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.RUNERIGUS ], [TimeOfDay.NIGHT]: [ Species.RUNERIGUS ], [TimeOfDay.ALL]: [ Species.REGISTEEL, Species.FEZANDIPITI ] },
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.ESPEON ], [TimeOfDay.DUSK]: [ Species.RUNERIGUS ], [TimeOfDay.NIGHT]: [ Species.RUNERIGUS ], [TimeOfDay.ALL]: [ Species.MR_MIME, Species.WOBBUFFET, Species.ARCHEOPS ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGISTEEL, Species.FEZANDIPITI ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KORAIDON ] }
},
[Biome.WASTELAND]: {
@@ -1245,7 +1251,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ Species.ABSOL, Species.SPIRITOMB, { 1: [ Species.ZORUA ], 30: [ Species.ZOROARK ] }, { 1: [ Species.DEINO ], 50: [ Species.ZWEILOUS ], 64: [ Species.HYDREIGON ] } ]
},
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UMBREON ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI, Species.GUZZLORD, Species.GALAR_MOLTRES ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI, Species.GALAR_MOLTRES ] },
[BiomePoolTier.BOSS]: {
[TimeOfDay.DAWN]: [],
[TimeOfDay.DAY]: [],
@@ -1253,8 +1259,8 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.HOUNDOOM, Species.SABLEYE, Species.ABSOL, Species.HONCHKROW, Species.SPIRITOMB, Species.LIEPARD, Species.ZOROARK, Species.HYDREIGON, Species.THIEVUL, Species.GRIMMSNARL, Species.MABOSSTIFF, Species.KINGAMBIT ]
},
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UMBREON ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI, Species.GUZZLORD, Species.HISUI_SAMUROTT ] },
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.UMBREON, Species.HISUI_SAMUROTT ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DARKRAI ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.PALKIA, Species.YVELTAL, Species.GALAR_MOLTRES ] }
},
[Biome.SPACE]: {
@@ -1274,10 +1280,10 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ { 1: [ Species.BELDUM ], 20: [ Species.METANG ], 45: [ Species.METAGROSS ] }, Species.SIGILYPH, { 1: [ Species.SOLOSIS ], 32: [ Species.DUOSION ], 41: [ Species.REUNICLUS ] } ]
},
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.PORYGON ], 30: [ Species.PORYGON2 ] } ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, { 1: [ Species.COSMOG ], 43: [ Species.COSMOEM ] }, Species.CELESTEELA ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.COSMOG ], 43: [ Species.COSMOEM ] }, Species.CELESTEELA ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.SOLROCK ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ Species.LUNATONE ], [TimeOfDay.ALL]: [ Species.CLEFABLE, Species.BRONZONG, Species.MUSHARNA, Species.REUNICLUS, Species.MINIOR ] },
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.METAGROSS, Species.PORYGON_Z ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CRESSELIA, Species.CELESTEELA ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CELESTEELA ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [ Species.SOLGALEO ], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [ Species.LUNALA ], [TimeOfDay.ALL]: [ Species.RAYQUAZA, Species.NECROZMA ] }
},
[Biome.CONSTRUCTION_SITE]: {
@@ -1307,10 +1313,10 @@ export const biomePokemonPools: BiomePokemonPools = {
},
[BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ { 1: [ Species.GALAR_MEOWTH ], 28: [ Species.PERRSERKER ] } ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ONIX, Species.HITMONLEE, Species.HITMONCHAN, Species.DURALUDON ] },
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.DITTO, Species.HITMONTOP ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION, Species.STAKATAKA ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.MACHAMP, Species.CONKELDURR ] },
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.PERRSERKER ], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ARCHALUDON ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.COBALION, Species.STAKATAKA ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.JUNGLE]: {
@@ -1319,7 +1325,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.DAY]: [ Species.VESPIQUEN, { 1: [ Species.CHERUBI ], 25: [ Species.CHERRIM ] }, { 1: [ Species.SEWADDLE ], 20: [ Species.SWADLOON ], 30: [ Species.LEAVANNY ] } ],
[TimeOfDay.DUSK]: [ Species.SHROOMISH, { 1: [ Species.PURRLOIN ], 20: [ Species.LIEPARD ] }, { 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ] } ],
[TimeOfDay.NIGHT]: [ { 1: [ Species.SPINARAK ], 22: [ Species.ARIADOS ] }, Species.SHROOMISH, { 1: [ Species.PURRLOIN ], 20: [ Species.LIEPARD ] }, { 1: [ Species.FOONGUS ], 39: [ Species.AMOONGUSS ] } ],
- [TimeOfDay.ALL]: [ Species.AIPOM, { 1: [ Species.BLITZLE ], 27: [ Species.ZEBSTRIKA ] }, { 1: [ Species.PIKIPEK ], 14: [ Species.TRUMBEAK ], 36: [ Species.TOUCANNON ] } ]
+ [TimeOfDay.ALL]: [ Species.AIPOM, { 1: [ Species.BLITZLE ], 27: [ Species.ZEBSTRIKA ] }, { 1: [ Species.PIKIPEK ], 14: [ Species.TRUMBEAK ], 28: [ Species.TOUCANNON ] } ]
},
[BiomePoolTier.UNCOMMON]: {
[TimeOfDay.DAWN]: [ Species.EXEGGCUTE, Species.TROPIUS, Species.COMBEE, Species.KOMALA ],
@@ -1352,7 +1358,7 @@ export const biomePokemonPools: BiomePokemonPools = {
]
},
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KANGASKHAN, Species.CHATOT, Species.KLEAVOR ] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TAPU_LELE, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ] },
[BiomePoolTier.BOSS]: {
[TimeOfDay.DAWN]: [ Species.EXEGGUTOR, Species.TROPIUS, Species.CHERRIM, Species.LEAVANNY, Species.KOMALA ],
[TimeOfDay.DAY]: [ Species.EXEGGUTOR, Species.TROPIUS, Species.CHERRIM, Species.LEAVANNY, Species.KOMALA ],
@@ -1367,7 +1373,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.NIGHT]: [],
[TimeOfDay.ALL]: [ Species.KANGASKHAN, Species.SCIZOR, Species.SLAKING, Species.LEAFEON, Species.SERPERIOR, Species.RILLABOOM ]
},
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.VIRIZION, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.TAPU_LELE, Species.BUZZWOLE, Species.ZARUDE, Species.MUNKIDORI ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.KLEAVOR ] }
},
[Biome.FAIRY_CAVE]: {
@@ -1445,10 +1451,10 @@ export const biomePokemonPools: BiomePokemonPools = {
},
[BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ { 1: [ Species.GIMMIGHOUL ], 40: [ Species.GHOLDENGO ] } ] },
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HOOPA, Species.TAPU_KOKO, Species.TAPU_LELE, Species.TAPU_BULU, Species.TAPU_FINI ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HOOPA, Species.TAPU_KOKO ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.CHIMECHO, Species.COFAGRIGUS, Species.GOLURK, Species.AEGISLASH ] },
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GHOLDENGO ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HOOPA, Species.TAPU_KOKO, Species.TAPU_LELE, Species.TAPU_BULU, Species.TAPU_FINI ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.HOOPA, Species.TAPU_KOKO ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.REGIGIGAS ] }
},
[Biome.SLUM]: {
@@ -1479,10 +1485,10 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ { 1: [ Species.VAROOM ], 40: [ Species.REVAVROOM ] } ]
},
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GUZZLORD ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.SKUNTANK, Species.WATCHOG ], [TimeOfDay.NIGHT]: [ Species.SKUNTANK, Species.WATCHOG ], [TimeOfDay.ALL]: [ Species.MUK, Species.WEEZING, Species.WORMADAM, Species.GARBODOR ] },
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.TOXTRICITY, Species.OBSTAGOON ], [TimeOfDay.NIGHT]: [ Species.TOXTRICITY, Species.OBSTAGOON ], [TimeOfDay.ALL]: [ Species.REVAVROOM ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GALAR_WEEZING ] },
+ [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [ Species.TOXTRICITY, Species.OBSTAGOON ], [TimeOfDay.NIGHT]: [ Species.TOXTRICITY, Species.OBSTAGOON ], [TimeOfDay.ALL]: [ Species.REVAVROOM, Species.GALAR_WEEZING ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GUZZLORD ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.SNOWY_FOREST]: {
@@ -1516,14 +1522,14 @@ export const biomePokemonPools: BiomePokemonPools = {
},
[BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GLASTRIER, Species.CHIEN_PAO, Species.GALAR_ARTICUNO ] },
[BiomePoolTier.BOSS]: { [TimeOfDay.DAWN]: [ Species.WYRDEER ], [TimeOfDay.DAY]: [ Species.WYRDEER ], [TimeOfDay.DUSK]: [ Species.FROSMOTH ], [TimeOfDay.NIGHT]: [ Species.FROSMOTH ], [TimeOfDay.ALL]: [ Species.ABOMASNOW, Species.URSALUNA ] },
- [BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ARCTOZOLT, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES ] },
- [BiomePoolTier.BOSS_SUPER_RARE]: {
+ [BiomePoolTier.BOSS_RARE]: {
[TimeOfDay.DAWN]: [ Species.SNEASLER, Species.GALAR_DARMANITAN ],
[TimeOfDay.DAY]: [ Species.SNEASLER, Species.GALAR_DARMANITAN ],
[TimeOfDay.DUSK]: [ Species.HISUI_ZOROARK ],
[TimeOfDay.NIGHT]: [ Species.HISUI_ZOROARK ],
- [TimeOfDay.ALL]: [ Species.MR_RIME, Species.GLASTRIER, Species.CHIEN_PAO ]
+ [TimeOfDay.ALL]: [ Species.MR_RIME, Species.ARCTOZOLT, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES ]
},
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.GLASTRIER, Species.CHIEN_PAO ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.ZACIAN, Species.GALAR_ARTICUNO ] }
},
[Biome.ISLAND]: {
@@ -1550,7 +1556,7 @@ export const biomePokemonPools: BiomePokemonPools = {
},
[BiomePoolTier.RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
[BiomePoolTier.SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
- [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.STAKATAKA, Species.BLACEPHALON ] },
+ [BiomePoolTier.ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLACEPHALON ] },
[BiomePoolTier.BOSS]: {
[TimeOfDay.DAWN]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ],
[TimeOfDay.DAY]: [ Species.ALOLA_RAICHU, Species.ALOLA_EXEGGUTOR ],
@@ -1559,7 +1565,7 @@ export const biomePokemonPools: BiomePokemonPools = {
[TimeOfDay.ALL]: [ Species.ORICORIO, Species.BRUXISH, Species.ALOLA_SANDSLASH, Species.ALOLA_NINETALES, Species.ALOLA_DUGTRIO, Species.ALOLA_GOLEM, Species.ALOLA_MUK ]
},
[BiomePoolTier.BOSS_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] },
- [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.STAKATAKA, Species.BLACEPHALON ] },
+ [BiomePoolTier.BOSS_SUPER_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [ Species.BLACEPHALON ] },
[BiomePoolTier.BOSS_ULTRA_RARE]: { [TimeOfDay.DAWN]: [], [TimeOfDay.DAY]: [], [TimeOfDay.DUSK]: [], [TimeOfDay.NIGHT]: [], [TimeOfDay.ALL]: [] }
},
[Biome.LABORATORY]: {
@@ -2708,7 +2714,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.PORYGON, Type.NORMAL, -1, [
- [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ],
+ [ Biome.FACTORY, BiomePoolTier.RARE ],
[ Biome.SPACE, BiomePoolTier.SUPER_RARE ],
[ Biome.LABORATORY, BiomePoolTier.RARE ]
]
@@ -3165,7 +3171,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.PORYGON2, Type.NORMAL, -1, [
- [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ],
+ [ Biome.FACTORY, BiomePoolTier.RARE ],
[ Biome.SPACE, BiomePoolTier.SUPER_RARE ],
[ Biome.LABORATORY, BiomePoolTier.RARE ]
]
@@ -4371,8 +4377,8 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.CRESSELIA, Type.PSYCHIC, -1, [
- [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ],
- [ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.PHIONE, Type.WATER, -1, [ ]
@@ -4384,7 +4390,9 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
- [ Species.SHAYMIN, Type.GRASS, -1, [ ]
+ [ Species.SHAYMIN, Type.GRASS, -1, [
+ [ Biome.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ]
+ ]
],
[ Species.ARCEUS, Type.NORMAL, -1, [ ]
],
@@ -5103,8 +5111,8 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.VIRIZION, Type.GRASS, Type.FIGHTING, [
- [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ],
- [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.GRASS, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.GRASS, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.TORNADUS, Type.FLYING, -1, [
@@ -5779,18 +5787,18 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.TAPU_LELE, Type.PSYCHIC, Type.FAIRY, [
- [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ],
- [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.TAPU_BULU, Type.GRASS, Type.FAIRY, [
- [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ],
- [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.TAPU_FINI, Type.WATER, Type.FAIRY, [
- [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ],
- [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.COSMOG, Type.PSYCHIC, -1, [
@@ -5840,8 +5848,8 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.GUZZLORD, Type.DARK, Type.DRAGON, [
- [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ],
- [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.SLUM, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.NECROZMA, Type.PSYCHIC, -1, [
@@ -5867,8 +5875,8 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.STAKATAKA, Type.ROCK, Type.STEEL, [
- [ Biome.ISLAND, BiomePoolTier.ULTRA_RARE ],
- [ Biome.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ],
+ [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ]
]
],
[ Species.BLACEPHALON, Type.FIRE, Type.GHOST, [
@@ -6129,21 +6137,21 @@ export const biomeTrainerPools: BiomeTrainerPools = {
],
[ Species.CURSOLA, Type.GHOST, -1, [
[ Biome.SEABED, BiomePoolTier.SUPER_RARE ],
- [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.SEABED, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.SIRFETCHD, Type.FIGHTING, -1, [
- [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.DOJO, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.MR_RIME, Type.ICE, Type.PSYCHIC, [
[ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ],
- [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.RUNERIGUS, Type.GROUND, Type.GHOST, [
[ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ],
- [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ]
+ [ Biome.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ]
]
],
[ Species.MILCERY, Type.FAIRY, -1, [
@@ -6305,11 +6313,11 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.SNEASLER, Type.FIGHTING, Type.POISON, [
- [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
+ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
]
],
[ Species.OVERQWIL, Type.DARK, Type.POISON, [
- [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.SEABED, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.ENAMORUS, Type.FAIRY, Type.FLYING, [
@@ -6972,7 +6980,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
],
[ Species.GALAR_SLOWBRO, Type.POISON, Type.PSYCHIC, [
[ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ],
- [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
+ [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
]
],
[ Species.GALAR_FARFETCHD, Type.FIGHTING, -1, [
@@ -6980,7 +6988,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.GALAR_WEEZING, Type.POISON, Type.FAIRY, [
- [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.SLUM, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.GALAR_MR_MIME, Type.ICE, Type.PSYCHIC, [
@@ -7003,7 +7011,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.GALAR_SLOWKING, Type.POISON, Type.PSYCHIC, [
- [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
+ [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
]
],
[ Species.GALAR_CORSOLA, Type.GHOST, -1, [
@@ -7024,7 +7032,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
],
[ Species.GALAR_DARMANITAN, Type.ICE, -1, [
[ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ],
- [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
+ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
]
],
[ Species.GALAR_YAMASK, Type.GROUND, Type.GHOST, [
@@ -7033,7 +7041,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
],
[ Species.GALAR_STUNFISK, Type.GROUND, Type.STEEL, [
[ Biome.SWAMP, BiomePoolTier.SUPER_RARE ],
- [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.HISUI_GROWLITHE, Type.FIRE, Type.ROCK, [
@@ -7041,7 +7049,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.HISUI_ARCANINE, Type.FIRE, Type.ROCK, [
- [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.HISUI_VOLTORB, Type.ELECTRIC, Type.GRASS, [
@@ -7049,11 +7057,11 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.HISUI_ELECTRODE, Type.ELECTRIC, Type.GRASS, [
- [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.HISUI_TYPHLOSION, Type.FIRE, Type.GHOST, [
- [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.HISUI_QWILFISH, Type.DARK, Type.POISON, [
@@ -7065,11 +7073,11 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.HISUI_SAMUROTT, Type.WATER, Type.DARK, [
- [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.HISUI_LILLIGANT, Type.GRASS, Type.FIGHTING, [
- [ Biome.MEADOW, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
+ [ Biome.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
]
],
[ Species.HISUI_ZORUA, Type.NORMAL, Type.GHOST, [
@@ -7078,7 +7086,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
],
[ Species.HISUI_ZOROARK, Type.NORMAL, Type.GHOST, [
[ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ],
- [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ]
+ [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ]
]
],
[ Species.HISUI_BRAVIARY, Type.PSYCHIC, Type.FLYING, [
@@ -7091,7 +7099,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
],
[ Species.HISUI_GOODRA, Type.STEEL, Type.DRAGON, [
[ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ],
- [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
+ [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ]
]
],
[ Species.HISUI_AVALUGG, Type.ICE, Type.ROCK, [
@@ -7099,7 +7107,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ Species.HISUI_DECIDUEYE, Type.GRASS, Type.FIGHTING, [
- [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ]
+ [ Biome.DOJO, BiomePoolTier.BOSS_RARE ]
]
],
[ Species.PALDEA_TAUROS, Type.FIGHTING, -1, [
diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts
index f2b9a55d3..045229779 100644
--- a/src/data/egg-moves.ts
+++ b/src/data/egg-moves.ts
@@ -5,18 +5,18 @@ import * as Utils from "../utils";
export const speciesEggMoves = {
- [Species.BULBASAUR]: [ Moves.STRENGTH_SAP, Moves.SLUDGE_BOMB, Moves.EARTH_POWER, Moves.SAPPY_SEED ],
+ [Species.BULBASAUR]: [ Moves.GIGA_DRAIN, Moves.SLUDGE_BOMB, Moves.EARTH_POWER, Moves.SAPPY_SEED ],
[Species.CHARMANDER]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.EARTH_POWER, Moves.OBLIVION_WING ],
[Species.SQUIRTLE]: [ Moves.ICE_BEAM, Moves.DARK_PULSE, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ],
[Species.CATERPIE]: [ Moves.EARTH_POWER, Moves.SILK_TRAP, Moves.STICKY_WEB, Moves.BLEAKWIND_STORM ],
[Species.WEEDLE]: [ Moves.DRILL_RUN, Moves.SWORDS_DANCE, Moves.BANEFUL_BUNKER, Moves.BARB_BARRAGE ],
[Species.PIDGEY]: [ Moves.HEAT_WAVE, Moves.FOCUS_BLAST, Moves.U_TURN, Moves.WILDBOLT_STORM ],
[Species.RATTATA]: [ Moves.HYPER_FANG, Moves.PSYCHIC_FANGS, Moves.FIRE_FANG, Moves.EXTREME_SPEED ],
- [Species.SPEAROW]: [ Moves.DUAL_WINGBEAT, Moves.SUCKER_PUNCH, Moves.PARTING_SHOT, Moves.HYPER_DRILL ],
+ [Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.EXTREME_SPEED, Moves.TIDY_UP, Moves.TRIPLE_ARROWS ],
[Species.EKANS]: [ Moves.SHED_TAIL, Moves.DRAGON_DANCE, Moves.SLACK_OFF, Moves.NOXIOUS_TORQUE ],
[Species.SANDSHREW]: [ Moves.DIRE_CLAW, Moves.CEASELESS_EDGE, Moves.SHORE_UP, Moves.PRECIPICE_BLADES ],
- [Species.NIDORAN_F]: [ Moves.SCALD, Moves.SHORE_UP, Moves.CALM_MIND, Moves.BANEFUL_BUNKER ],
- [Species.NIDORAN_M]: [ Moves.DARK_PULSE, Moves.SHORE_UP, Moves.CALM_MIND, Moves.KINGS_SHIELD ],
+ [Species.NIDORAN_F]: [ Moves.DIRE_CLAW, Moves.SHORE_UP, Moves.THOUSAND_WAVES, Moves.SALT_CURE ],
+ [Species.NIDORAN_M]: [ Moves.NOXIOUS_TORQUE, Moves.KINGS_SHIELD, Moves.NO_RETREAT, Moves.PRECIPICE_BLADES ],
[Species.VULPIX]: [ Moves.MOONBLAST, Moves.PSYCHIC, Moves.MORNING_SUN, Moves.TAIL_GLOW ],
[Species.ZUBAT]: [ Moves.FLOATY_FALL, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.BRAVE_BIRD ],
[Species.ODDISH]: [ Moves.SLUDGE_BOMB, Moves.FIERY_DANCE, Moves.STRENGTH_SAP, Moves.SPORE ],
@@ -28,24 +28,24 @@ export const speciesEggMoves = {
[Species.MANKEY]: [ Moves.DRAIN_PUNCH, Moves.RAGING_FURY, Moves.METEOR_MASH, Moves.NO_RETREAT ],
[Species.GROWLITHE]: [ Moves.ZING_ZAP, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ],
[Species.POLIWAG]: [ Moves.BOUNCY_BUBBLE, Moves.WILDBOLT_STORM, Moves.DRAIN_PUNCH, Moves.SURGING_STRIKES ],
- [Species.ABRA]: [ Moves.MOONBLAST, Moves.EARTH_POWER, Moves.THUNDERBOLT, Moves.LUSTER_PURGE ],
- [Species.MACHOP]: [ Moves.MACH_PUNCH, Moves.METEOR_MASH, Moves.FLYING_PRESS, Moves.FISSURE ],
- [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.WEATHER_BALL, Moves.FIRE_LASH, Moves.STRENGTH_SAP ],
+ [Species.ABRA]: [ Moves.MOONBLAST, Moves.FLAMETHROWER, Moves.THUNDERBOLT, Moves.PSYSTRIKE ],
+ [Species.MACHOP]: [ Moves.MACH_PUNCH, Moves.METEOR_MASH, Moves.ICE_HAMMER, Moves.FISSURE ],
+ [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.VICTORY_DANCE ],
[Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.STRENGTH_SAP, Moves.HAZE, Moves.MALIGNANT_CHAIN ],
[Species.GEODUDE]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.SHORE_UP, Moves.HEAD_SMASH ],
- [Species.PONYTA]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.MORNING_SUN, Moves.VOLT_TACKLE ],
+ [Species.PONYTA]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ],
[Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.PARTING_SHOT, Moves.COSMIC_POWER, Moves.LUMINA_CRASH ],
- [Species.MAGNEMITE]: [ Moves.RECOVER, Moves.BODY_PRESS, Moves.ICE_BEAM, Moves.THUNDERCLAP ],
+ [Species.MAGNEMITE]: [ Moves.PARABOLIC_CHARGE, Moves.BODY_PRESS, Moves.ICE_BEAM, Moves.THUNDERCLAP ],
[Species.FARFETCHD]: [ Moves.BATON_PASS, Moves.SACRED_SWORD, Moves.ROOST, Moves.VICTORY_DANCE ],
- [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.HEAD_CHARGE, Moves.BRAVE_BIRD, Moves.TRIPLE_ARROWS ],
+ [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.MULTI_ATTACK, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ],
[Species.SEEL]: [ Moves.FREEZE_DRY, Moves.CHILLY_RECEPTION, Moves.SLACK_OFF, Moves.BOUNCY_BUBBLE ],
[Species.GRIMER]: [ Moves.SHADOW_SNEAK, Moves.CURSE, Moves.STRENGTH_SAP, Moves.NOXIOUS_TORQUE ],
- [Species.SHELLDER]: [ Moves.BODY_PRESS, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.RECOVER ],
+ [Species.SHELLDER]: [ Moves.ROCK_BLAST, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.BONE_RUSH ],
[Species.GASTLY]: [ Moves.FROST_BREATH, Moves.AURA_SPHERE, Moves.NASTY_PLOT, Moves.MALIGNANT_CHAIN ],
[Species.ONIX]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.HEAD_SMASH, Moves.SPIN_OUT ],
[Species.DROWZEE]: [ Moves.DREAM_EATER, Moves.RECOVER, Moves.NIGHTMARE, Moves.SPORE ],
- [Species.KRABBY]: [ Moves.MOUNTAIN_GALE, Moves.LIQUIDATION, Moves.SHORE_UP, Moves.SHELL_SMASH ],
- [Species.VOLTORB]: [ Moves.BUZZY_BUZZ, Moves.VOLT_SWITCH, Moves.ENERGY_BALL, Moves.NASTY_PLOT ],
+ [Species.KRABBY]: [ Moves.ICICLE_CRASH, Moves.LIQUIDATION, Moves.IVY_CUDGEL, Moves.SHELL_SMASH ],
+ [Species.VOLTORB]: [ Moves.BUZZY_BUZZ, Moves.OVERHEAT, Moves.FROST_BREATH, Moves.TAIL_GLOW ],
[Species.EXEGGCUTE]: [ Moves.MYSTICAL_POWER, Moves.APPLE_ACID, Moves.TRICK_ROOM, Moves.FICKLE_BEAM ],
[Species.CUBONE]: [ Moves.HEAD_SMASH, Moves.WOOD_HAMMER, Moves.PAIN_SPLIT, Moves.VOLT_TACKLE ],
[Species.LICKITUNG]: [ Moves.BODY_SLAM, Moves.FIRE_LASH, Moves.GRAV_APPLE, Moves.MILK_DRINK ],
@@ -53,7 +53,7 @@ export const speciesEggMoves = {
[Species.RHYHORN]: [ Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.FLARE_BLITZ, Moves.HEAD_SMASH ],
[Species.TANGELA]: [ Moves.STRENGTH_SAP, Moves.INFESTATION, Moves.PARTING_SHOT, Moves.SAPPY_SEED ],
[Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.BREAKING_SWIPE, Moves.RETURN, Moves.SEISMIC_TOSS ],
- [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.NASTY_PLOT, Moves.HURRICANE, Moves.SPACIAL_REND ],
+ [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.HURRICANE, Moves.DRAGON_ENERGY ],
[Species.GOLDEEN]: [ Moves.DRILL_RUN, Moves.FLIP_TURN, Moves.DRAGON_DANCE, Moves.FISHIOUS_REND ],
[Species.STARYU]: [ Moves.CALM_MIND, Moves.BOUNCY_BUBBLE, Moves.MOONBLAST, Moves.MYSTICAL_POWER ],
[Species.SCYTHER]: [ Moves.GEAR_GRIND, Moves.BUG_BITE, Moves.STORM_THROW, Moves.MIGHTY_CLEAVE ],
@@ -62,13 +62,13 @@ 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.OMANYTE]: [ Moves.FREEZE_DRY, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STEAM_ERUPTION ],
[Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.DRILL_RUN, Moves.AQUA_CUTTER, Moves.MIGHTY_CLEAVE ],
[Species.AERODACTYL]: [ Moves.FLOATY_FALL, Moves.HEAD_SMASH, Moves.SWORDS_DANCE, Moves.MIGHTY_CLEAVE ],
[Species.ARTICUNO]: [ Moves.AURA_SPHERE, Moves.CALM_MIND, Moves.AURORA_VEIL, Moves.AEROBLAST ],
- [Species.ZAPDOS]: [ Moves.WEATHER_BALL, Moves.CALM_MIND, Moves.SPIKY_SHIELD, Moves.ELECTRO_SHOT ],
+ [Species.ZAPDOS]: [ Moves.WEATHER_BALL, Moves.CALM_MIND, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ],
[Species.MOLTRES]: [ Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.BURNING_BULWARK, Moves.TORCH_SONG ],
[Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.METEOR_MASH, Moves.FIRE_LASH, Moves.FLOATY_FALL ],
[Species.MEWTWO]: [ Moves.METEOR_MASH, Moves.MOONBLAST, Moves.PLASMA_FISTS, Moves.PHOTON_GEYSER ],
@@ -81,12 +81,12 @@ 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 ],
[Species.NATU]: [ Moves.AEROBLAST, Moves.ROOST, Moves.CALM_MIND, Moves.LUMINA_CRASH ],
- [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.MILK_DRINK, Moves.DRAGON_ENERGY, Moves.TAIL_GLOW ],
+ [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.DRAGON_ENERGY, Moves.TAIL_GLOW ],
[Species.HOPPIP]: [ Moves.AIR_SLASH, Moves.STRENGTH_SAP, Moves.QUIVER_DANCE, Moves.SEED_FLARE ],
[Species.AIPOM]: [ Moves.TIDY_UP, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.POPULATION_BOMB ],
[Species.SUNKERN]: [ Moves.SPORE, Moves.SAPPY_SEED, Moves.FIERY_DANCE, Moves.HYDRO_STEAM ],
@@ -115,7 +115,7 @@ export const speciesEggMoves = {
[Species.PHANPY]: [ Moves.SHORE_UP, Moves.HEAD_SMASH, Moves.MOUNTAIN_GALE, Moves.VOLT_TACKLE ],
[Species.STANTLER]: [ Moves.HORN_LEECH, Moves.HIGH_JUMP_KICK, Moves.BULK_UP, Moves.HEAD_CHARGE ],
[Species.SMEARGLE]: [ Moves.BATON_PASS, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.SPORE ],
- [Species.TYROGUE]: [ Moves.MACH_PUNCH, Moves.WICKED_TORQUE, Moves.METEOR_MASH, Moves.COLLISION_COURSE ],
+ [Species.TYROGUE]: [ Moves.VICTORY_DANCE, Moves.WICKED_TORQUE, Moves.METEOR_MASH, Moves.COLLISION_COURSE ],
[Species.SMOOCHUM]: [ Moves.EXPANDING_FORCE, Moves.AURA_SPHERE, Moves.FREEZY_FROST, Moves.TAKE_HEART ],
[Species.ELEKID]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.ICE_HAMMER, Moves.PLASMA_FISTS ],
[Species.MAGBY]: [ Moves.STORED_POWER, Moves.EARTH_POWER, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ],
@@ -124,31 +124,31 @@ export const speciesEggMoves = {
[Species.ENTEI]: [ Moves.BURNING_BULWARK, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.MIGHTY_CLEAVE ],
[Species.SUICUNE]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE ],
[Species.LARVITAR]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.MIGHTY_CLEAVE, Moves.SHORE_UP ],
- [Species.LUGIA]: [ Moves.COSMIC_POWER, Moves.STORED_POWER, Moves.SCALD, Moves.OBLIVION_WING ],
+ [Species.LUGIA]: [ Moves.TAKE_HEART, Moves.STORED_POWER, Moves.SCALD, Moves.OBLIVION_WING ],
[Species.HO_OH]: [ Moves.BURNING_BULWARK, Moves.U_TURN, Moves.BRAVE_BIRD, Moves.REVIVAL_BLESSING ],
[Species.CELEBI]: [ Moves.MYSTICAL_POWER, Moves.STORED_POWER, Moves.COSMIC_POWER, Moves.SEED_FLARE ],
[Species.TREECKO]: [ Moves.DRAGON_PULSE, Moves.DRAGON_ENERGY, Moves.SECRET_SWORD, Moves.SEED_FLARE ],
- [Species.TORCHIC]: [ Moves.THUNDEROUS_KICK, Moves.POWER_UP_PUNCH, Moves.KNOCK_OFF, Moves.SACRED_FIRE ],
- [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.ICICLE_CRASH, Moves.BULK_UP, Moves.WAVE_CRASH ],
+ [Species.TORCHIC]: [ Moves.HIGH_JUMP_KICK, Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.V_CREATE ],
+ [Species.MUDKIP]: [ Moves.SHORE_UP, Moves.ICICLE_CRASH, Moves.BULK_UP, Moves.SURGING_STRIKES ],
[Species.POOCHYENA]: [ Moves.JAW_LOCK, Moves.PSYCHIC_FANGS, Moves.POISON_FANG, Moves.NO_RETREAT ],
[Species.ZIGZAGOON]: [ Moves.EXTREME_SPEED, Moves.ENDURE, Moves.HIGH_HORSEPOWER, Moves.TIDY_UP ],
[Species.WURMPLE]: [ Moves.BATON_PASS, Moves.BLEAKWIND_STORM, Moves.STICKY_WEB, Moves.MALIGNANT_CHAIN ],
[Species.LOTAD]: [ Moves.REVELATION_DANCE, Moves.APPLE_ACID, Moves.ICE_BEAM, Moves.QUIVER_DANCE ],
[Species.SEEDOT]: [ Moves.SWORDS_DANCE, Moves.GRASSY_GLIDE, Moves.KOWTOW_CLEAVE, Moves.IVY_CUDGEL ],
- [Species.TAILLOW]: [ Moves.BOOMBURST, Moves.FACADE, Moves.DRILL_RUN, Moves.VOLT_TACKLE ],
+ [Species.TAILLOW]: [ Moves.SWORDS_DANCE, Moves.FACADE, Moves.DRILL_RUN, Moves.EXTREME_SPEED ],
[Species.WINGULL]: [ Moves.THUNDER, Moves.FLIP_TURN, Moves.DEFOG, Moves.STEAM_ERUPTION ],
- [Species.RALTS]: [ Moves.BOOMBURST, Moves.BITTER_BLADE, Moves.PSYBLADE, Moves.VICTORY_DANCE ],
+ [Species.RALTS]: [ Moves.BOOMBURST, Moves.BITTER_BLADE, Moves.QUIVER_DANCE, Moves.VICTORY_DANCE ],
[Species.SURSKIT]: [ Moves.ROOST, Moves.FIERY_DANCE, Moves.STICKY_WEB, Moves.BLEAKWIND_STORM ],
[Species.SHROOMISH]: [ Moves.ACCELEROCK, Moves.TRAILBLAZE, Moves.STORM_THROW, Moves.SAPPY_SEED ],
[Species.SLAKOTH]: [ Moves.FACADE, Moves.JUMP_KICK, Moves.KNOCK_OFF, Moves.SKILL_SWAP ],
- [Species.NINCADA]: [ Moves.ATTACK_ORDER, Moves.STICKY_WEB, Moves.POLTERGEIST, Moves.SHELL_SMASH ],
- [Species.WHISMUR]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ],
+ [Species.NINCADA]: [ Moves.ATTACK_ORDER, Moves.STICKY_WEB, Moves.SPIRIT_SHACKLE, Moves.SHELL_SMASH ],
+ [Species.WHISMUR]: [ Moves.ALLURING_VOICE, Moves.TRICK_ROOM, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ],
[Species.MAKUHITA]: [ Moves.STORM_THROW, Moves.SLACK_OFF, Moves.HEAT_CRASH, Moves.DOUBLE_IRON_BASH ],
- [Species.AZURILL]: [ Moves.SLACK_OFF, Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.WAVE_CRASH ],
+ [Species.AZURILL]: [ Moves.JET_PUNCH, Moves.SPIRIT_BREAK, Moves.SWORDS_DANCE, Moves.SURGING_STRIKES ],
[Species.NOSEPASS]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.CALM_MIND, Moves.TACHYON_CUTTER ],
[Species.SKITTY]: [ Moves.THUNDEROUS_KICK, Moves.SKETCH, Moves.TIDY_UP, Moves.V_CREATE ],
[Species.SABLEYE]: [ Moves.RECOVER, Moves.TOPSY_TURVY, Moves.PARTING_SHOT, Moves.SALT_CURE ],
- [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.RECOVER, Moves.EARTHQUAKE, Moves.DOUBLE_IRON_BASH ],
+ [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.MAGICAL_TORQUE, Moves.EARTHQUAKE, Moves.DOUBLE_IRON_BASH ],
[Species.ARON]: [ Moves.HEAD_SMASH, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ],
[Species.MEDITITE]: [ Moves.THUNDEROUS_KICK, Moves.SUCKER_PUNCH, Moves.BULLET_PUNCH, Moves.PHOTON_GEYSER ],
[Species.ELECTRIKE]: [ Moves.RISING_VOLTAGE, Moves.FLAMETHROWER, Moves.NASTY_PLOT, Moves.ICE_BEAM ],
@@ -162,40 +162,40 @@ export const speciesEggMoves = {
[Species.NUMEL]: [ Moves.SANDSEAR_STORM, Moves.SPIKES, Moves.SHORE_UP, Moves.SEARING_SHOT ],
[Species.TORKOAL]: [ Moves.SLACK_OFF, Moves.SPIKES, Moves.BODY_PRESS, Moves.BURNING_BULWARK ],
[Species.SPOINK]: [ Moves.AURA_SPHERE, Moves.MILK_DRINK, Moves.COSMIC_POWER, Moves.EXPANDING_FORCE ],
- [Species.SPINDA]: [ Moves.SUPERPOWER, Moves.RECOVER, Moves.FLEUR_CANNON, Moves.V_CREATE ],
+ [Species.SPINDA]: [ Moves.SUPERPOWER, Moves.SLACK_OFF, Moves.FLEUR_CANNON, Moves.V_CREATE ],
[Species.TRAPINCH]: [ Moves.FIRE_LASH, Moves.DRAGON_DARTS, Moves.THOUSAND_ARROWS, Moves.DRAGON_ENERGY ],
- [Species.CACNEA]: [ Moves.SCORCHING_SANDS, Moves.CEASELESS_EDGE, Moves.NIGHT_DAZE, Moves.SAPPY_SEED ],
+ [Species.CACNEA]: [ Moves.EARTH_POWER, Moves.CEASELESS_EDGE, Moves.NIGHT_DAZE, Moves.IVY_CUDGEL ],
[Species.SWABLU]: [ Moves.ROOST, Moves.NASTY_PLOT, Moves.FLOATY_FALL, Moves.BOOMBURST ],
[Species.ZANGOOSE]: [ Moves.FACADE, Moves.HIGH_HORSEPOWER, Moves.EXTREME_SPEED, Moves.TIDY_UP ],
[Species.SEVIPER]: [ Moves.DIRE_CLAW, Moves.NASTY_PLOT, Moves.SUCKER_PUNCH, Moves.SHED_TAIL ],
[Species.LUNATONE]: [ Moves.POWER_GEM, Moves.NIGHT_DAZE, Moves.STORED_POWER, Moves.LUMINA_CRASH ],
[Species.SOLROCK]: [ Moves.PSYSHIELD_BASH, Moves.MIGHTY_CLEAVE, Moves.POWER_TRIP, Moves.SACRED_FIRE ],
[Species.BARBOACH]: [ Moves.DRAGON_DANCE, Moves.SUPERCELL_SLAM, Moves.ICE_SPINNER, Moves.WAVE_CRASH ],
- [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.AQUA_JET, Moves.WAVE_CRASH, Moves.SHELL_SMASH ],
+ [Species.CORPHISH]: [ Moves.CEASELESS_EDGE, Moves.JET_PUNCH, Moves.WAVE_CRASH, Moves.SHELL_SMASH ],
[Species.BALTOY]: [ Moves.RECOVER, Moves.STORED_POWER, Moves.BODY_PRESS, Moves.MYSTICAL_POWER ],
- [Species.LILEEP]: [ Moves.METEOR_BEAM, Moves.SCALD, Moves.STEALTH_ROCK, Moves.SAPPY_SEED ],
+ [Species.LILEEP]: [ Moves.POWER_GEM, Moves.SCALD, Moves.STONE_AXE, Moves.SAPPY_SEED ],
[Species.ANORITH]: [ Moves.LIQUIDATION, Moves.LEECH_LIFE, Moves.DRAGON_DANCE, Moves.MIGHTY_CLEAVE ],
[Species.FEEBAS]: [ Moves.CALM_MIND, Moves.FREEZE_DRY, Moves.MOONBLAST, Moves.STEAM_ERUPTION ],
[Species.CASTFORM]: [ Moves.BOOMBURST, Moves.HYDRO_STEAM, Moves.CLEAR_SMOG, Moves.QUIVER_DANCE ],
[Species.KECLEON]: [ Moves.DRAIN_PUNCH, Moves.DRAGON_DANCE, Moves.EXTREME_SPEED, Moves.MULTI_ATTACK ],
- [Species.SHUPPET]: [ Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ],
- [Species.DUSKULL]: [ Moves.BULK_UP, Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.RAGE_FIST ],
+ [Species.SHUPPET]: [ Moves.DRAIN_PUNCH, Moves.TOPSY_TURVY, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ],
+ [Species.DUSKULL]: [ Moves.BULK_UP, Moves.DRAIN_PUNCH, Moves.STRENGTH_SAP, Moves.RAGE_FIST ],
[Species.TROPIUS]: [ Moves.STUFF_CHEEKS, Moves.EARTH_POWER, Moves.APPLE_ACID, Moves.SAPPY_SEED ],
[Species.ABSOL]: [ Moves.KOWTOW_CLEAVE, Moves.SACRED_SWORD, Moves.DIRE_CLAW, Moves.BITTER_BLADE ],
- [Species.WYNAUT]: [ Moves.RECOVER, Moves.COSMIC_POWER, Moves.TAUNT, Moves.SHED_TAIL ],
- [Species.SNORUNT]: [ Moves.AURORA_VEIL, Moves.HEAD_CHARGE, Moves.POLTERGEIST, Moves.FREEZY_FROST ],
+ [Species.WYNAUT]: [ Moves.RECOVER, Moves.PERISH_SONG, Moves.TAUNT, Moves.SHED_TAIL ],
+ [Species.SNORUNT]: [ Moves.AURORA_VEIL, Moves.HYPER_VOICE, Moves.EARTH_POWER, Moves.NO_RETREAT ],
[Species.SPHEAL]: [ Moves.FLIP_TURN, Moves.FREEZE_DRY, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ],
[Species.CLAMPERL]: [ Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.EARTH_POWER, Moves.ORIGIN_PULSE ],
[Species.RELICANTH]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.FISHIOUS_REND ],
[Species.LUVDISC]: [ Moves.BATON_PASS, Moves.THIEF, Moves.BOUNCY_BUBBLE, Moves.TAKE_HEART ],
- [Species.BAGON]: [ Moves.IRON_HEAD, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH ],
+ [Species.BAGON]: [ Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH ],
[Species.BELDUM]: [ Moves.PSYCHIC_FANGS, Moves.RECOVER, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR ],
[Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.RECOVER, Moves.SALT_CURE ],
[Species.REGICE]: [ Moves.EARTH_POWER, Moves.COSMIC_POWER, Moves.RECOVER, Moves.FREEZE_DRY ],
[Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.HEAT_CRASH, Moves.RECOVER, Moves.GIGATON_HAMMER ],
[Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY, Moves.QUIVER_DANCE ],
[Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY, Moves.QUIVER_DANCE ],
- [Species.KYOGRE]: [ Moves.BOUNCY_BUBBLE, Moves.HURRICANE, Moves.THUNDER, Moves.RECOVER ],
+ [Species.KYOGRE]: [ Moves.BOUNCY_BUBBLE, Moves.HURRICANE, Moves.THUNDER, Moves.TAIL_GLOW ],
[Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ],
[Species.RAYQUAZA]: [ Moves.OBLIVION_WING, Moves.DRAGON_DARTS, Moves.DRAGON_ENERGY, Moves.V_CREATE ],
[Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.FLOATY_FALL, Moves.ROCK_SLIDE, Moves.SHIFT_GEAR ],
@@ -215,7 +215,7 @@ export const speciesEggMoves = {
[Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.SIZZLY_SLIDE, Moves.U_TURN, Moves.ZIPPY_ZAP ],
[Species.BUIZEL]: [ Moves.JET_PUNCH, Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.SURGING_STRIKES ],
[Species.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.FLOWER_TRICK ],
- [Species.SHELLOS]: [ Moves.STRENGTH_SAP, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
+ [Species.SHELLOS]: [ Moves.BOUNCY_BUBBLE, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
[Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.HEAT_WAVE, Moves.CALM_MIND, Moves.OBLIVION_WING ],
[Species.BUNEARY]: [ Moves.TRIPLE_AXEL, Moves.SWORDS_DANCE, Moves.THUNDEROUS_KICK, Moves.MULTI_ATTACK ],
[Species.GLAMEOW]: [ Moves.U_TURN, Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.EXTREME_SPEED ],
@@ -226,7 +226,7 @@ export const speciesEggMoves = {
[Species.MIME_JR]: [ Moves.CALM_MIND, Moves.MOONBLAST, Moves.WILL_O_WISP, Moves.LUMINA_CRASH ],
[Species.HAPPINY]: [ Moves.COTTON_GUARD, Moves.SEISMIC_TOSS, Moves.SIZZLY_SLIDE, Moves.REVIVAL_BLESSING ],
[Species.CHATOT]: [ Moves.SPARKLING_ARIA, Moves.TORCH_SONG, Moves.BATON_PASS, Moves.BOOMBURST ],
- [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.RECOVER, Moves.SPECTRAL_THIEF ],
+ [Species.SPIRITOMB]: [ Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.STRENGTH_SAP, Moves.SPECTRAL_THIEF ],
[Species.GIBLE]: [ Moves.DRAGON_DANCE, Moves.THOUSAND_WAVES, Moves.SHORE_UP, Moves.BITTER_BLADE ],
[Species.MUNCHLAX]: [ Moves.CURSE, Moves.BODY_PRESS, Moves.KNOCK_OFF, Moves.SLACK_OFF ],
[Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.BULLET_PUNCH, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ],
@@ -237,18 +237,18 @@ export const speciesEggMoves = {
[Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ],
[Species.MANTYKE]: [ Moves.BOUNCY_BUBBLE, Moves.SPIKES, Moves.ROOST, Moves.STEAM_ERUPTION ],
[Species.SNOVER]: [ Moves.HIGH_HORSEPOWER, Moves.STRENGTH_SAP, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ],
- [Species.ROTOM]: [ Moves.RECOVER, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.RISING_VOLTAGE ],
+ [Species.ROTOM]: [ Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.RISING_VOLTAGE ],
[Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.LUMINA_CRASH ],
[Species.MESPRIT]: [ Moves.QUIVER_DANCE, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ],
- [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.DRAGON_DANCE, Moves.RECOVER, Moves.LUMINA_CRASH ],
+ [Species.AZELF]: [ Moves.PHOTON_GEYSER, Moves.ICE_BEAM, Moves.MOONBLAST, Moves.LUMINA_CRASH ],
[Species.DIALGA]: [ Moves.CORE_ENFORCER, Moves.TAKE_HEART, Moves.RECOVER, Moves.MAKE_IT_RAIN ],
[Species.PALKIA]: [ Moves.RECOVER, Moves.TAKE_HEART, Moves.WATER_SPOUT, Moves.DRAGON_ENERGY ],
[Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.RECOVER, Moves.FLASH_CANNON, Moves.MATCHA_GOTCHA ],
[Species.REGIGIGAS]: [ Moves.SKILL_SWAP, Moves.SHORE_UP, Moves.EXTREME_SPEED, Moves.GIGATON_HAMMER ],
- [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.ASTRAL_BARRAGE ],
+ [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.SPECTRAL_THIEF ],
[Species.CRESSELIA]: [ Moves.COSMIC_POWER, Moves.SECRET_SWORD, Moves.SIZZLY_SLIDE, Moves.LUMINA_CRASH ],
- [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ],
- [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.RECOVER, Moves.QUIVER_DANCE ],
+ [Species.PHIONE]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.SPLISHY_SPLASH, Moves.QUIVER_DANCE ],
+ [Species.MANAPHY]: [ Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.SPLISHY_SPLASH, Moves.QUIVER_DANCE ],
[Species.DARKRAI]: [ Moves.FIERY_WRATH, Moves.MOONBLAST, Moves.SEARING_SHOT, Moves.SPORE ],
[Species.SHAYMIN]: [ Moves.SPRINGTIDE_STORM, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM, Moves.MATCHA_GOTCHA ],
[Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.COLLISION_COURSE, Moves.VICTORY_DANCE, Moves.SPECTRAL_THIEF ],
@@ -303,7 +303,7 @@ export const speciesEggMoves = {
[Species.JOLTIK]: [ Moves.THUNDER, Moves.PARABOLIC_CHARGE, Moves.EARTH_POWER, Moves.QUIVER_DANCE ],
[Species.FERROSEED]: [ Moves.STRENGTH_SAP, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ],
[Species.KLINK]: [ Moves.FLARE_BLITZ, Moves.HIGH_HORSEPOWER, Moves.FUSION_BOLT, Moves.DOUBLE_IRON_BASH ],
- [Species.TYNAMO]: [ Moves.SCALD, Moves.RECOVER, Moves.FIRE_LASH, Moves.PLASMA_FISTS ],
+ [Species.TYNAMO]: [ Moves.SCALD, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.PLASMA_FISTS ],
[Species.ELGYEM]: [ Moves.MYSTICAL_POWER, Moves.TRICK_ROOM, Moves.STORED_POWER, Moves.LUMINA_CRASH ],
[Species.LITWICK]: [ Moves.FIERY_DANCE, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE ],
[Species.AXEW]: [ Moves.STONE_AXE, Moves.DIRE_CLAW, Moves.FIRE_LASH, Moves.GLAIVE_RUSH ],
@@ -313,7 +313,7 @@ export const speciesEggMoves = {
[Species.STUNFISK]: [ Moves.SHORE_UP, Moves.BANEFUL_BUNKER, Moves.THUNDER_CAGE, Moves.THUNDERCLAP ],
[Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.MOUNTAIN_GALE ],
[Species.DRUDDIGON]: [ Moves.GLARE, Moves.ROOST, Moves.DRAGON_HAMMER, Moves.FIRE_LASH ],
- [Species.GOLETT]: [ Moves.BULK_UP, Moves.RECOVER, Moves.HEADLONG_RUSH, Moves.RAGE_FIST ],
+ [Species.GOLETT]: [ Moves.SHIFT_GEAR, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.RAGE_FIST ],
[Species.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.LAST_RESPECTS ],
[Species.BOUFFALANT]: [ Moves.SLACK_OFF, Moves.JUMP_KICK, Moves.HEAD_SMASH, Moves.FLARE_BLITZ ],
[Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.MOONBLAST, Moves.HEAT_WAVE, Moves.BOLT_BEAK ],
@@ -328,14 +328,14 @@ export const speciesEggMoves = {
[Species.TORNADUS]: [ Moves.EARTH_POWER, Moves.U_TURN, Moves.ICE_BEAM, Moves.OBLIVION_WING ],
[Species.THUNDURUS]: [ Moves.EARTH_POWER, Moves.HURRICANE, Moves.THUNDERCLAP, Moves.ELECTRO_SHOT ],
[Species.RESHIRAM]: [ Moves.ROOST, Moves.TAKE_HEART, Moves.ERUPTION, Moves.DRAGON_ENERGY ],
- [Species.ZEKROM]: [ Moves.ROOST, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.BOLT_BEAK ],
+ [Species.ZEKROM]: [ Moves.DRAGON_DANCE, Moves.THUNDEROUS_KICK, Moves.DRAGON_HAMMER, Moves.BOLT_BEAK ],
[Species.LANDORUS]: [ Moves.STONE_AXE, Moves.THOUSAND_ARROWS, Moves.ROOST, Moves.FLOATY_FALL ],
[Species.KYUREM]: [ Moves.ICICLE_CRASH, Moves.DRAGON_ENERGY, Moves.NASTY_PLOT, Moves.GLACIAL_LANCE ],
[Species.KELDEO]: [ Moves.BOUNCY_BUBBLE, Moves.THUNDERBOLT, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ],
[Species.MELOETTA]: [ Moves.TORCH_SONG, Moves.QUIVER_DANCE, Moves.THUNDEROUS_KICK, Moves.BOOMBURST ],
[Species.GENESECT]: [ Moves.EXTREME_SPEED, Moves.U_TURN, Moves.SHIFT_GEAR, Moves.TAIL_GLOW ],
[Species.CHESPIN]: [ Moves.DRAIN_PUNCH, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ],
- [Species.FENNEKIN]: [ Moves.BITTER_MALICE, Moves.MOONBLAST, Moves.THUNDERBOLT, Moves.TORCH_SONG ],
+ [Species.FENNEKIN]: [ Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.THUNDERBOLT, Moves.TORCH_SONG ],
[Species.FROAKIE]: [ Moves.MOONBLAST, Moves.EARTH_POWER, Moves.TRIPLE_AXEL, Moves.SURGING_STRIKES ],
[Species.BUNNELBY]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.FACADE, Moves.EXTREME_SPEED ],
[Species.FLETCHLING]: [ Moves.DRILL_RUN, Moves.U_TURN, Moves.SUPERCELL_SLAM, Moves.TIDY_UP ],
@@ -346,14 +346,14 @@ export const speciesEggMoves = {
[Species.PANCHAM]: [ Moves.DRAIN_PUNCH, Moves.FAKE_OUT, Moves.BULLET_PUNCH, Moves.WICKED_BLOW ],
[Species.FURFROU]: [ Moves.TIDY_UP, Moves.CRUNCH, Moves.COVET, Moves.MULTI_ATTACK ],
[Species.ESPURR]: [ Moves.GLARE, Moves.MOONBLAST, Moves.FLAMETHROWER, Moves.PSYSTRIKE ],
- [Species.HONEDGE]: [ Moves.TACHYON_CUTTER, Moves.POLTERGEIST, Moves.BITTER_BLADE, Moves.PAIN_SPLIT ],
+ [Species.HONEDGE]: [ Moves.TACHYON_CUTTER, Moves.POLTERGEIST, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ],
[Species.SPRITZEE]: [ Moves.TRICK_ROOM, Moves.FOUL_PLAY, Moves.WISH, Moves.REVIVAL_BLESSING ],
[Species.SWIRLIX]: [ Moves.BELLY_DRUM, Moves.SUCKER_PUNCH, Moves.SPIRIT_BREAK, Moves.SIZZLY_SLIDE ],
[Species.INKAY]: [ Moves.POWER_TRIP, Moves.STORED_POWER, Moves.RECOVER, Moves.PSYCHO_BOOST ],
- [Species.BINACLE]: [ Moves.ICE_SPINNER, Moves.ACCELEROCK, Moves.BULK_UP, Moves.MIGHTY_CLEAVE ],
+ [Species.BINACLE]: [ Moves.TRIPLE_AXEL, Moves.ACCELEROCK, Moves.DIRE_CLAW, Moves.MIGHTY_CLEAVE ],
[Species.SKRELP]: [ Moves.RECOVER, Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.MALIGNANT_CHAIN ],
[Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.TERRAIN_PULSE, Moves.ORIGIN_PULSE ],
- [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.NASTY_PLOT, Moves.SHORE_UP, Moves.CLANGOROUS_SOUL ],
+ [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.BOOMBURST, Moves.EARTH_POWER, Moves.TAIL_GLOW ],
[Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.AXE_KICK ],
[Species.AMAURA]: [ Moves.RECOVER, Moves.AURORA_VEIL, Moves.POWER_GEM, Moves.GEOMANCY ],
[Species.HAWLUCHA]: [ Moves.DARKEST_LARIAT, Moves.HIGH_HORSEPOWER, Moves.SUPERCELL_SLAM, Moves.BRAVE_BIRD ],
@@ -361,13 +361,13 @@ export const speciesEggMoves = {
[Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ],
[Species.GOOMY]: [ Moves.SCALD, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ],
[Species.KLEFKI]: [ Moves.COURT_CHANGE, Moves.ENCORE, Moves.TAUNT, Moves.TOPSY_TURVY ],
- [Species.PHANTUMP]: [ Moves.POLTERGEIST, Moves.TRICK_ROOM, Moves.SYNTHESIS, Moves.SAPPY_SEED ],
- [Species.PUMPKABOO]: [ Moves.POLTERGEIST, Moves.FIRE_LASH, Moves.DIRE_CLAW, Moves.SAPPY_SEED ],
+ [Species.PHANTUMP]: [ Moves.SPIRIT_SHACKLE, Moves.TRICK_ROOM, Moves.SYNTHESIS, Moves.SAPPY_SEED ],
+ [Species.PUMPKABOO]: [ Moves.SPIRIT_SHACKLE, Moves.FIRE_LASH, Moves.DIRE_CLAW, Moves.SAPPY_SEED ],
[Species.BERGMITE]: [ Moves.STONE_AXE, Moves.METAL_BURST, Moves.BODY_PRESS, Moves.GLACIAL_LANCE ],
[Species.NOIBAT]: [ Moves.AEROBLAST, Moves.OVERDRIVE, Moves.NASTY_PLOT, Moves.CLANGING_SCALES ],
[Species.XERNEAS]: [ Moves.LIGHT_OF_RUIN, Moves.LUMINA_CRASH, Moves.STRENGTH_SAP, Moves.REVIVAL_BLESSING ],
- [Species.YVELTAL]: [ Moves.IRON_HEAD, Moves.FLOATY_FALL, Moves.NASTY_PLOT, Moves.WICKED_BLOW ],
- [Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.SHORE_UP, Moves.VICTORY_DANCE, Moves.DOUBLE_IRON_BASH ],
+ [Species.YVELTAL]: [ Moves.SLUDGE_WAVE, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ],
+ [Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.HEAL_ORDER, Moves.VICTORY_DANCE, Moves.DOUBLE_IRON_BASH ],
[Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.GEOMANCY ],
[Species.HOOPA]: [ Moves.PHOTON_GEYSER, Moves.EARTH_POWER, Moves.BATON_PASS, Moves.TIDY_UP ],
[Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.ENERGY_BALL, Moves.SEARING_SHOT ],
@@ -400,38 +400,38 @@ export const speciesEggMoves = {
[Species.MINIOR]: [ Moves.EARTH_POWER, Moves.FLOATY_FALL, Moves.ZING_ZAP, Moves.DIAMOND_STORM ],
[Species.KOMALA]: [ Moves.SLACK_OFF, Moves.EXTREME_SPEED, Moves.KNOCK_OFF, Moves.CLOSE_COMBAT ],
[Species.TURTONATOR]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.EARTH_POWER, Moves.CLANGING_SCALES ],
- [Species.TOGEDEMARU]: [ Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.METEOR_MASH, Moves.BEHEMOTH_BASH ],
- [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.NUZZLE, Moves.PARTING_SHOT, Moves.SPECTRAL_THIEF ],
+ [Species.TOGEDEMARU]: [ Moves.FAKE_OUT, Moves.METAL_BURST, Moves.METEOR_MASH, Moves.BOLT_STRIKE ],
+ [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.SIZZLY_SLIDE, Moves.SPECTRAL_THIEF ],
[Species.BRUXISH]: [ Moves.ICE_FANG, Moves.FIRE_FANG, Moves.FLIP_TURN, Moves.FILLET_AWAY ],
[Species.DRAMPA]: [ Moves.SLACK_OFF, Moves.FLAMETHROWER, Moves.CLANGING_SCALES, Moves.CLANGOROUS_SOUL ],
[Species.DHELMISE]: [ Moves.POLTERGEIST, Moves.STRENGTH_SAP, Moves.LEAF_BLADE, Moves.DOUBLE_IRON_BASH ],
- [Species.JANGMO_O]: [ Moves.ICE_BEAM, Moves.RECOVER, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ],
+ [Species.JANGMO_O]: [ Moves.ICE_BEAM, Moves.DRAIN_PUNCH, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ],
[Species.TAPU_KOKO]: [ Moves.PLAY_ROUGH, Moves.MOUNTAIN_GALE, Moves.RISING_VOLTAGE, Moves.BOLT_BEAK ],
[Species.TAPU_LELE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.HEAT_WAVE, Moves.EXPANDING_FORCE ],
[Species.TAPU_BULU]: [ Moves.GRASSY_GLIDE, Moves.CLOSE_COMBAT, Moves.PLAY_ROUGH, Moves.VICTORY_DANCE ],
[Species.TAPU_FINI]: [ Moves.AURA_SPHERE, Moves.EARTH_POWER, Moves.RECOVER, Moves.QUIVER_DANCE ],
[Species.COSMOG]: [ Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.STORED_POWER, Moves.PHOTON_GEYSER ],
- [Species.NIHILEGO]: [ Moves.RECOVER, Moves.QUIVER_DANCE, Moves.GIGA_DRAIN, Moves.MALIGNANT_CHAIN ],
+ [Species.NIHILEGO]: [ Moves.RECOVER, Moves.QUIVER_DANCE, Moves.ENERGY_BALL, Moves.MALIGNANT_CHAIN ],
[Species.BUZZWOLE]: [ Moves.LEECH_LIFE, Moves.BULLET_PUNCH, Moves.DARKEST_LARIAT, Moves.COLLISION_COURSE ],
[Species.PHEROMOSA]: [ Moves.AURA_SPHERE, Moves.MAKE_IT_RAIN, Moves.ATTACK_ORDER, Moves.COLLISION_COURSE ],
[Species.XURKITREE]: [ Moves.OVERHEAT, Moves.GIGA_DRAIN, Moves.TAIL_GLOW, Moves.THUNDERCLAP ],
[Species.CELESTEELA]: [ Moves.ROOST, Moves.BUZZY_BUZZ, Moves.SPIKES, Moves.OBLIVION_WING ],
[Species.KARTANA]: [ Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ],
- [Species.GUZZLORD]: [ Moves.DIRE_CLAW, Moves.GLAIVE_RUSH, Moves.SLACK_OFF, Moves.BADDY_BAD ],
+ [Species.GUZZLORD]: [ Moves.SUCKER_PUNCH, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.RUINATION ],
[Species.NECROZMA]: [ Moves.COSMIC_POWER, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE, Moves.CLANGOROUS_SOUL ],
- [Species.MAGEARNA]: [ Moves.RECOVER, Moves.EARTH_POWER, Moves.COSMIC_POWER, Moves.MAKE_IT_RAIN ],
+ [Species.MAGEARNA]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.COSMIC_POWER, Moves.MAKE_IT_RAIN ],
[Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.TRIPLE_AXEL, Moves.STORM_THROW, Moves.DOUBLE_IRON_BASH ],
[Species.POIPOLE]: [ Moves.SLUDGE_BOMB, Moves.BUG_BUZZ, Moves.SEARING_SHOT, Moves.DRAGON_ENERGY ],
[Species.STAKATAKA]: [ Moves.HEAVY_SLAM, Moves.SHORE_UP, Moves.CURSE, Moves.SALT_CURE ],
[Species.BLACEPHALON]: [ Moves.NASTY_PLOT, Moves.SEARING_SHOT, Moves.GIGA_DRAIN, Moves.ASTRAL_BARRAGE ],
[Species.ZERAORA]: [ Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE, Moves.PYRO_BALL ],
- [Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.RECOVER ],
+ [Species.MELTAN]: [ Moves.BULLET_PUNCH, Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS ],
[Species.GROOKEY]: [ Moves.HEADLONG_RUSH, Moves.CLOSE_COMBAT, Moves.GRASSY_GLIDE, Moves.CLANGOROUS_SOUL ],
[Species.SCORBUNNY]: [ Moves.EXTREME_SPEED, Moves.TROP_KICK, Moves.TRIPLE_AXEL, Moves.THUNDEROUS_KICK ],
[Species.SOBBLE]: [ Moves.AEROBLAST, Moves.FROST_BREATH, Moves.SEARING_SHOT, Moves.SURGING_STRIKES ],
[Species.SKWOVET]: [ Moves.KNOCK_OFF, Moves.GRAV_APPLE, Moves.BODY_PRESS, Moves.SLACK_OFF ],
[Species.ROOKIDEE]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.IRON_HEAD, Moves.KINGS_SHIELD ],
- [Species.BLIPBUG]: [ Moves.RECOVER, Moves.FREEZING_GLARE, Moves.SPORE, Moves.TAIL_GLOW ],
+ [Species.BLIPBUG]: [ Moves.HEAL_ORDER, Moves.EXPANDING_FORCE, Moves.SPORE, Moves.TAIL_GLOW ],
[Species.NICKIT]: [ Moves.BADDY_BAD, Moves.BURNING_JEALOUSY, Moves.SPARKLY_SWIRL, Moves.FIERY_WRATH ],
[Species.GOSSIFLEUR]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.PARTING_SHOT, Moves.SEED_FLARE ],
[Species.WOOLOO]: [ Moves.PSYSHIELD_BASH, Moves.HEAD_CHARGE, Moves.BODY_PRESS, Moves.MILK_DRINK ],
@@ -440,7 +440,7 @@ export const speciesEggMoves = {
[Species.ROLYCOLY]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.WORK_UP, Moves.DIAMOND_STORM ],
[Species.APPLIN]: [ Moves.DRAGON_CHEER, Moves.PARTING_SHOT, Moves.FLOWER_TRICK, Moves.STRENGTH_SAP ],
[Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.STONE_EDGE, Moves.PRECIPICE_BLADES ],
- [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.SCORCHING_SANDS, Moves.ROOST ],
+ [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.SCORCHING_SANDS, Moves.OBLIVION_WING ],
[Species.ARROKUDA]: [ Moves.THUNDER_FANG, Moves.KNOCK_OFF, Moves.ICE_FANG, Moves.FILLET_AWAY ],
[Species.TOXEL]: [ Moves.NASTY_PLOT, Moves.BANEFUL_BUNKER, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ],
[Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ],
@@ -458,11 +458,11 @@ 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.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.ARCTOVISH]: [ Moves.TRIPLE_AXEL, Moves.SUPERCELL_SLAM, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ],
+ [Species.DURALUDON]: [ Moves.ICE_BEAM, Moves.BODY_PRESS, Moves.RECOVER, Moves.CORE_ENFORCER ],
+ [Species.DREEPY]: [ Moves.DRAGON_ENERGY, Moves.SPIRIT_BREAK, Moves.BLAZING_TORQUE, Moves.SPECTRAL_THIEF ],
[Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.BITTER_BLADE, Moves.LEAF_BLADE, Moves.VICTORY_DANCE ],
[Species.ZAMAZENTA]: [ Moves.PSYSHIELD_BASH, Moves.BODY_PRESS, Moves.SLACK_OFF, Moves.VICTORY_DANCE ],
[Species.KUBFU]: [ Moves.METEOR_MASH, Moves.DRAIN_PUNCH, Moves.JET_PUNCH, Moves.DRAGON_DANCE ],
@@ -471,11 +471,11 @@ export const speciesEggMoves = {
[Species.REGIDRAGO]: [ Moves.METEOR_MASH, Moves.FLAMETHROWER, Moves.CALM_MIND, Moves.DRAGON_DARTS ],
[Species.GLASTRIER]: [ Moves.TRICK_ROOM, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ],
[Species.SPECTRIER]: [ Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ],
- [Species.CALYREX]: [ Moves.SAPPY_SEED, Moves.RECOVER, Moves.AURA_SPHERE, Moves.PHOTON_GEYSER ],
+ [Species.CALYREX]: [ Moves.SAPPY_SEED, Moves.RECOVER, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER ],
[Species.ENAMORUS]: [ Moves.FLEUR_CANNON, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.OBLIVION_WING ],
- [Species.SPRIGATITO]: [ Moves.BLAZE_KICK, Moves.STRENGTH_SAP, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ],
- [Species.FUECOCO]: [ Moves.COSMIC_POWER, Moves.SLACK_OFF, Moves.INFERNAL_PARADE, Moves.MOONGEIST_BEAM ],
- [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.ROOST, Moves.TROP_KICK, Moves.THUNDEROUS_KICK ],
+ [Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ],
+ [Species.FUECOCO]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.OVERDRIVE, Moves.MOONGEIST_BEAM ],
+ [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.TROP_KICK, Moves.THUNDEROUS_KICK ],
[Species.LECHONK]: [ Moves.MILK_DRINK, Moves.BLAZING_TORQUE, Moves.FILLET_AWAY, Moves.MULTI_ATTACK ],
[Species.TAROUNTULA]: [ Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.THIEF, Moves.SPORE ],
[Species.NYMBLE]: [ Moves.CEASELESS_EDGE, Moves.FELL_STINGER, Moves.LEECH_LIFE, Moves.WICKED_BLOW ],
@@ -485,13 +485,13 @@ export const speciesEggMoves = {
[Species.SMOLIV]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.BOOMBURST ],
[Species.SQUAWKABILLY]: [ Moves.PARTING_SHOT, Moves.BULK_UP, Moves.FLARE_BLITZ, Moves.HEAD_CHARGE ],
[Species.NACLI]: [ Moves.BODY_PRESS, Moves.SPIKES, Moves.CURSE, Moves.DIAMOND_STORM ],
- [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.PHOTON_GEYSER, Moves.RECOVER, Moves.SPECTRAL_THIEF ],
+ [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.SPECTRAL_THIEF ],
[Species.TADBULB]: [ Moves.PARABOLIC_CHARGE, Moves.SCALD, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ],
[Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.TAILWIND, Moves.HEAT_WAVE, Moves.AEROBLAST ],
[Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.KNOCK_OFF, Moves.NUZZLE, Moves.COLLISION_COURSE ],
[Species.SHROODLE]: [ Moves.FIRE_LASH, Moves.PARTING_SHOT, Moves.TOXIC, Moves.TOPSY_TURVY ],
[Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.CEASELESS_EDGE, Moves.LAST_RESPECTS ],
- [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.HEART_SWAP, Moves.PARTING_SHOT, Moves.SAPPY_SEED ],
+ [Species.TOEDSCOOL]: [ Moves.STRENGTH_SAP, Moves.TOPSY_TURVY, Moves.PARTING_SHOT, Moves.SAPPY_SEED ],
[Species.KLAWF]: [ Moves.CRABHAMMER, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE, Moves.SHELL_SMASH ],
[Species.CAPSAKID]: [ Moves.STRENGTH_SAP, Moves.APPLE_ACID, Moves.FROST_BREATH, Moves.TORCH_SONG ],
[Species.RELLOR]: [ Moves.TOXIC_SPIKES, Moves.RECOVER, Moves.HEAT_WAVE, Moves.LUMINA_CRASH ],
@@ -499,7 +499,7 @@ export const speciesEggMoves = {
[Species.TINKATINK]: [ Moves.NUZZLE, Moves.SHIFT_GEAR, Moves.ICE_HAMMER, Moves.PYRO_BALL ],
[Species.WIGLETT]: [ Moves.SHELL_SMASH, Moves.ICICLE_CRASH, Moves.SEED_BOMB, Moves.SURGING_STRIKES ],
[Species.BOMBIRDIER]: [ Moves.U_TURN, Moves.TIDY_UP, Moves.SUCKER_PUNCH, Moves.MIGHTY_CLEAVE ],
- [Species.FINIZEN]: [ Moves.TRIPLE_AXEL, Moves.DRAIN_PUNCH, Moves.RECOVER, Moves.WOOD_HAMMER ],
+ [Species.FINIZEN]: [ Moves.TRIPLE_AXEL, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.SURGING_STRIKES ],
[Species.VAROOM]: [ Moves.COMBAT_TORQUE, Moves.U_TURN, Moves.BLAZING_TORQUE, Moves.NOXIOUS_TORQUE ],
[Species.CYCLIZAR]: [ Moves.BATON_PASS, Moves.BLAZING_TORQUE, Moves.HEAD_CHARGE, Moves.CLANGOROUS_SOUL ],
[Species.ORTHWORM]: [ Moves.GLARE, Moves.COIL, Moves.BODY_PRESS, Moves.SHORE_UP ],
@@ -518,24 +518,24 @@ export const speciesEggMoves = {
[Species.SANDY_SHOCKS]: [ Moves.SHORE_UP, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.THUNDERCLAP ],
[Species.IRON_TREADS]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SHORE_UP, Moves.DOUBLE_IRON_BASH ],
[Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.WATER_SPOUT ],
- [Species.IRON_HANDS]: [ Moves.DRAIN_PUNCH, Moves.CURSE, Moves.PLASMA_FISTS, Moves.RECOVER ],
+ [Species.IRON_HANDS]: [ Moves.DRAIN_PUNCH, Moves.BULK_UP, Moves.PLASMA_FISTS, Moves.ICE_HAMMER ],
[Species.IRON_JUGULIS]: [ Moves.FIERY_WRATH, Moves.ROOST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ],
[Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.QUIVER_DANCE, Moves.MALIGNANT_CHAIN ],
[Species.IRON_THORNS]: [ Moves.MIGHTY_CLEAVE, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.FUSION_BOLT ],
[Species.FRIGIBAX]: [ Moves.DRAGON_DARTS, Moves.BULK_UP, Moves.SHORE_UP, Moves.GLACIAL_LANCE ],
[Species.GIMMIGHOUL]: [ Moves.COSMIC_POWER, Moves.STORED_POWER, Moves.BATON_PASS, Moves.ASTRAL_BARRAGE ],
- [Species.WO_CHIEN]: [ Moves.SPORE, Moves.RAGE_POWDER, Moves.SAPPY_SEED, Moves.RECOVER ],
+ [Species.WO_CHIEN]: [ Moves.SPORE, Moves.RAGE_POWDER, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ],
[Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ],
[Species.TING_LU]: [ Moves.SHORE_UP, Moves.CURSE, Moves.SAPPY_SEED, Moves.THOUSAND_ARROWS ],
[Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.TORCH_SONG, Moves.ERUPTION ],
[Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ],
[Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.MAGICAL_TORQUE ],
- [Species.KORAIDON]: [ Moves.SACRED_FIRE, Moves.RECOVER, Moves.GLAIVE_RUSH, Moves.CLANGOROUS_SOUL ],
- [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.RECOVER, Moves.RISING_VOLTAGE, Moves.DRAGON_ENERGY ],
+ [Species.KORAIDON]: [ Moves.BITTER_BLADE, Moves.MORNING_SUN, Moves.GLAIVE_RUSH, Moves.CLANGOROUS_SOUL ],
+ [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CLANGOROUS_SOUL, Moves.RISING_VOLTAGE, Moves.DRAGON_ENERGY ],
[Species.WALKING_WAKE]: [ Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.DRAGON_ENERGY ],
[Species.IRON_LEAVES]: [ Moves.SPORE, Moves.U_TURN, Moves.MIGHTY_CLEAVE, Moves.BITTER_BLADE ],
[Species.POLTCHAGEIST]: [ Moves.COSMIC_POWER, Moves.INFERNAL_PARADE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ],
- [Species.OKIDOGI]: [ Moves.MORNING_SUN, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.COLLISION_COURSE ],
+ [Species.OKIDOGI]: [ Moves.SLACK_OFF, Moves.OBSTRUCT, Moves.DIRE_CLAW, Moves.COLLISION_COURSE ],
[Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.HEAT_WAVE, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ],
[Species.FEZANDIPITI]: [ Moves.BATON_PASS, Moves.COSMIC_POWER, Moves.SIZZLY_SLIDE, Moves.MALIGNANT_CHAIN ],
[Species.OGERPON]: [ Moves.FLOWER_TRICK, Moves.BONEMERANG, Moves.TRIPLE_AXEL, Moves.GIGATON_HAMMER ],
diff --git a/src/data/egg.ts b/src/data/egg.ts
index 08982cd4a..f0d6de26a 100644
--- a/src/data/egg.ts
+++ b/src/data/egg.ts
@@ -77,8 +77,6 @@ export function getEggHatchWavesMessage(hatchWaves: integer): string {
}
export function getEggGachaTypeDescriptor(scene: BattleScene, egg: Egg): string {
- if (egg.isManaphyEgg())
- return '';
switch (egg.gachaType) {
case GachaType.LEGENDARY:
return `Legendary Rate Up (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, egg.timestamp)).getName()})`;
diff --git a/src/data/enums/arena-tag-type.ts b/src/data/enums/arena-tag-type.ts
index cc08ca4fd..2ecac8b56 100644
--- a/src/data/enums/arena-tag-type.ts
+++ b/src/data/enums/arena-tag-type.ts
@@ -8,11 +8,13 @@ export enum ArenaTagType {
MIST = "MIST",
FUTURE_SIGHT = "FUTURE_SIGHT",
DOOM_DESIRE = "DOOM_DESIRE",
+ WISH = "WISH",
STEALTH_ROCK = "STEALTH_ROCK",
STICKY_WEB = "STICKY_WEB",
TRICK_ROOM = "TRICK_ROOM",
GRAVITY = "GRAVITY",
REFLECT = "REFLECT",
LIGHT_SCREEN = "LIGHT_SCREEN",
- AURORA_VEIL = "AURORA_VEIL"
+ AURORA_VEIL = "AURORA_VEIL",
+ TAILWIND = "TAILWIND"
}
diff --git a/src/data/enums/battler-tag-type.ts b/src/data/enums/battler-tag-type.ts
index 4d810b737..d18ccf1c5 100644
--- a/src/data/enums/battler-tag-type.ts
+++ b/src/data/enums/battler-tag-type.ts
@@ -3,11 +3,13 @@ export enum BattlerTagType {
NONE = "NONE",
RECHARGING = "RECHARGING",
FLINCHED = "FLINCHED",
+ INTERRUPTED = "INTERRUPTED",
CONFUSED = "CONFUSED",
INFATUATED = "INFATUATED",
SEEDED = "SEEDED",
NIGHTMARE = "NIGHTMARE",
FRENZY = "FRENZY",
+ CHARGING = "CHARGING",
ENCORE = "ENCORE",
HELPING_HAND = "HELPING_HAND",
INGRAIN = "INGRAIN",
@@ -52,5 +54,6 @@ export enum BattlerTagType {
SALT_CURED = "SALT_CURED",
CURSED = "CURSED",
CHARGED = "CHARGED",
- GROUNDED = "GROUNDED"
+ GROUNDED = "GROUNDED",
+ MAGNET_RISEN = "MAGNET_RISEN"
}
diff --git a/src/data/move.ts b/src/data/move.ts
index 30c97a1ac..af4ce4fa6 100644
--- a/src/data/move.ts
+++ b/src/data/move.ts
@@ -12,7 +12,7 @@ import * as Utils from "../utils";
import { WeatherType } from "./weather";
import { ArenaTagSide, ArenaTrapTag } from "./arena-tag";
import { ArenaTagType } from "./enums/arena-tag-type";
-import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr } from "./ability";
+import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr } from "./ability";
import { Abilities } from "./enums/abilities";
import { allAbilities } from './ability';
import { PokemonHeldItemModifier } from "../modifier/modifier";
@@ -326,6 +326,15 @@ export default class Move implements Localizable {
return true;
}
+ getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
+ for (let attr of this.attrs) {
+ let failedText = attr.getFailedText(user, target, move, cancelled);
+ if (failedText !== null)
+ return failedText;
+ }
+ return null;
+ }
+
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
let score = 0;
@@ -358,7 +367,7 @@ export class AttackMove extends Move {
let attackScore = 0;
- const effectiveness = target.getAttackTypeEffectiveness(this.type);
+ const effectiveness = target.getAttackTypeEffectiveness(this.type, user);
attackScore = Math.pow(effectiveness - 1, 2) * effectiveness < 1 ? -2 : 2;
if (attackScore) {
if (this.category === MoveCategory.PHYSICAL) {
@@ -422,6 +431,10 @@ export abstract class MoveAttr {
return null;
}
+ getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
+ return null;
+ }
+
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
return 0;
}
@@ -434,7 +447,9 @@ export abstract class MoveAttr {
export enum MoveEffectTrigger {
PRE_APPLY,
POST_APPLY,
- HIT
+ HIT,
+ /** Triggers one time after all target effects have applied */
+ POST_TARGET,
}
export class MoveEffectAttr extends MoveAttr {
@@ -557,7 +572,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 +700,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;
@@ -723,23 +738,37 @@ export class SacrificialAttr extends MoveEffectAttr {
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
if (user.isBoss())
return -20;
- return Math.ceil(((1 - user.getHpRatio()) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type) - 0.5));
+ return Math.ceil(((1 - user.getHpRatio()) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type, user) - 0.5));
}
}
+/**
+ * Attribute used for moves which cut the user's Max HP in half.
+ * Triggers using POST_TARGET.
+ */
export class HalfSacrificialAttr extends MoveEffectAttr {
constructor() {
- super(true, MoveEffectTrigger.PRE_APPLY);
+ super(true, MoveEffectTrigger.POST_TARGET);
}
+ /**
+ * Cut's the user's Max HP in half and displays the appropriate recoil message
+ * @param user Pokemon that used the move
+ * @param target N/A
+ * @param move Move with this attribute
+ * @param args N/A
+ * @returns true if the function succeeds
+ */
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if (!super.apply(user, target, move, args))
return false;
const cancelled = new Utils.BooleanHolder(false);
+ // Check to see if the Pokemon has an ability that blocks non-direct damage
applyAbAttrs(BlockNonDirectDamageAbAttr, user, cancelled);
if (!cancelled.value){
user.damageAndUpdate(Math.ceil(user.getMaxHp()/2), HitResult.OTHER, false, true, true);
+ user.scene.queueMessage(getPokemonMessage(user, ' cut its own HP to power up its move!')); // Queue recoil message
}
return true;
}
@@ -747,7 +776,7 @@ export class HalfSacrificialAttr extends MoveEffectAttr {
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
if (user.isBoss())
return -10;
- return Math.ceil(((1 - user.getHpRatio()/2) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type) - 0.5));
+ return Math.ceil(((1 - user.getHpRatio()/2) * 10 - 10) * (target.getAttackTypeEffectiveness(move.type, user) - 0.5));
}
}
@@ -756,7 +785,7 @@ export enum MultiHitType {
_2_TO_5,
_3,
_3_INCR,
- _1_TO_10
+ _1_TO_10,
}
export class HealAttr extends MoveEffectAttr {
@@ -912,7 +941,9 @@ export class MultiHitAttr extends MoveAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
let hitTimes: integer;
- switch (this.multiHitType) {
+ const hitType = new Utils.IntegerHolder(this.multiHitType)
+ applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType)
+ switch (hitType.value) {
case MultiHitType._2_TO_5:
{
const rand = user.randSeedInt(16);
@@ -975,6 +1006,23 @@ export class MultiHitAttr extends MoveAttr {
}
}
+export class ChangeMultiHitTypeAttr extends MoveAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ //const hitType = args[0] as Utils.NumberHolder;
+ return false;
+ }
+}
+
+export class WaterShurikenMultiHitTypeAttr extends ChangeMultiHitTypeAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) {
+ (args[0] as Utils.IntegerHolder).value = MultiHitType._3
+ return true;
+ }
+ return false;
+ }
+}
+
export class StatusEffectAttr extends MoveEffectAttr {
public effect: StatusEffect;
public cureTurn: integer;
@@ -1009,6 +1057,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 +1373,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);
+ }
});
}
@@ -1411,8 +1481,8 @@ export class StatChangeAttr extends MoveEffectAttr {
private condition: MoveConditionFunc;
private showMessage: boolean;
- constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean, condition?: MoveConditionFunc, showMessage: boolean = true, firstHitOnly: boolean = false) {
- super(selfTarget, MoveEffectTrigger.HIT, firstHitOnly);
+ constructor(stats: BattleStat | BattleStat[], levels: integer, selfTarget?: boolean, condition?: MoveConditionFunc, showMessage: boolean = true, firstHitOnly: boolean = false, moveEffectTrigger: MoveEffectTrigger = MoveEffectTrigger.HIT) {
+ super(selfTarget, moveEffectTrigger, firstHitOnly);
this.stats = typeof(stats) === 'number'
? [ stats as BattleStat ]
: stats as BattleStat[];
@@ -1474,6 +1544,23 @@ export class StatChangeAttr extends MoveEffectAttr {
}
}
+export class AcupressureStatChangeAttr extends MoveEffectAttr {
+ constructor() {
+ super();
+ }
+
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean | Promise {
+ let randStats = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD, BattleStat.ACC, BattleStat.EVA ];
+ randStats = randStats.filter(s => target.summonData.battleStats[s] < 6);
+ if (randStats.length > 0) {
+ let boostStat = [randStats[Utils.randInt(randStats.length)]];
+ user.scene.unshiftPhase(new StatChangePhase(user.scene, target.getBattlerIndex(), this.selfTarget, boostStat, 2));
+ return true;
+ }
+ return false;
+ }
+}
+
export class GrowthStatChangeAttr extends StatChangeAttr {
constructor() {
super([ BattleStat.ATK, BattleStat.SPATK ], 1, true);
@@ -1551,6 +1638,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 +1654,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 +1670,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 +1838,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 +2086,27 @@ export class PresentPowerAttr extends VariablePowerAttr {
}
}
+export class KnockOffPowerAttr extends VariablePowerAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ if(target.getHeldItems().length > 0){
+ (args[0] as Utils.NumberHolder).value *= 1.5;
+ return true;
+ }
+
+ return false;
+ }
+}
+
+export class WaterShurikenPowerAttr extends VariablePowerAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) {
+ (args[0] as Utils.IntegerHolder).value = 20
+ return true;
+ }
+ return false;
+ }
+}
+
export class VariableAtkAttr extends MoveAttr {
constructor() {
super();
@@ -2160,6 +2274,36 @@ export class VariableMoveTypeAttr extends MoveAttr {
}
}
+export class TechnoBlastTypeAttr extends VariableMoveTypeAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.GENESECT)) {
+ const form = user.species.speciesId === Species.GENESECT ? user.formIndex : user.fusionSpecies.formIndex;
+ const type = (args[0] as Utils.IntegerHolder);
+
+ switch (form) {
+ case 1: // Shock Drive
+ type.value = Type.ELECTRIC;
+ break;
+ case 2: // Burn Drive
+ type.value = Type.FIRE;
+ break;
+ case 3: // Chill Drive
+ type.value = Type.ICE;
+ break;
+ case 4: // Douse Drive
+ type.value = Type.WATER;
+ break;
+ default:
+ type.value = Type.NORMAL;
+ break;
+ }
+ return true;
+ }
+
+ return false;
+ }
+}
+
export class AuraWheelTypeAttr extends VariableMoveTypeAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
if ([user.species.speciesId, user.fusionSpecies?.speciesId].includes(Species.MORPEKO)) {
@@ -2296,6 +2440,27 @@ export class HiddenPowerTypeAttr extends VariableMoveTypeAttr {
}
}
+export class MatchUserTypeAttr extends VariableMoveTypeAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ const type = (args[0] as Utils.IntegerHolder);
+
+ const userTypes = user.getTypes(true);
+
+ if(userTypes.includes(Type.STELLAR)) { // will not change to stellar type
+ const nonTeraTypes = user.getTypes();
+ type.value = nonTeraTypes[0];
+ return true;
+ }
+ else if (userTypes.length > 0) {
+ type.value = userTypes[0];
+ return true;
+ }
+ else
+ return false;
+
+ }
+}
+
export class VariableMoveTypeMultiplierAttr extends MoveAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
return false;
@@ -2332,7 +2497,7 @@ export class WaterSuperEffectTypeMultiplierAttr extends VariableMoveTypeMultipli
export class FlyingTypeMultiplierAttr extends VariableMoveTypeMultiplierAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
const multiplier = args[0] as Utils.NumberHolder;
- multiplier.value *= target.getAttackTypeEffectiveness(Type.FLYING);
+ multiplier.value *= target.getAttackTypeEffectiveness(Type.FLYING, user);
return true;
}
}
@@ -2577,26 +2742,19 @@ export class AddBattlerTagAttr extends MoveEffectAttr {
export class CurseAttr extends MoveEffectAttr {
apply(user: Pokemon, target: Pokemon, move:Move, args: any[]): boolean {
- // Determine the correct target based on the user's type
- if (!user.getTypes(true).includes(Type.GHOST)) {
- // For non-Ghost types, target the user itself
- target = user;
- }
-
if (user.getTypes(true).includes(Type.GHOST)) {
if (target.getTag(BattlerTagType.CURSED)) {
user.scene.queueMessage('But it failed!');
return false;
}
- let curseRecoilDamage = Math.floor(user.getMaxHp() / 2);
+ let curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2));
user.damageAndUpdate(curseRecoilDamage, HitResult.OTHER, false, true, true);
- user.scene.queueMessage(getPokemonMessage(user, ' cut its own HP!'));
+ user.scene.queueMessage(getPokemonMessage(user, ` cut its own HP\nand laid a curse on the ${target.name}!`));
target.addTag(BattlerTagType.CURSED, 0, move.id, user.id);
return true;
} else {
- target = user;
- user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), this.selfTarget, [BattleStat.ATK, BattleStat.DEF], 1));
- user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), this.selfTarget, [BattleStat.SPD], -1));
+ user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), true, [BattleStat.ATK, BattleStat.DEF], 1));
+ user.scene.unshiftPhase(new StatChangePhase(user.scene, user.getBattlerIndex(), true, [BattleStat.SPD], -1));
return true;
}
}
@@ -2761,7 +2919,7 @@ export class AddArenaTagAttr extends MoveEffectAttr {
public tagType: ArenaTagType;
public turnCount: integer;
private failOnOverlap: boolean;
- private selfSideTarget: boolean;
+ public selfSideTarget: boolean;
constructor(tagType: ArenaTagType, turnCount?: integer, failOnOverlap: boolean = false, selfSideTarget: boolean = false) {
super(true, MoveEffectTrigger.POST_APPLY, true);
@@ -2794,14 +2952,51 @@ export class AddArenaTagAttr extends MoveEffectAttr {
export class AddArenaTrapTagAttr extends AddArenaTagAttr {
getCondition(): MoveConditionFunc {
return (user, target, move) => {
- if (move.category !== MoveCategory.STATUS || !user.scene.arena.getTag(this.tagType))
+ const side = (this.selfSideTarget ? user : target).isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY;
+ if (move.category !== MoveCategory.STATUS || !user.scene.arena.getTagOnSide(this.tagType, side))
return true;
- const tag = user.scene.arena.getTag(this.tagType) as ArenaTrapTag;
+ const tag = user.scene.arena.getTagOnSide(this.tagType, side) as ArenaTrapTag;
return tag.layers < tag.maxLayers;
};
}
}
+export class RemoveArenaTrapAttr extends MoveEffectAttr {
+
+ private targetBothSides: boolean;
+
+ constructor(targetBothSides: boolean = false) {
+ super(true, MoveEffectTrigger.PRE_APPLY);
+ this.targetBothSides = targetBothSides;
+ }
+
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+
+ if (!super.apply(user, target, move, args))
+ return false;
+
+ if(this.targetBothSides){
+ user.scene.arena.removeTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.PLAYER);
+ user.scene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.PLAYER);
+ user.scene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.PLAYER);
+ user.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.PLAYER);
+
+ user.scene.arena.removeTagOnSide(ArenaTagType.SPIKES, ArenaTagSide.ENEMY);
+ user.scene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, ArenaTagSide.ENEMY);
+ user.scene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, ArenaTagSide.ENEMY);
+ user.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, ArenaTagSide.ENEMY);
+ }
+ else {
+ user.scene.arena.removeTagOnSide(ArenaTagType.SPIKES, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER);
+ user.scene.arena.removeTagOnSide(ArenaTagType.TOXIC_SPIKES, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER);
+ user.scene.arena.removeTagOnSide(ArenaTagType.STEALTH_ROCK, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER);
+ user.scene.arena.removeTagOnSide(ArenaTagType.STICKY_WEB, target.isPlayer() ? ArenaTagSide.ENEMY : ArenaTagSide.PLAYER);
+ }
+
+ return true;
+ }
+}
+
export class RemoveScreensAttr extends MoveEffectAttr {
private targetBothSides: boolean;
@@ -2848,16 +3043,14 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise {
return new Promise(resolve => {
- if (!this.user && target.isMax())
- return resolve(false);
-
+
// Check if the move category is not STATUS or if the switch out condition is not met
- if (move.category !== MoveCategory.STATUS && !this.getSwitchOutCondition()(user, target, move)) {
+ if (!this.getSwitchOutCondition()(user, target, move)) {
//Apply effects before switch out i.e. poison point, flame body, etc
applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, new PokemonMove(move.id), null);
return resolve(false);
}
-
+
// Move the switch out logic inside the conditional block
// This ensures that the switch out only happens when the conditions are met
const switchOutTarget = this.user ? user : target;
@@ -2904,15 +3097,24 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
resolve(true);
});
}
-
+
getCondition(): MoveConditionFunc {
- return (user, target, move) => move.category !== MoveCategory.STATUS || this.getSwitchOutCondition()(user, target, move);
+ return (user, target, move) => (move.category !== MoveCategory.STATUS || this.getSwitchOutCondition()(user, target, move));
+ }
+
+ getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
+ const blockedByAbility = new Utils.BooleanHolder(false);
+ applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility);
+ return blockedByAbility.value ? getPokemonMessage(target, ` can't be switched out!`) : null;
}
getSwitchOutCondition(): MoveConditionFunc {
return (user, target, move) => {
const switchOutTarget = (this.user ? user : target);
const player = switchOutTarget instanceof PlayerPokemon;
+
+ if (!this.user && move.category == MoveCategory.STATUS && (target.hasAbilityWithAttr(ForceSwitchOutImmunityAbAttr) || target.isMax()))
+ return false;
if (!player && !user.scene.currentBattle.battleType) {
if (this.batonPass)
@@ -3099,11 +3301,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 +3771,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 +3839,36 @@ export class MoneyAttr extends MoveEffectAttr {
}
}
+export class LastResortAttr extends MoveAttr {
+ getCondition(): MoveConditionFunc {
+ return (user: Pokemon, target: Pokemon, move: Move) => {
+ const uniqueUsedMoveIds = new Set();
+ const movesetMoveIds = user.getMoveset().map(m => m.moveId);
+ user.getMoveHistory().map(m => {
+ if (m.move !== move.id && movesetMoveIds.find(mm => mm === m.move))
+ uniqueUsedMoveIds.add(m.move);
+ });
+ return uniqueUsedMoveIds.size >= movesetMoveIds.length - 1;
+ };
+ }
+}
+
+export class VariableTargetAttr extends MoveAttr {
+ private targetChangeFunc: (user: Pokemon, target: Pokemon, move: Move) => number;
+
+ constructor(targetChange: (user: Pokemon, target: Pokemon, move: Move) => number) {
+ super();
+
+ this.targetChangeFunc = targetChange;
+ }
+
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ const targetVal = args[0] as Utils.NumberHolder;
+ targetVal.value = this.targetChangeFunc(user, target, move);
+ return true;
+ }
+}
+
const failOnGravityCondition: MoveConditionFunc = (user, target, move) => !user.scene.arena.getTag(ArenaTagType.GRAVITY);
const failOnBossCondition: MoveConditionFunc = (user, target, move) => !target.isBossImmune();
@@ -3617,6 +3878,9 @@ const failOnMaxCondition: MoveConditionFunc = (user, target, move) => !target.is
const failIfDampCondition: MoveConditionFunc = (user, target, move) => {
const cancelled = new Utils.BooleanHolder(false);
user.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled));
+ // Queue a message if an ability prevented usage of the move
+ if (cancelled.value)
+ user.scene.queueMessage(getPokemonMessage(user, ` cannot use ${move.name}!`));
return !cancelled.value;
}
@@ -3669,13 +3933,29 @@ export class FirstMoveCondition extends MoveCondition {
}
}
+export class hitsSameTypeAttr extends VariableMoveTypeMultiplierAttr {
+ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
+ const multiplier = args[0] as Utils.NumberHolder;
+ if (!user.getTypes().some(type => target.getTypes().includes(type))){
+ multiplier.value = 0;
+ return true;
+ }
+ return false;
+ }
+}
+
+const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.getTypes().includes(Type.UNKNOWN);
+
export type MoveTargetSet = {
targets: BattlerIndex[];
multiple: boolean;
}
export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet {
- const moveTarget = move ? allMoves[move].moveTarget : move === undefined ? MoveTarget.NEAR_ENEMY : [];
+ const variableTarget = new Utils.NumberHolder(0);
+ user.getOpponents().forEach(p => applyMoveAttrs(VariableTargetAttr, user, p, allMoves[move], variableTarget));
+
+ const moveTarget = allMoves[move].getAttrs(VariableTargetAttr).length ? variableTarget.value : move ? allMoves[move].moveTarget : move === undefined ? MoveTarget.NEAR_ENEMY : [];
const opponents = user.getOpponents();
let set: Pokemon[] = [];
@@ -4152,9 +4432,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)
@@ -4196,10 +4474,8 @@ export function initMoves() {
.condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP)
.soundBased(),
new StatusMove(Moves.CURSE, Type.GHOST, -1, 10, -1, 0, 2)
- .attr(StatChangeAttr, BattleStat.SPD, -1, true)
- .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], 1, true)
- .target(MoveTarget.USER)
- .partial(),
+ .attr(CurseAttr)
+ .ignoresProtect(true),
new AttackMove(Moves.FLAIL, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 15, -1, 0, 2)
.attr(LowHpPowerAttr),
new StatusMove(Moves.CONVERSION_2, Type.NORMAL, -1, 30, -1, 0, 2)
@@ -4362,7 +4638,7 @@ export function initMoves() {
BattlerTagType.SEEDED,
BattlerTagType.INFESTATION
], true)
- .partial(),
+ .attr(RemoveArenaTrapAttr),
new StatusMove(Moves.SWEET_SCENT, Type.NORMAL, 100, 20, -1, 0, 2)
.attr(StatChangeAttr, BattleStat.EVA, -1)
.target(MoveTarget.ALL_NEAR_ENEMIES),
@@ -4481,7 +4757,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 +4777,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)
@@ -4606,8 +4883,7 @@ export function initMoves() {
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.soundBased(),
new StatusMove(Moves.TICKLE, Type.NORMAL, 100, 20, -1, 0, 3)
- .attr(StatChangeAttr, BattleStat.ATK, -1)
- .attr(StatChangeAttr, BattleStat.DEF, -1),
+ .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.DEF ], -1),
new SelfStatusMove(Moves.COSMIC_POWER, Type.PSYCHIC, -1, 20, -1, 0, 3)
.attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], 1, true),
new AttackMove(Moves.WATER_SPOUT, Type.WATER, MoveCategory.SPECIAL, 150, 100, 5, -1, 0, 3)
@@ -4726,10 +5002,10 @@ 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)
+ .attr(AcupressureStatChangeAttr)
.target(MoveTarget.USER_OR_NEAR_ALLY),
new AttackMove(Moves.METAL_BURST, Type.STEEL, MoveCategory.PHYSICAL, -1, 100, 10, -1, 0, 4)
.attr(CounterDamageAttr, (move: Move) => (move.category === MoveCategory.PHYSICAL || move.category === MoveCategory.SPECIAL), 1.5)
@@ -4769,7 +5045,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 +5064,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 +5077,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)
@@ -4908,7 +5180,8 @@ export function initMoves() {
.attr(StatChangeAttr, BattleStat.EVA, -1)
.attr(ClearWeatherAttr, WeatherType.FOG)
.attr(ClearTerrainAttr)
- .attr(RemoveScreensAttr, true),
+ .attr(RemoveScreensAttr, false)
+ .attr(RemoveArenaTrapAttr, true),
new StatusMove(Moves.TRICK_ROOM, Type.PSYCHIC, -1, 5, -1, -7, 4)
.attr(AddArenaTagAttr, ArenaTagType.TRICK_ROOM, 5)
.ignoresProtect()
@@ -5035,6 +5308,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 +5327,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 +5398,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)
@@ -5205,7 +5481,7 @@ export function initMoves() {
.ballBombMove()
.target(MoveTarget.ALL_NEAR_OTHERS),
new AttackMove(Moves.TECHNO_BLAST, Type.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 5)
- .partial(),
+ .attr(TechnoBlastTypeAttr),
new AttackMove(Moves.RELIC_SONG, Type.NORMAL, MoveCategory.SPECIAL, 75, 100, 10, 10, 0, 5)
.attr(StatusEffectAttr, StatusEffect.SLEEP)
.soundBased()
@@ -5252,7 +5528,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(),
@@ -5292,7 +5568,7 @@ export function initMoves() {
.soundBased()
.target(MoveTarget.ALL_NEAR_ENEMIES),
new StatusMove(Moves.PARTING_SHOT, Type.DARK, 100, 20, 100, 0, 6)
- .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1)
+ .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1, false, null, true, true, MoveEffectTrigger.PRE_APPLY)
.attr(ForceSwitchOutAttr, true, false)
.soundBased(),
new StatusMove(Moves.TOPSY_TURVY, Type.DARK, -1, 20, -1, 0, 6)
@@ -5344,7 +5620,9 @@ export function initMoves() {
new AttackMove(Moves.HYPERSPACE_HOLE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, -1, 5, -1, 0, 6)
.ignoresProtect(),
new AttackMove(Moves.WATER_SHURIKEN, Type.WATER, MoveCategory.SPECIAL, 15, 100, 20, -1, 1, 6)
- .attr(MultiHitAttr),
+ .attr(MultiHitAttr)
+ .attr(WaterShurikenPowerAttr)
+ .attr(WaterShurikenMultiHitTypeAttr),
new AttackMove(Moves.MYSTICAL_FIRE, Type.FIRE, MoveCategory.SPECIAL, 75, 100, 10, 100, 0, 6)
.attr(StatChangeAttr, BattleStat.SPATK, -1),
new SelfStatusMove(Moves.SPIKY_SHIELD, Type.GRASS, -1, 10, -1, 4, 6)
@@ -5355,7 +5633,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 +5675,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)
@@ -5574,7 +5854,7 @@ export function initMoves() {
.unimplemented(),
new AttackMove(Moves.REVELATION_DANCE, Type.NORMAL, MoveCategory.SPECIAL, 90, 100, 15, -1, 0, 7)
.danceMove()
- .partial(),
+ .attr(MatchUserTypeAttr),
new AttackMove(Moves.CORE_ENFORCER, Type.DRAGON, MoveCategory.SPECIAL, 100, 100, 10, -1, 0, 7)
.target(MoveTarget.ALL_NEAR_ENEMIES)
.partial(),
@@ -5646,8 +5926,7 @@ export function initMoves() {
.ignoresAbilities()
.partial(),
new StatusMove(Moves.TEARFUL_LOOK, Type.NORMAL, -1, 20, 100, 0, 7)
- .attr(StatChangeAttr, BattleStat.ATK, -1)
- .attr(StatChangeAttr, BattleStat.SPATK, -1),
+ .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], -1),
new AttackMove(Moves.ZING_ZAP, Type.ELECTRIC, MoveCategory.PHYSICAL, 80, 100, 10, 30, 0, 7)
.attr(FlinchAttr),
new AttackMove(Moves.NATURES_MADNESS, Type.FAIRY, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 7)
@@ -5698,7 +5977,7 @@ export function initMoves() {
new AttackMove(Moves.PIKA_PAPOW, Type.ELECTRIC, MoveCategory.SPECIAL, -1, -1, 20, -1, 0, 7)
.attr(FriendshipPowerAttr),
new AttackMove(Moves.BOUNCY_BUBBLE, Type.WATER, MoveCategory.SPECIAL, 60, 100, 20, -1, 0, 7)
- .attr(HitHealAttr)
+ .attr(HitHealAttr, 1.0)
.triageMove(),
new AttackMove(Moves.BUZZY_BUZZ, Type.ELECTRIC, MoveCategory.SPECIAL, 60, 100, 20, 100, 0, 7)
.attr(StatusEffectAttr, StatusEffect.PARALYSIS),
@@ -5826,8 +6105,7 @@ export function initMoves() {
new AttackMove(Moves.BODY_PRESS, Type.FIGHTING, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8)
.attr(DefAtkAttr),
new StatusMove(Moves.DECORATE, Type.FAIRY, -1, 15, 100, 0, 8)
- .attr(StatChangeAttr, BattleStat.ATK, 2)
- .attr(StatChangeAttr, BattleStat.SPATK, 2),
+ .attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPATK ], 2),
new AttackMove(Moves.DRUM_BEATING, Type.GRASS, MoveCategory.PHYSICAL, 80, 100, 10, 100, 0, 8)
.attr(StatChangeAttr, BattleStat.SPD, -1)
.makesContact(false),
@@ -5877,7 +6155,8 @@ export function initMoves() {
new AttackMove(Moves.STEEL_BEAM, Type.STEEL, MoveCategory.SPECIAL, 140, 95, 5, -1, 0, 8)
.attr(HalfSacrificialAttr),
new AttackMove(Moves.EXPANDING_FORCE, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, -1, 0, 8)
- .partial(),
+ .attr(MovePowerMultiplierAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 1.5 : 1)
+ .attr(VariableTargetAttr, (user, target, move) => user.scene.arena.getTerrainType() === TerrainType.PSYCHIC && user.isGrounded() ? 6 : 3),
new AttackMove(Moves.STEEL_ROLLER, Type.STEEL, MoveCategory.PHYSICAL, 130, 100, 5, -1, 0, 8)
.attr(ClearTerrainAttr)
.condition((user, target, move) => !!user.scene.arena.terrain),
@@ -5961,16 +6240,15 @@ export function initMoves() {
new AttackMove(Moves.THUNDEROUS_KICK, Type.FIGHTING, MoveCategory.PHYSICAL, 90, 100, 10, 100, 0, 8)
.attr(StatChangeAttr, BattleStat.DEF, -1),
new AttackMove(Moves.GLACIAL_LANCE, Type.ICE, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 8)
- .target(MoveTarget.ALL_NEAR_ENEMIES),
+ .target(MoveTarget.ALL_NEAR_ENEMIES)
+ .makesContact(false),
new AttackMove(Moves.ASTRAL_BARRAGE, Type.GHOST, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 8)
.target(MoveTarget.ALL_NEAR_ENEMIES),
new AttackMove(Moves.EERIE_SPELL, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 5, 100, 0, 8)
.soundBased()
.partial(),
new AttackMove(Moves.DIRE_CLAW, Type.POISON, MoveCategory.PHYSICAL, 80, 100, 15, 50, 0, 8)
- .attr(StatusEffectAttr, StatusEffect.POISON)
- .attr(StatusEffectAttr, StatusEffect.PARALYSIS)
- .attr(StatusEffectAttr, StatusEffect.SLEEP),
+ .attr(MultiStatusEffectAttr, [StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP]),
new AttackMove(Moves.PSYSHIELD_BASH, Type.PSYCHIC, MoveCategory.PHYSICAL, 70, 90, 10, 100, 0, 8)
.attr(StatChangeAttr, BattleStat.DEF, 1, true),
new SelfStatusMove(Moves.POWER_SHIFT, Type.NORMAL, -1, 10, 100, 0, 8)
@@ -6043,7 +6321,7 @@ export function initMoves() {
.partial(),
new SelfStatusMove(Moves.TAKE_HEART, Type.PSYCHIC, -1, 10, -1, 0, 8)
.attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF ], 1, true)
- .partial(),
+ .attr(HealStatusEffectAttr, true, StatusEffect.PARALYSIS, StatusEffect.POISON, StatusEffect.TOXIC, StatusEffect.BURN, StatusEffect.SLEEP),
/* Unused
new AttackMove(Moves.G_MAX_WILDFIRE, Type.FIRE, MoveCategory.PHYSICAL, 10, -1, 10, -1, 0, 8)
.target(MoveTarget.ALL_NEAR_ENEMIES)
@@ -6203,6 +6481,7 @@ export function initMoves() {
BattlerTagType.INFESTATION
], true)
.attr(StatusEffectAttr, StatusEffect.POISON)
+ .attr(RemoveArenaTrapAttr)
.target(MoveTarget.ALL_NEAR_ENEMIES),
new StatusMove(Moves.DOODLE, Type.NORMAL, 100, 10, -1, 0, 9)
.attr(AbilityCopyAttr, true),
@@ -6234,9 +6513,9 @@ export function initMoves() {
new AttackMove(Moves.RUINATION, Type.DARK, MoveCategory.SPECIAL, -1, 90, 10, -1, 0, 9)
.attr(TargetHalfHpDamageAttr),
new AttackMove(Moves.COLLISION_COURSE, Type.FIGHTING, MoveCategory.PHYSICAL, 100, 100, 5, -1, 0, 9)
- .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2 ? 5461/4096 : 1),
+ .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461/4096 : 1),
new AttackMove(Moves.ELECTRO_DRIFT, Type.ELECTRIC, MoveCategory.SPECIAL, 100, 100, 5, -1, 0, 9)
- .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2 ? 5461/4096 : 1)
+ .attr(MovePowerMultiplierAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type, user) >= 2 ? 5461/4096 : 1)
.makesContact(),
new SelfStatusMove(Moves.SHED_TAIL, Type.NORMAL, -1, 10, -1, 0, 9)
.unimplemented(),
@@ -6246,7 +6525,7 @@ export function initMoves() {
.target(MoveTarget.BOTH_SIDES),
new SelfStatusMove(Moves.TIDY_UP, Type.NORMAL, -1, 10, 100, 0, 9)
.attr(StatChangeAttr, [ BattleStat.ATK, BattleStat.SPD ], 1, true)
- .partial(),
+ .attr(RemoveArenaTrapAttr),
new StatusMove(Moves.SNOWSCAPE, Type.ICE, -1, 10, -1, 0, 9)
.attr(WeatherChangeAttr, WeatherType.SNOW)
.target(MoveTarget.BOTH_SIDES),
@@ -6285,8 +6564,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 +6618,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-forms.ts b/src/data/pokemon-forms.ts
index 421488629..9a38ed81e 100644
--- a/src/data/pokemon-forms.ts
+++ b/src/data/pokemon-forms.ts
@@ -82,7 +82,11 @@ export enum FormChangeItem {
SHADOW_REINS_OF_UNITY,
WELLSPRING_MASK,
HEARTHFLAME_MASK,
- CORNERSTONE_MASK
+ CORNERSTONE_MASK,
+ SHOCK_DRIVE,
+ BURN_DRIVE,
+ CHILL_DRIVE,
+ DOUSE_DRIVE
}
export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean;
@@ -542,11 +546,27 @@ export const pokemonFormChanges: PokemonFormChanges = {
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangePostMoveTrigger(Moves.RELIC_SONG), true),
new SpeciesFormChange(Species.MELOETTA, 'pirouette', 'aria', new SpeciesFormChangeActiveTrigger(false), true)
],
+ [Species.GENESECT]: [
+ new SpeciesFormChange(Species.GENESECT, '', 'shock', new SpeciesFormChangeItemTrigger(FormChangeItem.SHOCK_DRIVE)),
+ new SpeciesFormChange(Species.GENESECT, '', 'burn', new SpeciesFormChangeItemTrigger(FormChangeItem.BURN_DRIVE)),
+ new SpeciesFormChange(Species.GENESECT, '', 'chill', new SpeciesFormChangeItemTrigger(FormChangeItem.CHILL_DRIVE)),
+ new SpeciesFormChange(Species.GENESECT, '', 'douse', new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE))
+ ],
+ [Species.GRENINJA]: [
+ new SpeciesFormChange(Species.GRENINJA, 'battle-bond', 'ash', new SpeciesFormChangeManualTrigger(), true),
+ new SpeciesFormChange(Species.GRENINJA, 'ash', 'battle-bond', new SpeciesFormChangeManualTrigger(), true)
+ ],
[Species.AEGISLASH]: [
new SpeciesFormChange(Species.AEGISLASH, 'blade', 'shield', new SpeciesFormChangePreMoveTrigger(Moves.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))),
new SpeciesFormChange(Species.AEGISLASH, 'shield', 'blade', new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(Abilities.STANCE_CHANGE))),
new SpeciesFormChange(Species.AEGISLASH, 'blade', 'shield', new SpeciesFormChangeActiveTrigger(false), true)
],
+ [Species.ZYGARDE]: [
+ new SpeciesFormChange(Species.ZYGARDE, '50-pc', 'complete', new SpeciesFormChangeManualTrigger(), true),
+ new SpeciesFormChange(Species.ZYGARDE, 'complete', '50-pc', new SpeciesFormChangeManualTrigger(), true),
+ new SpeciesFormChange(Species.ZYGARDE, '10-pc', 'complete', new SpeciesFormChangeManualTrigger(), true),
+ new SpeciesFormChange(Species.ZYGARDE, 'complete', '10-pc', new SpeciesFormChangeManualTrigger(), true)
+ ],
[Species.DIANCIE]: [
new SpeciesFormChange(Species.DIANCIE, '', SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE))
],
diff --git a/src/data/pokemon-level-moves.ts b/src/data/pokemon-level-moves.ts
index 5788c9c61..79530d985 100644
--- a/src/data/pokemon-level-moves.ts
+++ b/src/data/pokemon-level-moves.ts
@@ -30,7 +30,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 24, Moves.SWEET_SCENT ],
[ 27, Moves.SYNTHESIS ],
[ 30, Moves.WORRY_SEED ],
- [ 33, Moves.DOUBLE_EDGE ],
+ [ 33, Moves.POWER_WHIP ],
[ 36, Moves.SOLAR_BEAM ],
],
[Species.IVYSAUR]: [
@@ -47,16 +47,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 30, Moves.SWEET_SCENT ],
[ 35, Moves.SYNTHESIS ],
[ 40, Moves.WORRY_SEED ],
- [ 45, Moves.DOUBLE_EDGE ],
+ [ 45, Moves.POWER_WHIP ],
[ 50, Moves.SOLAR_BEAM ],
],
[Species.VENUSAUR]: [
[ 0, Moves.PETAL_BLIZZARD ],
+ [ 1, Moves.GROWTH ],
+ [ 1, Moves.PETAL_DANCE ],
[ 1, Moves.VINE_WHIP ],
[ 1, Moves.TACKLE ],
[ 1, Moves.GROWL ],
- [ 1, Moves.GROWTH ],
- [ 1, Moves.PETAL_DANCE ],
[ 9, Moves.LEECH_SEED ],
[ 12, Moves.RAZOR_LEAF ],
[ 15, Moves.POISON_POWDER ],
@@ -66,7 +66,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 30, Moves.SWEET_SCENT ],
[ 37, Moves.SYNTHESIS ],
[ 44, Moves.WORRY_SEED ],
- [ 51, Moves.DOUBLE_EDGE ],
+ [ 51, Moves.POWER_WHIP ],
[ 58, Moves.SOLAR_BEAM ],
],
[Species.CHARMANDER]: [
@@ -127,7 +127,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 27, Moves.SHELL_SMASH ],
[ 30, Moves.IRON_DEFENSE ],
[ 33, Moves.HYDRO_PUMP ],
- [ 36, Moves.SKULL_BASH ],
+ [ 36, Moves.WAVE_CRASH ],
],
[Species.WARTORTLE]: [
[ 1, Moves.TACKLE ],
@@ -143,7 +143,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 35, Moves.SHELL_SMASH ],
[ 40, Moves.IRON_DEFENSE ],
[ 45, Moves.HYDRO_PUMP ],
- [ 50, Moves.SKULL_BASH ],
+ [ 50, Moves.WAVE_CRASH ],
],
[Species.BLASTOISE]: [
[ 0, Moves.FLASH_CANNON ],
@@ -160,7 +160,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 35, Moves.SHELL_SMASH ],
[ 42, Moves.IRON_DEFENSE ],
[ 49, Moves.HYDRO_PUMP ],
- [ 56, Moves.SKULL_BASH ],
+ [ 56, Moves.WAVE_CRASH ],
],
[Species.CATERPIE]: [
[ 1, Moves.TACKLE ],
@@ -341,9 +341,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 12, Moves.GLARE ],
[ 17, Moves.SCREECH ],
[ 20, Moves.ACID ],
+ [ 25, Moves.SWALLOW ],
[ 25, Moves.STOCKPILE ],
[ 25, Moves.SPIT_UP ],
- [ 25, Moves.SWALLOW ],
[ 28, Moves.ACID_SPRAY ],
[ 33, Moves.SLUDGE_BOMB ],
[ 36, Moves.GASTRO_ACID ],
@@ -396,9 +396,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 36, Moves.THUNDERBOLT ],
[ 40, Moves.LIGHT_SCREEN ],
[ 44, Moves.THUNDER ],
+ [ 48, Moves.PIKA_PAPOW ],
],
[Species.RAICHU]: [
- [ 0, Moves.THUNDER_PUNCH ],
+ [ 0, Moves.ZIPPY_ZAP ],
[ 1, Moves.TAIL_WHIP ],
[ 1, Moves.GROWL ],
[ 1, Moves.THUNDER_SHOCK ],
@@ -418,7 +419,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.ELECTRO_BALL ],
[ 1, Moves.PLAY_NICE ],
[ 1, Moves.NUZZLE ],
+ [ 1, Moves.THUNDER_PUNCH ],
[ 5, Moves.THUNDERBOLT ],
+ [ 50, Moves.PIKA_PAPOW ],
],
[Species.SANDSHREW]: [
[ 1, Moves.SCRATCH ],
@@ -1777,14 +1780,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 4, Moves.DOUBLE_KICK ],
[ 8, Moves.LOW_KICK ],
[ 12, Moves.ENDURE ],
- [ 16, Moves.REVENGE ],
+ [ 16, Moves.SUCKER_PUNCH ],
[ 21, Moves.WIDE_GUARD ],
[ 24, Moves.BLAZE_KICK ],
- [ 28, Moves.MIND_READER ],
+ [ 28, Moves.FEINT ],
[ 32, Moves.MEGA_KICK ],
[ 36, Moves.CLOSE_COMBAT ],
[ 40, Moves.REVERSAL ],
[ 44, Moves.HIGH_JUMP_KICK ],
+ [ 50, Moves.AXE_KICK ],
],
[Species.HITMONCHAN]: [
[ 0, Moves.DRAIN_PUNCH ],
@@ -1793,16 +1797,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.FAKE_OUT ],
[ 1, Moves.HELPING_HAND ],
[ 1, Moves.FEINT ],
- [ 1, Moves.VACUUM_WAVE ],
- [ 1, Moves.BULLET_PUNCH ],
[ 4, Moves.MACH_PUNCH ],
- [ 8, Moves.POWER_UP_PUNCH ],
+ [ 8, Moves.VACUUM_WAVE ],
[ 12, Moves.DETECT ],
- [ 16, Moves.REVENGE ],
+ [ 16, Moves.BULLET_PUNCH ],
[ 21, Moves.QUICK_GUARD ],
- [ 24, Moves.FIRE_PUNCH ],
- [ 24, Moves.ICE_PUNCH ],
[ 24, Moves.THUNDER_PUNCH ],
+ [ 24, Moves.ICE_PUNCH ],
+ [ 24, Moves.FIRE_PUNCH ],
[ 28, Moves.AGILITY ],
[ 32, Moves.MEGA_PUNCH ],
[ 36, Moves.CLOSE_COMBAT ],
@@ -2231,9 +2233,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 45, Moves.CHARM ],
[ 50, Moves.DOUBLE_EDGE ],
[ 55, Moves.LAST_RESORT ],
+ [ 60, Moves.VEEVEE_VOLLEY ],
],
[Species.VAPOREON]: [
- [ 0, Moves.WATER_GUN ],
+ [ 0, Moves.BOUNCY_BUBBLE ],
[ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ],
@@ -2247,19 +2250,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ],
- [ 10, Moves.QUICK_ATTACK ],
- [ 15, Moves.BABY_DOLL_EYES ],
- [ 20, Moves.HAZE ],
- [ 25, Moves.WATER_PULSE ],
- [ 30, Moves.AURORA_BEAM ],
- [ 35, Moves.AQUA_RING ],
- [ 40, Moves.MUDDY_WATER ],
- [ 45, Moves.ACID_ARMOR ],
- [ 50, Moves.HYDRO_PUMP ],
- [ 55, Moves.LAST_RESORT ],
+ [ 10, Moves.WATER_GUN ],
+ [ 15, Moves.QUICK_ATTACK ],
+ [ 20, Moves.BABY_DOLL_EYES ],
+ [ 25, Moves.HAZE ],
+ [ 30, Moves.WATER_PULSE ],
+ [ 35, Moves.AURORA_BEAM ],
+ [ 40, Moves.AQUA_RING ],
+ [ 45, Moves.MUDDY_WATER ],
+ [ 50, Moves.ACID_ARMOR ],
+ [ 55, Moves.HYDRO_PUMP ],
+ [ 60, Moves.LAST_RESORT ],
],
[Species.JOLTEON]: [
- [ 0, Moves.THUNDER_SHOCK ],
+ [ 0, Moves.BUZZY_BUZZ ],
[ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ],
@@ -2273,19 +2277,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ],
- [ 10, Moves.QUICK_ATTACK ],
- [ 15, Moves.BABY_DOLL_EYES ],
- [ 20, Moves.THUNDER_WAVE ],
- [ 25, Moves.DOUBLE_KICK ],
- [ 30, Moves.THUNDER_FANG ],
- [ 35, Moves.PIN_MISSILE ],
- [ 40, Moves.DISCHARGE ],
- [ 45, Moves.AGILITY ],
- [ 50, Moves.THUNDER ],
- [ 55, Moves.LAST_RESORT ],
+ [ 10, Moves.THUNDER_SHOCK ],
+ [ 15, Moves.QUICK_ATTACK ],
+ [ 20, Moves.BABY_DOLL_EYES ],
+ [ 25, Moves.THUNDER_WAVE ],
+ [ 30, Moves.DOUBLE_KICK ],
+ [ 35, Moves.THUNDER_FANG ],
+ [ 40, Moves.PIN_MISSILE ],
+ [ 45, Moves.DISCHARGE ],
+ [ 50, Moves.AGILITY ],
+ [ 55, Moves.THUNDER ],
+ [ 60, Moves.LAST_RESORT ],
],
[Species.FLAREON]: [
- [ 0, Moves.EMBER ],
+ [ 0, Moves.SIZZLY_SLIDE ],
[ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ],
@@ -2298,16 +2303,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ],
- [ 10, Moves.QUICK_ATTACK ],
- [ 15, Moves.BABY_DOLL_EYES ],
- [ 20, Moves.SMOG ],
- [ 25, Moves.BITE ],
- [ 30, Moves.FIRE_FANG ],
- [ 35, Moves.FIRE_SPIN ],
- [ 40, Moves.LAVA_PLUME ],
- [ 45, Moves.SCARY_FACE ],
- [ 50, Moves.FLARE_BLITZ ],
- [ 55, Moves.LAST_RESORT ],
+ [ 10, Moves.EMBER ],
+ [ 15, Moves.QUICK_ATTACK ],
+ [ 20, Moves.BABY_DOLL_EYES ],
+ [ 25, Moves.SMOG ],
+ [ 30, Moves.BITE ],
+ [ 35, Moves.FIRE_FANG ],
+ [ 40, Moves.FIRE_SPIN ],
+ [ 45, Moves.LAVA_PLUME ],
+ [ 50, Moves.SCARY_FACE ],
+ [ 55, Moves.FLARE_BLITZ ],
+ [ 60, Moves.LAST_RESORT ],
],
[Species.PORYGON]: [
[ 1, Moves.TACKLE ],
@@ -2591,7 +2597,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 31, Moves.LIGHT_SCREEN ],
[ 34, Moves.BODY_SLAM ],
[ 39, Moves.SAFEGUARD ],
- [ 42, Moves.AROMATHERAPY ],
+ [ 42, Moves.GIGA_DRAIN ],
[ 45, Moves.SOLAR_BEAM ],
],
[Species.BAYLEEF]: [
@@ -2607,7 +2613,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 36, Moves.LIGHT_SCREEN ],
[ 40, Moves.BODY_SLAM ],
[ 46, Moves.SAFEGUARD ],
- [ 50, Moves.AROMATHERAPY ],
+ [ 50, Moves.GIGA_DRAIN ],
[ 54, Moves.SOLAR_BEAM ],
],
[Species.MEGANIUM]: [
@@ -2625,7 +2631,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 40, Moves.LIGHT_SCREEN ],
[ 46, Moves.BODY_SLAM ],
[ 54, Moves.SAFEGUARD ],
- [ 60, Moves.AROMATHERAPY ],
+ [ 60, Moves.GIGA_DRAIN ],
[ 65, Moves.SOLAR_BEAM ],
],
[Species.CYNDAQUIL]: [
@@ -2789,6 +2795,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.ECHOED_VOICE ],
[ 9, Moves.CONFUSION ],
[ 12, Moves.REFLECT ],
+ [ 15, Moves.DEFOG ],
[ 18, Moves.AIR_SLASH ],
[ 23, Moves.EXTRASENSORY ],
[ 28, Moves.TAKE_DOWN ],
@@ -3325,7 +3332,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 52, Moves.EARTHQUAKE ],
],
[Species.ESPEON]: [
- [ 0, Moves.CONFUSION ],
+ [ 0, Moves.GLITZY_GLOW ],
[ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ],
@@ -3338,19 +3345,20 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ],
- [ 10, Moves.QUICK_ATTACK ],
- [ 15, Moves.BABY_DOLL_EYES ],
- [ 20, Moves.SWIFT ],
- [ 25, Moves.PSYBEAM ],
- [ 30, Moves.MORNING_SUN ],
- [ 35, Moves.POWER_SWAP ],
- [ 40, Moves.PSYCHIC ],
- [ 45, Moves.PSYCH_UP ],
- [ 50, Moves.FUTURE_SIGHT ],
- [ 55, Moves.LAST_RESORT ],
+ [ 10, Moves.CONFUSION ],
+ [ 15, Moves.QUICK_ATTACK ],
+ [ 20, Moves.BABY_DOLL_EYES ],
+ [ 25, Moves.SWIFT ],
+ [ 30, Moves.PSYBEAM ],
+ [ 35, Moves.MORNING_SUN ],
+ [ 40, Moves.POWER_SWAP ],
+ [ 45, Moves.PSYCHIC ],
+ [ 50, Moves.PSYCH_UP ],
+ [ 55, Moves.FUTURE_SIGHT ],
+ [ 60, Moves.LAST_RESORT ],
],
[Species.UMBREON]: [
- [ 0, Moves.SNARL ],
+ [ 0, Moves.BADDY_BAD ],
[ 1, Moves.TACKLE ],
[ 1, Moves.TAKE_DOWN ],
[ 1, Moves.DOUBLE_EDGE ],
@@ -3364,16 +3372,17 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.COVET ],
[ 1, Moves.COPYCAT ],
[ 5, Moves.SAND_ATTACK ],
- [ 10, Moves.QUICK_ATTACK ],
- [ 15, Moves.BABY_DOLL_EYES ],
- [ 20, Moves.CONFUSE_RAY ],
- [ 25, Moves.ASSURANCE ],
- [ 30, Moves.MOONLIGHT ],
- [ 35, Moves.GUARD_SWAP ],
- [ 40, Moves.DARK_PULSE ],
- [ 45, Moves.SCREECH ],
- [ 50, Moves.MEAN_LOOK ],
- [ 55, Moves.LAST_RESORT ],
+ [ 10, Moves.SNARL ],
+ [ 15, Moves.QUICK_ATTACK ],
+ [ 20, Moves.BABY_DOLL_EYES ],
+ [ 25, Moves.CONFUSE_RAY ],
+ [ 30, Moves.ASSURANCE ],
+ [ 35, Moves.MOONLIGHT ],
+ [ 40, Moves.GUARD_SWAP ],
+ [ 45, Moves.DARK_PULSE ],
+ [ 50, Moves.SCREECH ],
+ [ 55, Moves.MEAN_LOOK ],
+ [ 60, Moves.LAST_RESORT ],
],
[Species.MURKROW]: [
[ 1, Moves.PECK ],
@@ -3565,7 +3574,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 13, Moves.LICK ],
[ 19, Moves.HEADBUTT ],
[ 25, Moves.ROAR ],
- [ 31, Moves.RAGE ],
+ [ 31, Moves.LAST_RESORT ],
[ 37, Moves.PLAY_ROUGH ],
[ 43, Moves.PAYBACK ],
[ 49, Moves.CRUNCH ],
@@ -3583,7 +3592,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 13, Moves.LICK ],
[ 19, Moves.HEADBUTT ],
[ 27, Moves.ROAR ],
- [ 35, Moves.RAGE ],
+ [ 35, Moves.LAST_RESORT ],
[ 43, Moves.PLAY_ROUGH ],
[ 51, Moves.PAYBACK ],
[ 59, Moves.CRUNCH ],
@@ -3859,7 +3868,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 20, Moves.WING_ATTACK ],
[ 24, Moves.SLASH ],
[ 28, Moves.STEEL_WING ],
- [ 32, Moves.AUTOTOMIZE ],
+ [ 32, Moves.PAYBACK ],
[ 36, Moves.DRILL_PECK ],
[ 40, Moves.METAL_SOUND ],
[ 44, Moves.SPIKES ],
@@ -3914,11 +3923,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 20, Moves.DRAGON_BREATH ],
[ 25, Moves.BUBBLE_BEAM ],
[ 30, Moves.AGILITY ],
- [ 37, Moves.LASER_FOCUS ],
+ [ 37, Moves.WATER_PULSE ],
[ 44, Moves.DRAGON_PULSE ],
[ 51, Moves.HYDRO_PUMP ],
[ 58, Moves.DRAGON_DANCE ],
[ 65, Moves.RAIN_DANCE ],
+ [ 72, Moves.WAVE_CRASH ],
],
[Species.PHANPY]: [
[ 1, Moves.TACKLE ],
@@ -3965,10 +3975,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 35, Moves.RECOVER ],
[ 40, Moves.DISCHARGE ],
[ 45, Moves.TRI_ATTACK ],
- [ 50, Moves.MAGIC_COAT ],
- [ 55, Moves.LOCK_ON ],
- [ 60, Moves.ZAP_CANNON ],
- [ 65, Moves.HYPER_BEAM ],
+ [ 50, Moves.LOCK_ON ],
+ [ 55, Moves.ZAP_CANNON ],
+ [ 60, Moves.HYPER_BEAM ],
],
[Species.STANTLER]: [
[ 1, Moves.TACKLE ],
@@ -4259,7 +4268,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 72, Moves.FIRE_BLAST ],
[ 81, Moves.FUTURE_SIGHT ],
[ 90, Moves.SKY_ATTACK ],
- [ 99, Moves.BURN_UP ],
+ [ 99, Moves.OVERHEAT ],
],
[Species.CELEBI]: [
[ 1, Moves.CONFUSION ],
@@ -4269,6 +4278,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 30, Moves.ANCIENT_POWER ],
[ 40, Moves.LIFE_DEW ],
[ 50, Moves.LEECH_SEED ],
+ [ 55, Moves.HEAL_BLOCK ],
[ 60, Moves.RECOVER ],
[ 70, Moves.FUTURE_SIGHT ],
[ 80, Moves.HEALING_WISH ],
@@ -4373,15 +4383,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 55, Moves.FLARE_BLITZ ],
],
[Species.BLAZIKEN]: [
- [ 1, Moves.FIRE_PUNCH ],
- [ 1, Moves.SCRATCH ],
+ [ 0, Moves.BLAZE_KICK ],
[ 1, Moves.DOUBLE_KICK ],
+ [ 1, Moves.SCRATCH ],
[ 1, Moves.GROWL ],
+ [ 1, Moves.QUICK_ATTACK ],
+ [ 1, Moves.FIRE_PUNCH ],
[ 1, Moves.EMBER ],
[ 1, Moves.FLAMETHROWER ],
- [ 1, Moves.QUICK_ATTACK ],
[ 1, Moves.FEATHER_DANCE ],
- [ 1, Moves.BRAVE_BIRD ],
[ 9, Moves.FLAME_CHARGE ],
[ 12, Moves.DETECT ],
[ 15, Moves.SAND_ATTACK ],
@@ -4650,15 +4660,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.NUZLEAF]: [
[ 0, Moves.RAZOR_LEAF ],
- [ 1, Moves.TACKLE ],
- [ 1, Moves.ABSORB ],
- [ 1, Moves.HARDEN ],
- [ 1, Moves.EXPLOSION ],
- [ 1, Moves.SWAGGER ],
- [ 1, Moves.FAKE_OUT ],
- [ 1, Moves.TORMENT ],
- [ 1, Moves.ASTONISH ],
[ 1, Moves.AIR_CUTTER ],
+ [ 1, Moves.TORMENT ],
+ [ 1, Moves.FAKE_OUT ],
+ [ 1, Moves.SWAGGER ],
+ [ 1, Moves.EXPLOSION ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.HARDEN ],
+ [ 1, Moves.ABSORB ],
+ [ 1, Moves.ASTONISH ],
[ 9, Moves.GROWTH ],
[ 12, Moves.ROLLOUT ],
[ 18, Moves.MEGA_DRAIN ],
@@ -4694,8 +4704,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.SUCKER_PUNCH ],
],
[Species.TAILLOW]: [
- [ 1, Moves.GROWL ],
[ 1, Moves.PECK ],
+ [ 1, Moves.GROWL ],
[ 5, Moves.FOCUS_ENERGY ],
[ 9, Moves.QUICK_ATTACK ],
[ 13, Moves.WING_ATTACK ],
@@ -4709,13 +4719,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 45, Moves.REVERSAL ],
],
[Species.SWELLOW]: [
- [ 1, Moves.GROWL ],
- [ 1, Moves.PECK ],
- [ 1, Moves.QUICK_ATTACK ],
- [ 1, Moves.FOCUS_ENERGY ],
- [ 1, Moves.PLUCK ],
- [ 1, Moves.AIR_SLASH ],
[ 1, Moves.BRAVE_BIRD ],
+ [ 1, Moves.AIR_SLASH ],
+ [ 1, Moves.PLUCK ],
+ [ 1, Moves.PECK ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.FOCUS_ENERGY ],
+ [ 1, Moves.QUICK_ATTACK ],
[ 13, Moves.WING_ATTACK ],
[ 17, Moves.DOUBLE_TEAM ],
[ 21, Moves.AERIAL_ACE ],
@@ -4739,15 +4749,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 45, Moves.HURRICANE ],
],
[Species.PELIPPER]: [
- [ 1, Moves.GROWL ],
- [ 1, Moves.SUPERSONIC ],
- [ 1, Moves.WATER_GUN ],
- [ 1, Moves.AGILITY ],
- [ 1, Moves.QUICK_ATTACK ],
[ 1, Moves.PROTECT ],
- [ 1, Moves.TAILWIND ],
- [ 1, Moves.AIR_SLASH ],
[ 1, Moves.SOAK ],
+ [ 1, Moves.QUICK_ATTACK ],
+ [ 1, Moves.AGILITY ],
+ [ 1, Moves.AIR_SLASH ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.WATER_GUN ],
+ [ 1, Moves.TAILWIND ],
+ [ 1, Moves.SUPERSONIC ],
[ 15, Moves.WING_ATTACK ],
[ 20, Moves.WATER_PULSE ],
[ 28, Moves.STOCKPILE ],
@@ -4778,9 +4788,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.KIRLIA]: [
[ 1, Moves.GROWL ],
- [ 1, Moves.CONFUSION ],
- [ 1, Moves.DOUBLE_TEAM ],
[ 1, Moves.DISARMING_VOICE ],
+ [ 1, Moves.DOUBLE_TEAM ],
+ [ 1, Moves.CONFUSION ],
[ 9, Moves.HYPNOSIS ],
[ 12, Moves.DRAINING_KISS ],
[ 15, Moves.TELEPORT ],
@@ -4795,15 +4805,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.GARDEVOIR]: [
[ 0, Moves.DAZZLING_GLEAM ],
- [ 1, Moves.GROWL ],
- [ 1, Moves.CONFUSION ],
- [ 1, Moves.DOUBLE_TEAM ],
- [ 1, Moves.CHARM ],
- [ 1, Moves.HEALING_WISH ],
- [ 1, Moves.HEAL_PULSE ],
- [ 1, Moves.DISARMING_VOICE ],
[ 1, Moves.MISTY_TERRAIN ],
+ [ 1, Moves.HEALING_WISH ],
+ [ 1, Moves.CHARM ],
[ 1, Moves.MYSTICAL_FIRE ],
+ [ 1, Moves.HEAL_PULSE ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.DISARMING_VOICE ],
+ [ 1, Moves.DOUBLE_TEAM ],
+ [ 1, Moves.CONFUSION ],
[ 9, Moves.HYPNOSIS ],
[ 12, Moves.DRAINING_KISS ],
[ 15, Moves.TELEPORT ],
@@ -4844,8 +4854,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 52, Moves.QUIVER_DANCE ],
],
[Species.SHROOMISH]: [
- [ 1, Moves.TACKLE ],
[ 1, Moves.ABSORB ],
+ [ 1, Moves.TACKLE ],
[ 5, Moves.STUN_SPORE ],
[ 8, Moves.LEECH_SEED ],
[ 12, Moves.MEGA_DRAIN ],
@@ -4859,13 +4869,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.BRELOOM]: [
[ 0, Moves.MACH_PUNCH ],
- [ 1, Moves.TACKLE ],
- [ 1, Moves.ABSORB ],
- [ 1, Moves.LEECH_SEED ],
- [ 1, Moves.GROWTH ],
[ 1, Moves.POISON_POWDER ],
- [ 1, Moves.STUN_SPORE ],
+ [ 1, Moves.GROWTH ],
[ 1, Moves.TOXIC ],
+ [ 1, Moves.ABSORB ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.STUN_SPORE ],
+ [ 1, Moves.LEECH_SEED ],
[ 12, Moves.MEGA_DRAIN ],
[ 15, Moves.HEADBUTT ],
[ 19, Moves.FEINT ],
@@ -4905,11 +4915,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.SLAKING]: [
[ 0, Moves.SWAGGER ],
- [ 1, Moves.SCRATCH ],
- [ 1, Moves.ENCORE ],
- [ 1, Moves.YAWN ],
- [ 1, Moves.SLACK_OFF ],
[ 1, Moves.SUCKER_PUNCH ],
+ [ 1, Moves.SCRATCH ],
+ [ 1, Moves.YAWN ],
+ [ 1, Moves.ENCORE ],
+ [ 1, Moves.SLACK_OFF ],
[ 17, Moves.AMNESIA ],
[ 23, Moves.COVET ],
[ 27, Moves.THROAT_CHOP ],
@@ -4932,18 +4942,18 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 40, Moves.DIG ],
],
[Species.NINJASK]: [
- [ 0, Moves.SCREECH ],
[ 0, Moves.DOUBLE_TEAM ],
+ [ 0, Moves.SCREECH ],
[ 0, Moves.FURY_CUTTER ],
- [ 1, Moves.SCRATCH ],
- [ 1, Moves.SAND_ATTACK ],
- [ 1, Moves.DIG ],
- [ 1, Moves.HARDEN ],
- [ 1, Moves.MUD_SLAP ],
- [ 1, Moves.FALSE_SWIPE ],
[ 1, Moves.BATON_PASS ],
- [ 1, Moves.METAL_CLAW ],
[ 1, Moves.AERIAL_ACE ],
+ [ 1, Moves.MUD_SLAP ],
+ [ 1, Moves.METAL_CLAW ],
+ [ 1, Moves.DIG ],
+ [ 1, Moves.SAND_ATTACK ],
+ [ 1, Moves.SCRATCH ],
+ [ 1, Moves.HARDEN ],
+ [ 1, Moves.FALSE_SWIPE ],
[ 15, Moves.AGILITY ],
[ 23, Moves.ABSORB ],
[ 29, Moves.BUG_BITE ],
@@ -4954,15 +4964,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 64, Moves.X_SCISSOR ],
],
[Species.SHEDINJA]: [
+ [ 1, Moves.SHADOW_CLAW ],
+ [ 1, Moves.GRUDGE ],
+ [ 1, Moves.MUD_SLAP ],
+ [ 1, Moves.METAL_CLAW ],
+ [ 1, Moves.DIG ],
[ 1, Moves.SCRATCH ],
[ 1, Moves.SAND_ATTACK ],
- [ 1, Moves.DIG ],
[ 1, Moves.HARDEN ],
- [ 1, Moves.MUD_SLAP ],
[ 1, Moves.FALSE_SWIPE ],
- [ 1, Moves.METAL_CLAW ],
- [ 1, Moves.GRUDGE ],
- [ 1, Moves.SHADOW_CLAW ],
[ 15, Moves.CONFUSE_RAY ],
[ 23, Moves.ABSORB ],
[ 29, Moves.SHADOW_SNEAK ],
@@ -4973,8 +4983,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 64, Moves.PHANTOM_FORCE ],
],
[Species.WHISMUR]: [
- [ 1, Moves.POUND ],
[ 1, Moves.ASTONISH ],
+ [ 1, Moves.POUND ],
[ 5, Moves.ECHOED_VOICE ],
[ 10, Moves.HOWL ],
[ 15, Moves.REST ],
@@ -4988,10 +4998,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.LOUDRED]: [
[ 0, Moves.BITE ],
- [ 1, Moves.POUND ],
[ 1, Moves.ASTONISH ],
- [ 1, Moves.HOWL ],
+ [ 1, Moves.POUND ],
[ 1, Moves.ECHOED_VOICE ],
+ [ 1, Moves.HOWL ],
[ 15, Moves.REST ],
[ 15, Moves.SLEEP_TALK ],
[ 23, Moves.STOMP ],
@@ -5003,14 +5013,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.EXPLOUD]: [
[ 0, Moves.CRUNCH ],
- [ 1, Moves.POUND ],
[ 1, Moves.BITE ],
- [ 1, Moves.ASTONISH ],
- [ 1, Moves.HOWL ],
- [ 1, Moves.THUNDER_FANG ],
[ 1, Moves.ICE_FANG ],
[ 1, Moves.FIRE_FANG ],
+ [ 1, Moves.THUNDER_FANG ],
+ [ 1, Moves.ASTONISH ],
+ [ 1, Moves.POUND ],
[ 1, Moves.ECHOED_VOICE ],
+ [ 1, Moves.HOWL ],
[ 15, Moves.REST ],
[ 15, Moves.SLEEP_TALK ],
[ 23, Moves.STOMP ],
@@ -5042,11 +5052,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 46, Moves.HEAVY_SLAM ],
],
[Species.HARIYAMA]: [
- [ 1, Moves.SAND_ATTACK ],
+ [ 1, Moves.BRINE ],
[ 1, Moves.TACKLE ],
[ 1, Moves.FOCUS_ENERGY ],
[ 1, Moves.ARM_THRUST ],
- [ 1, Moves.BRINE ],
[ 10, Moves.FAKE_OUT ],
[ 13, Moves.FORCE_PALM ],
[ 16, Moves.WHIRLWIND ],
@@ -5063,9 +5072,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 60, Moves.HEADLONG_RUSH ],
],
[Species.AZURILL]: [
- [ 1, Moves.TAIL_WHIP ],
- [ 1, Moves.WATER_GUN ],
[ 1, Moves.SPLASH ],
+ [ 1, Moves.WATER_GUN ],
+ [ 1, Moves.TAIL_WHIP ],
[ 3, Moves.HELPING_HAND ],
[ 6, Moves.BUBBLE_BEAM ],
[ 9, Moves.CHARM ],
@@ -5087,13 +5096,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 34, Moves.SANDSTORM ],
[ 37, Moves.EARTH_POWER ],
[ 40, Moves.STONE_EDGE ],
- [ 43, Moves.ZAP_CANNON ],
[ 43, Moves.LOCK_ON ],
+ [ 43, Moves.ZAP_CANNON ],
],
[Species.SKITTY]: [
- [ 1, Moves.TAIL_WHIP ],
- [ 1, Moves.GROWL ],
[ 1, Moves.FAKE_OUT ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.TAIL_WHIP ],
[ 4, Moves.TACKLE ],
[ 7, Moves.SING ],
[ 10, Moves.ATTRACT ],
@@ -5129,8 +5138,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.PLAY_ROUGH ],
],
[Species.SABLEYE]: [
- [ 1, Moves.SCRATCH ],
[ 1, Moves.LEER ],
+ [ 1, Moves.SCRATCH ],
[ 3, Moves.ASTONISH ],
[ 9, Moves.SHADOW_SNEAK ],
[ 12, Moves.FAKE_OUT ],
@@ -5148,8 +5157,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 48, Moves.FOUL_PLAY ],
],
[Species.MAWILE]: [
- [ 1, Moves.GROWL ],
[ 1, Moves.ASTONISH ],
+ [ 1, Moves.GROWL ],
[ 4, Moves.FAIRY_WIND ],
[ 8, Moves.BATON_PASS ],
[ 12, Moves.BITE ],
@@ -5277,11 +5286,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 44, Moves.THUNDER ],
],
[Species.MANECTRIC]: [
- [ 1, Moves.TACKLE ],
- [ 1, Moves.LEER ],
- [ 1, Moves.THUNDER_WAVE ],
- [ 1, Moves.HOWL ],
[ 1, Moves.FIRE_FANG ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.THUNDER_WAVE ],
+ [ 1, Moves.LEER ],
+ [ 1, Moves.HOWL ],
[ 12, Moves.QUICK_ATTACK ],
[ 16, Moves.SHOCK_WAVE ],
[ 20, Moves.BITE ],
@@ -5294,10 +5303,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 60, Moves.ELECTRIC_TERRAIN ],
],
[Species.PLUSLE]: [
+ [ 1, Moves.PLAY_NICE ],
[ 1, Moves.GROWL ],
[ 1, Moves.THUNDER_WAVE ],
[ 1, Moves.QUICK_ATTACK ],
- [ 1, Moves.PLAY_NICE ],
[ 1, Moves.NUZZLE ],
[ 4, Moves.HELPING_HAND ],
[ 7, Moves.SPARK ],
@@ -5306,8 +5315,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 16, Moves.SWIFT ],
[ 19, Moves.ELECTRO_BALL ],
[ 22, Moves.COPYCAT ],
- [ 25, Moves.CHARM ],
- [ 28, Moves.CHARGE ],
+ [ 26, Moves.CHARGE ],
[ 31, Moves.DISCHARGE ],
[ 34, Moves.BATON_PASS ],
[ 37, Moves.AGILITY ],
@@ -5317,10 +5325,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 49, Moves.ENTRAINMENT ],
],
[Species.MINUN]: [
+ [ 1, Moves.PLAY_NICE ],
[ 1, Moves.GROWL ],
[ 1, Moves.THUNDER_WAVE ],
[ 1, Moves.QUICK_ATTACK ],
- [ 1, Moves.PLAY_NICE ],
[ 1, Moves.NUZZLE ],
[ 4, Moves.HELPING_HAND ],
[ 7, Moves.SPARK ],
@@ -5329,8 +5337,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 16, Moves.SWIFT ],
[ 19, Moves.ELECTRO_BALL ],
[ 22, Moves.COPYCAT ],
- [ 25, Moves.FAKE_TEARS ],
- [ 28, Moves.CHARGE ],
+ [ 26, Moves.CHARGE ],
[ 31, Moves.DISCHARGE ],
[ 34, Moves.BATON_PASS ],
[ 37, Moves.AGILITY ],
@@ -5411,11 +5418,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.SWALOT]: [
[ 0, Moves.BODY_SLAM ],
- [ 1, Moves.POUND ],
- [ 1, Moves.SLUDGE ],
- [ 1, Moves.POISON_GAS ],
- [ 1, Moves.YAWN ],
[ 1, Moves.GUNK_SHOT ],
+ [ 1, Moves.POUND ],
+ [ 1, Moves.YAWN ],
+ [ 1, Moves.POISON_GAS ],
+ [ 1, Moves.SLUDGE ],
[ 12, Moves.AMNESIA ],
[ 17, Moves.ACID_SPRAY ],
[ 20, Moves.ENCORE ],
@@ -5428,8 +5435,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 49, Moves.BELCH ],
],
[Species.CARVANHA]: [
- [ 1, Moves.LEER ],
[ 1, Moves.AQUA_JET ],
+ [ 1, Moves.LEER ],
[ 4, Moves.POISON_FANG ],
[ 8, Moves.FOCUS_ENERGY ],
[ 12, Moves.SCARY_FACE ],
@@ -5444,11 +5451,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.SHARPEDO]: [
[ 0, Moves.SLASH ],
- [ 1, Moves.LEER ],
- [ 1, Moves.FOCUS_ENERGY ],
- [ 1, Moves.POISON_FANG ],
[ 1, Moves.NIGHT_SLASH ],
[ 1, Moves.AQUA_JET ],
+ [ 1, Moves.LEER ],
+ [ 1, Moves.POISON_FANG ],
+ [ 1, Moves.FOCUS_ENERGY ],
[ 12, Moves.SCARY_FACE ],
[ 16, Moves.BITE ],
[ 20, Moves.ICE_FANG ],
@@ -5478,12 +5485,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 48, Moves.WATER_SPOUT ],
],
[Species.WAILORD]: [
- [ 1, Moves.GROWL ],
- [ 1, Moves.WATER_GUN ],
- [ 1, Moves.SPLASH ],
- [ 1, Moves.ASTONISH ],
[ 1, Moves.SOAK ],
[ 1, Moves.NOBLE_ROAR ],
+ [ 1, Moves.SPLASH ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.ASTONISH ],
+ [ 1, Moves.WATER_GUN ],
[ 15, Moves.MIST ],
[ 18, Moves.WATER_PULSE ],
[ 21, Moves.HEAVY_SLAM ],
@@ -5498,8 +5505,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 54, Moves.WATER_SPOUT ],
],
[Species.NUMEL]: [
- [ 1, Moves.TACKLE ],
[ 1, Moves.GROWL ],
+ [ 1, Moves.TACKLE ],
[ 5, Moves.EMBER ],
[ 8, Moves.FOCUS_ENERGY ],
[ 12, Moves.BULLDOZE ],
@@ -5515,12 +5522,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.CAMERUPT]: [
[ 0, Moves.ROCK_SLIDE ],
- [ 1, Moves.TACKLE ],
- [ 1, Moves.GROWL ],
- [ 1, Moves.EMBER ],
[ 1, Moves.FISSURE ],
- [ 1, Moves.FOCUS_ENERGY ],
[ 1, Moves.ERUPTION ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.EMBER ],
+ [ 1, Moves.FOCUS_ENERGY ],
[ 12, Moves.BULLDOZE ],
[ 15, Moves.INCINERATE ],
[ 19, Moves.AMNESIA ],
@@ -5532,8 +5539,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 46, Moves.EARTHQUAKE ],
],
[Species.TORKOAL]: [
- [ 1, Moves.EMBER ],
[ 1, Moves.SMOG ],
+ [ 1, Moves.EMBER ],
[ 4, Moves.WITHDRAW ],
[ 8, Moves.RAPID_SPIN ],
[ 12, Moves.SMOKESCREEN ],
@@ -5568,10 +5575,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.GRUMPIG]: [
[ 0, Moves.TEETER_DANCE ],
- [ 1, Moves.PSYBEAM ],
- [ 1, Moves.CONFUSION ],
- [ 1, Moves.SPLASH ],
[ 1, Moves.BELCH ],
+ [ 1, Moves.SPLASH ],
+ [ 1, Moves.CONFUSION ],
+ [ 1, Moves.PSYBEAM ],
[ 18, Moves.PSYCH_UP ],
[ 22, Moves.CONFUSE_RAY ],
[ 26, Moves.ZEN_HEADBUTT ],
@@ -5586,7 +5593,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 ],
@@ -5601,7 +5608,6 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[Species.TRAPINCH]: [
[ 1, Moves.SAND_ATTACK ],
[ 1, Moves.ASTONISH ],
- [ 4, Moves.LASER_FOCUS ],
[ 8, Moves.BITE ],
[ 12, Moves.MUD_SLAP ],
[ 16, Moves.SAND_TOMB ],
@@ -5616,16 +5622,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.VIBRAVA]: [
[ 0, Moves.DRAGON_BREATH ],
+ [ 1, Moves.DIG ],
[ 1, Moves.SAND_ATTACK ],
[ 1, Moves.BITE ],
[ 1, Moves.SUPERSONIC ],
[ 1, Moves.FISSURE ],
- [ 1, Moves.DIG ],
[ 1, Moves.CRUNCH ],
[ 1, Moves.SUPERPOWER ],
[ 1, Moves.ASTONISH ],
[ 1, Moves.BULLDOZE ],
- [ 1, Moves.LASER_FOCUS ],
[ 12, Moves.MUD_SLAP ],
[ 16, Moves.SAND_TOMB ],
[ 20, Moves.DRAGON_TAIL ],
@@ -5640,19 +5645,18 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.FLYGON]: [
[ 0, Moves.DRAGON_CLAW ],
+ [ 1, Moves.DRAGON_BREATH ],
+ [ 1, Moves.BULLDOZE ],
[ 1, Moves.SAND_ATTACK ],
- [ 1, Moves.BITE ],
[ 1, Moves.SUPERSONIC ],
+ [ 1, Moves.BITE ],
[ 1, Moves.FISSURE ],
[ 1, Moves.DIG ],
- [ 1, Moves.DRAGON_BREATH ],
[ 1, Moves.CRUNCH ],
[ 1, Moves.SUPERPOWER ],
[ 1, Moves.ASTONISH ],
[ 1, Moves.DRAGON_DANCE ],
[ 1, Moves.FEINT ],
- [ 1, Moves.BULLDOZE ],
- [ 1, Moves.LASER_FOCUS ],
[ 12, Moves.MUD_SLAP ],
[ 16, Moves.SAND_TOMB ],
[ 20, Moves.DRAGON_TAIL ],
@@ -5686,11 +5690,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.CACTURNE]: [
[ 0, Moves.SPIKY_SHIELD ],
+ [ 1, Moves.DESTINY_BOND ],
[ 1, Moves.POISON_STING ],
[ 1, Moves.LEER ],
[ 1, Moves.ABSORB ],
[ 1, Moves.GROWTH ],
- [ 1, Moves.DESTINY_BOND ],
[ 10, Moves.LEECH_SEED ],
[ 13, Moves.SAND_ATTACK ],
[ 16, Moves.BULLET_SEED ],
@@ -5705,8 +5709,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 54, Moves.SANDSTORM ],
],
[Species.SWABLU]: [
- [ 1, Moves.GROWL ],
[ 1, Moves.PECK ],
+ [ 1, Moves.GROWL ],
[ 4, Moves.DISARMING_VOICE ],
[ 8, Moves.MIST ],
[ 12, Moves.FURY_ATTACK ],
@@ -5721,11 +5725,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.ALTARIA]: [
[ 0, Moves.DRAGON_PULSE ],
- [ 1, Moves.GROWL ],
- [ 1, Moves.MIST ],
- [ 1, Moves.PECK ],
[ 1, Moves.PLUCK ],
+ [ 1, Moves.PECK ],
+ [ 1, Moves.GROWL ],
[ 1, Moves.DISARMING_VOICE ],
+ [ 1, Moves.MIST ],
[ 12, Moves.FURY_ATTACK ],
[ 16, Moves.ROUND ],
[ 20, Moves.DRAGON_BREATH ],
@@ -5740,6 +5744,18 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[Species.ZANGOOSE]: [
[ 1, Moves.SCRATCH ],
[ 1, Moves.LEER ],
+ [ 1, Moves.DOUBLE_KICK ],
+ [ 1, Moves.DISABLE ],
+ [ 1, Moves.COUNTER ],
+ [ 1, Moves.FURY_SWIPES ],
+ [ 1, Moves.CURSE ],
+ [ 1, Moves.FLAIL ],
+ [ 1, Moves.BELLY_DRUM ],
+ [ 1, Moves.FEINT ],
+ [ 1, Moves.NIGHT_SLASH ],
+ [ 1, Moves.DOUBLE_HIT ],
+ [ 1, Moves.QUICK_GUARD ],
+ [ 1, Moves.FINAL_GAMBIT ],
[ 5, Moves.QUICK_ATTACK ],
[ 8, Moves.FURY_CUTTER ],
[ 12, Moves.METAL_CLAW ],
@@ -5775,12 +5791,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 46, Moves.SLUDGE_BOMB ],
],
[Species.LUNATONE]: [
- [ 1, Moves.TACKLE ],
- [ 1, Moves.ROCK_THROW ],
- [ 1, Moves.CONFUSION ],
- [ 1, Moves.HARDEN ],
- [ 1, Moves.MOONLIGHT ],
[ 1, Moves.MOONBLAST ],
+ [ 1, Moves.MOONLIGHT ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.HARDEN ],
+ [ 1, Moves.CONFUSION ],
+ [ 1, Moves.ROCK_THROW ],
[ 5, Moves.HYPNOSIS ],
[ 10, Moves.ROCK_POLISH ],
[ 15, Moves.ROCK_SLIDE ],
@@ -5793,12 +5809,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 50, Moves.EXPLOSION ],
],
[Species.SOLROCK]: [
- [ 1, Moves.TACKLE ],
- [ 1, Moves.ROCK_THROW ],
- [ 1, Moves.CONFUSION ],
- [ 1, Moves.HARDEN ],
- [ 1, Moves.MORNING_SUN ],
[ 1, Moves.FLARE_BLITZ ],
+ [ 1, Moves.MORNING_SUN ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.HARDEN ],
+ [ 1, Moves.CONFUSION ],
+ [ 1, Moves.ROCK_THROW ],
[ 5, Moves.HYPNOSIS ],
[ 10, Moves.ROCK_POLISH ],
[ 15, Moves.ROCK_SLIDE ],
@@ -5811,8 +5827,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 50, Moves.EXPLOSION ],
],
[Species.BARBOACH]: [
- [ 1, Moves.WATER_GUN ],
[ 1, Moves.MUD_SLAP ],
+ [ 1, Moves.WATER_GUN ],
[ 6, Moves.REST ],
[ 6, Moves.SNORE ],
[ 12, Moves.WATER_PULSE ],
@@ -5825,13 +5841,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.WHISCASH]: [
[ 0, Moves.THRASH ],
+ [ 1, Moves.BELCH ],
+ [ 1, Moves.ZEN_HEADBUTT ],
+ [ 1, Moves.TICKLE ],
+ [ 1, Moves.MUD_SLAP ],
[ 1, Moves.WATER_GUN ],
[ 1, Moves.REST ],
[ 1, Moves.SNORE ],
- [ 1, Moves.MUD_SLAP ],
- [ 1, Moves.TICKLE ],
- [ 1, Moves.ZEN_HEADBUTT ],
- [ 1, Moves.BELCH ],
[ 12, Moves.WATER_PULSE ],
[ 18, Moves.AMNESIA ],
[ 24, Moves.AQUA_TAIL ],
@@ -5859,10 +5875,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.CRAWDAUNT]: [
[ 0, Moves.SWIFT ],
- [ 1, Moves.LEER ],
[ 1, Moves.WATER_GUN ],
[ 1, Moves.HARDEN ],
- [ 1, Moves.TAUNT ],
+ [ 1, Moves.LEER ],
+ [ 1, Moves.TAUNT ],
[ 12, Moves.BUBBLE_BEAM ],
[ 16, Moves.KNOCK_OFF ],
[ 20, Moves.DOUBLE_HIT ],
@@ -5896,11 +5912,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.CLAYDOL]: [
[ 0, Moves.HYPER_BEAM ],
- [ 1, Moves.CONFUSION ],
[ 1, Moves.TELEPORT ],
[ 1, Moves.HARDEN ],
[ 1, Moves.MUD_SLAP ],
[ 1, Moves.RAPID_SPIN ],
+ [ 1, Moves.CONFUSION ],
[ 9, Moves.ROCK_TOMB ],
[ 12, Moves.POWER_TRICK ],
[ 15, Moves.PSYBEAM ],
@@ -5933,11 +5949,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 44, Moves.ENERGY_BALL ],
],
[Species.CRADILY]: [
- [ 1, Moves.WRAP ],
- [ 1, Moves.ACID ],
[ 1, Moves.LEECH_SEED ],
- [ 1, Moves.CONFUSE_RAY ],
+ [ 1, Moves.WRAP ],
[ 1, Moves.ASTONISH ],
+ [ 1, Moves.ACID ],
+ [ 1, Moves.CONFUSE_RAY ],
[ 12, Moves.INGRAIN ],
[ 16, Moves.ANCIENT_POWER ],
[ 20, Moves.MEGA_DRAIN ],
@@ -5951,8 +5967,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 48, Moves.ENERGY_BALL ],
],
[Species.ANORITH]: [
- [ 1, Moves.HARDEN ],
[ 1, Moves.FURY_CUTTER ],
+ [ 1, Moves.HARDEN ],
[ 4, Moves.WATER_GUN ],
[ 8, Moves.SMACK_DOWN ],
[ 12, Moves.METAL_CLAW ],
@@ -5966,9 +5982,9 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 44, Moves.X_SCISSOR ],
],
[Species.ARMALDO]: [
- [ 1, Moves.WATER_GUN ],
- [ 1, Moves.HARDEN ],
[ 1, Moves.FURY_CUTTER ],
+ [ 1, Moves.HARDEN ],
+ [ 1, Moves.WATER_GUN ],
[ 1, Moves.SMACK_DOWN ],
[ 12, Moves.METAL_CLAW ],
[ 16, Moves.ANCIENT_POWER ],
@@ -5987,11 +6003,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.MILOTIC]: [
[ 0, Moves.WATER_PULSE ],
+ [ 1, Moves.FLAIL ],
+ [ 1, Moves.SPLASH ],
[ 1, Moves.TACKLE ],
[ 1, Moves.WRAP ],
[ 1, Moves.WATER_GUN ],
- [ 1, Moves.SPLASH ],
- [ 1, Moves.FLAIL ],
[ 4, Moves.DISARMING_VOICE ],
[ 8, Moves.TWISTER ],
[ 12, Moves.AQUA_RING ],
@@ -6008,8 +6024,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.CASTFORM]: [
[ 1, Moves.TACKLE ],
- [ 10, Moves.EMBER ],
[ 10, Moves.WATER_GUN ],
+ [ 10, Moves.EMBER ],
[ 10, Moves.POWDER_SNOW ],
[ 15, Moves.HEADBUTT ],
[ 20, Moves.RAIN_DANCE ],
@@ -6017,16 +6033,16 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 20, Moves.HAIL ],
[ 25, Moves.WEATHER_BALL ],
[ 35, Moves.HYDRO_PUMP ],
- [ 35, Moves.BLIZZARD ],
[ 35, Moves.FIRE_BLAST ],
+ [ 35, Moves.BLIZZARD ],
[ 45, Moves.HURRICANE ],
],
[Species.KECLEON]: [
- [ 1, Moves.SCRATCH ],
- [ 1, Moves.TAIL_WHIP ],
- [ 1, Moves.LICK ],
[ 1, Moves.THIEF ],
+ [ 1, Moves.TAIL_WHIP ],
[ 1, Moves.ASTONISH ],
+ [ 1, Moves.LICK ],
+ [ 1, Moves.SCRATCH ],
[ 4, Moves.BIND ],
[ 7, Moves.SHADOW_SNEAK ],
[ 10, Moves.FEINT ],
@@ -6059,8 +6075,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.BANETTE]: [
[ 0, Moves.KNOCK_OFF ],
- [ 1, Moves.NIGHT_SHADE ],
[ 1, Moves.SCREECH ],
+ [ 1, Moves.NIGHT_SHADE ],
[ 1, Moves.SPITE ],
[ 16, Moves.WILL_O_WISP ],
[ 19, Moves.SHADOW_SNEAK ],
@@ -6073,8 +6089,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 53, Moves.PHANTOM_FORCE ],
],
[Species.DUSKULL]: [
- [ 1, Moves.LEER ],
[ 1, Moves.ASTONISH ],
+ [ 1, Moves.LEER ],
[ 4, Moves.DISABLE ],
[ 8, Moves.SHADOW_SNEAK ],
[ 12, Moves.CONFUSE_RAY ],
@@ -6092,11 +6108,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.FIRE_PUNCH ],
[ 1, Moves.ICE_PUNCH ],
[ 1, Moves.THUNDER_PUNCH ],
+ [ 1, Moves.GRAVITY ],
[ 1, Moves.BIND ],
+ [ 1, Moves.ASTONISH ],
[ 1, Moves.LEER ],
[ 1, Moves.DISABLE ],
- [ 1, Moves.ASTONISH ],
- [ 1, Moves.GRAVITY ],
[ 1, Moves.SHADOW_SNEAK ],
[ 12, Moves.CONFUSE_RAY ],
[ 16, Moves.NIGHT_SHADE ],
@@ -6109,11 +6125,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 48, Moves.FUTURE_SIGHT ],
],
[Species.TROPIUS]: [
+ [ 1, Moves.LEAF_STORM ],
[ 1, Moves.GUST ],
[ 1, Moves.LEER ],
[ 1, Moves.GROWTH ],
[ 1, Moves.RAZOR_LEAF ],
- [ 1, Moves.LEAF_STORM ],
[ 6, Moves.SWEET_SCENT ],
[ 10, Moves.STOMP ],
[ 16, Moves.MAGICAL_LEAF ],
@@ -6126,11 +6142,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 56, Moves.SOLAR_BEAM ],
],
[Species.CHIMECHO]: [
+ [ 1, Moves.HEALING_WISH ],
[ 1, Moves.WRAP ],
[ 1, Moves.GROWL ],
- [ 1, Moves.CONFUSION ],
[ 1, Moves.ASTONISH ],
- [ 1, Moves.HEALING_WISH ],
+ [ 1, Moves.CONFUSION ],
[ 13, Moves.YAWN ],
[ 16, Moves.STORED_POWER ],
[ 19, Moves.TAKE_DOWN ],
@@ -6142,8 +6158,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 47, Moves.HEAL_PULSE ],
],
[Species.ABSOL]: [
- [ 1, Moves.LEER ],
[ 1, Moves.QUICK_ATTACK ],
+ [ 1, Moves.LEER ],
[ 5, Moves.DOUBLE_TEAM ],
[ 10, Moves.KNOCK_OFF ],
[ 15, Moves.DETECT ],
@@ -6158,18 +6174,18 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.WYNAUT]: [
[ 1, Moves.COUNTER ],
- [ 1, Moves.AMNESIA ],
- [ 1, Moves.SPLASH ],
- [ 1, Moves.DESTINY_BOND ],
- [ 1, Moves.CHARM ],
- [ 1, Moves.SAFEGUARD ],
- [ 1, Moves.ENCORE ],
[ 1, Moves.MIRROR_COAT ],
+ [ 1, Moves.SAFEGUARD ],
+ [ 1, Moves.DESTINY_BOND ],
+ [ 1, Moves.SPLASH ],
+ [ 1, Moves.CHARM ],
+ [ 1, Moves.ENCORE ],
+ [ 1, Moves.AMNESIA ],
],
[Species.SNORUNT]: [
- [ 1, Moves.HEADBUTT ],
[ 1, Moves.POWDER_SNOW ],
- [ 1, Moves.ASTONISH ],
+ [ 1, Moves.ASTONISH ],
+ [ 1, Moves.HEADBUTT ],
[ 5, Moves.LEER ],
[ 10, Moves.DOUBLE_TEAM ],
[ 15, Moves.ICE_SHARD ],
@@ -6185,12 +6201,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.GLALIE]: [
[ 0, Moves.FREEZE_DRY ],
- [ 1, Moves.HEADBUTT ],
- [ 1, Moves.LEER ],
- [ 1, Moves.DOUBLE_TEAM ],
- [ 1, Moves.POWDER_SNOW ],
- [ 1, Moves.ASTONISH ],
[ 1, Moves.SHEER_COLD ],
+ [ 1, Moves.POWDER_SNOW ],
+ [ 1, Moves.HEADBUTT ],
+ [ 1, Moves.ASTONISH ],
+ [ 1, Moves.LEER ],
+ [ 1, Moves.DOUBLE_TEAM ],
[ 15, Moves.ICE_SHARD ],
[ 20, Moves.PROTECT ],
[ 25, Moves.ICY_WIND ],
@@ -6203,8 +6219,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 68, Moves.BLIZZARD ],
],
[Species.SPHEAL]: [
- [ 1, Moves.DEFENSE_CURL ],
[ 1, Moves.ROLLOUT ],
+ [ 1, Moves.DEFENSE_CURL ],
[ 4, Moves.GROWL ],
[ 8, Moves.WATER_GUN ],
[ 12, Moves.POWDER_SNOW ],
@@ -6221,10 +6237,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.SEALEO]: [
[ 0, Moves.SWAGGER ],
- [ 1, Moves.GROWL ],
- [ 1, Moves.WATER_GUN ],
- [ 1, Moves.DEFENSE_CURL ],
[ 1, Moves.ROLLOUT ],
+ [ 1, Moves.DEFENSE_CURL ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.WATER_GUN ],
[ 12, Moves.POWDER_SNOW ],
[ 16, Moves.REST ],
[ 20, Moves.SNORE ],
@@ -6238,13 +6254,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 64, Moves.SHEER_COLD ],
],
[Species.WALREIN]: [
- [ 1, Moves.GROWL ],
- [ 1, Moves.WATER_GUN ],
- [ 1, Moves.DEFENSE_CURL ],
- [ 1, Moves.ROLLOUT ],
[ 1, Moves.SWAGGER ],
[ 1, Moves.CRUNCH ],
[ 1, Moves.ICE_FANG ],
+ [ 1, Moves.ROLLOUT ],
+ [ 1, Moves.DEFENSE_CURL ],
+ [ 1, Moves.GROWL ],
+ [ 1, Moves.WATER_GUN ],
[ 12, Moves.POWDER_SNOW ],
[ 16, Moves.REST ],
[ 20, Moves.SNORE ],
@@ -6264,11 +6280,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 50, Moves.SHELL_SMASH ],
],
[Species.HUNTAIL]: [
- [ 1, Moves.BITE ],
[ 1, Moves.WATER_GUN ],
- [ 1, Moves.WHIRLPOOL ],
[ 1, Moves.IRON_DEFENSE ],
[ 1, Moves.SHELL_SMASH ],
+ [ 1, Moves.WHIRLPOOL ],
+ [ 1, Moves.BITE ],
[ 5, Moves.SCREECH ],
[ 9, Moves.SCARY_FACE ],
[ 11, Moves.RAIN_DANCE ],
@@ -6284,12 +6300,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 50, Moves.HYDRO_PUMP ],
],
[Species.GOREBYSS]: [
- [ 1, Moves.CONFUSION ],
[ 1, Moves.WATER_GUN ],
- [ 1, Moves.WHIRLPOOL ],
[ 1, Moves.IRON_DEFENSE ],
[ 1, Moves.SHELL_SMASH ],
- [ 5, Moves.WATER_SPORT ],
+ [ 1, Moves.WHIRLPOOL ],
+ [ 1, Moves.CONFUSION ],
+ [ 5, Moves.RAIN_DANCE ],
[ 9, Moves.AGILITY ],
[ 11, Moves.DRAINING_KISS ],
[ 14, Moves.WATER_PULSE ],
@@ -6337,8 +6353,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 49, Moves.SAFEGUARD ],
],
[Species.BAGON]: [
- [ 1, Moves.LEER ],
[ 1, Moves.EMBER ],
+ [ 1, Moves.LEER ],
[ 5, Moves.BITE ],
[ 10, Moves.DRAGON_BREATH ],
[ 15, Moves.HEADBUTT ],
@@ -6353,10 +6369,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.SHELGON]: [
[ 0, Moves.PROTECT ],
+ [ 1, Moves.EMBER ],
[ 1, Moves.LEER ],
[ 1, Moves.BITE ],
- [ 1, Moves.EMBER ],
- [ 1, Moves.DRAGON_BREATH ],
+ [ 1, Moves.DRAGON_BREATH ],
[ 15, Moves.HEADBUTT ],
[ 20, Moves.SCARY_FACE ],
[ 25, Moves.CRUNCH ],
@@ -6369,14 +6385,14 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.SALAMENCE]: [
[ 0, Moves.FLY ],
- [ 1, Moves.LEER ],
- [ 1, Moves.BITE ],
- [ 1, Moves.EMBER ],
[ 1, Moves.PROTECT ],
- [ 1, Moves.DRAGON_BREATH ],
- [ 1, Moves.ROOST ],
[ 1, Moves.DRAGON_TAIL ],
[ 1, Moves.DUAL_WINGBEAT ],
+ [ 1, Moves.ROOST ],
+ [ 1, Moves.EMBER ],
+ [ 1, Moves.LEER ],
+ [ 1, Moves.BITE ],
+ [ 1, Moves.DRAGON_BREATH ],
[ 15, Moves.HEADBUTT ],
[ 20, Moves.SCARY_FACE ],
[ 25, Moves.CRUNCH ],
@@ -6394,6 +6410,7 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 0, Moves.METAL_CLAW ],
[ 1, Moves.TACKLE ],
[ 1, Moves.BULLET_PUNCH ],
+ [ 1, Moves.HONE_CLAWS ],
[ 6, Moves.ZEN_HEADBUTT ],
[ 12, Moves.MAGNET_RISE ],
[ 18, Moves.FLASH_CANNON ],
@@ -6407,10 +6424,12 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
],
[Species.METAGROSS]: [
[ 0, Moves.HAMMER_ARM ],
- [ 1, Moves.TACKLE ],
- [ 1, Moves.CONFUSION ],
- [ 1, Moves.METAL_CLAW ],
+ [ 0, Moves.CONFUSION ],
+ [ 0, Moves.METAL_CLAW ],
[ 1, Moves.BULLET_PUNCH ],
+ [ 1, Moves.TACKLE ],
+ [ 1, Moves.EXPLOSION ],
+ [ 1, Moves.HONE_CLAWS ],
[ 6, Moves.ZEN_HEADBUTT ],
[ 12, Moves.MAGNET_RISE ],
[ 16, Moves.FLASH_CANNON ],
@@ -6423,8 +6442,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 82, Moves.HYPER_BEAM ],
],
[Species.REGIROCK]: [
- [ 1, Moves.ROCK_THROW ],
[ 1, Moves.CHARGE_BEAM ],
+ [ 1, Moves.ROCK_THROW ],
[ 6, Moves.BULLDOZE ],
[ 12, Moves.ANCIENT_POWER ],
[ 18, Moves.STOMP ],
@@ -6440,8 +6459,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 78, Moves.EXPLOSION ],
],
[Species.REGICE]: [
- [ 1, Moves.ICY_WIND ],
[ 1, Moves.CHARGE_BEAM ],
+ [ 1, Moves.ICY_WIND ],
[ 6, Moves.BULLDOZE ],
[ 12, Moves.ANCIENT_POWER ],
[ 18, Moves.STOMP ],
@@ -6457,13 +6476,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 78, Moves.EXPLOSION ],
],
[Species.REGISTEEL]: [
- [ 1, Moves.METAL_CLAW ],
[ 1, Moves.CHARGE_BEAM ],
+ [ 1, Moves.METAL_CLAW ],
[ 6, Moves.BULLDOZE ],
[ 12, Moves.ANCIENT_POWER ],
- [ 18, Moves.STOMP ],
- [ 24, Moves.FLASH_CANNON ],
+ [ 18, Moves.STOMP ],
[ 24, Moves.IRON_HEAD ],
+ [ 24, Moves.FLASH_CANNON ],
[ 30, Moves.CURSE ],
[ 36, Moves.AMNESIA ],
[ 36, Moves.IRON_DEFENSE ],
@@ -6476,8 +6495,8 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 78, Moves.EXPLOSION ],
],
[Species.LATIAS]: [
- [ 1, Moves.CHARM ],
[ 1, Moves.STORED_POWER ],
+ [ 1, Moves.CHARM ],
[ 5, Moves.HELPING_HAND ],
[ 10, Moves.RECOVER ],
[ 15, Moves.CONFUSION ],
@@ -6492,11 +6511,10 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 60, Moves.PSYCHIC ],
[ 65, Moves.GUARD_SPLIT ],
[ 70, Moves.HEALING_WISH ],
- [ 75, Moves.PSYCHO_SHIFT ],
],
[Species.LATIOS]: [
- [ 1, Moves.DRAGON_DANCE ],
[ 1, Moves.STORED_POWER ],
+ [ 1, Moves.DRAGON_DANCE ],
[ 5, Moves.HELPING_HAND ],
[ 10, Moves.RECOVER ],
[ 15, Moves.CONFUSION ],
@@ -6511,14 +6529,13 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 60, Moves.PSYCHIC ],
[ 65, Moves.POWER_SPLIT ],
[ 70, Moves.MEMENTO ],
- [ 75, Moves.PSYCHO_SHIFT ],
],
[Species.KYOGRE]: [
- [ 1, Moves.BODY_SLAM ],
- [ 1, Moves.SCARY_FACE ],
- [ 1, Moves.ANCIENT_POWER ],
- [ 1, Moves.WATER_PULSE ],
[ 1, Moves.ORIGIN_PULSE ],
+ [ 1, Moves.WATER_PULSE ],
+ [ 1, Moves.ANCIENT_POWER ],
+ [ 1, Moves.BODY_SLAM ],
+ [ 1, Moves.SCARY_FACE ],
[ 9, Moves.AQUA_TAIL ],
[ 18, Moves.CALM_MIND ],
[ 27, Moves.MUDDY_WATER ],
@@ -6530,11 +6547,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 90, Moves.WATER_SPOUT ],
],
[Species.GROUDON]: [
- [ 1, Moves.SCARY_FACE ],
- [ 1, Moves.ANCIENT_POWER ],
- [ 1, Moves.MUD_SHOT ],
- [ 1, Moves.LAVA_PLUME ],
[ 1, Moves.PRECIPICE_BLADES ],
+ [ 1, Moves.MUD_SHOT ],
+ [ 1, Moves.ANCIENT_POWER ],
+ [ 1, Moves.LAVA_PLUME ],
+ [ 1, Moves.SCARY_FACE ],
[ 9, Moves.EARTH_POWER ],
[ 18, Moves.BULK_UP ],
[ 27, Moves.EARTHQUAKE ],
@@ -6546,11 +6563,11 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 90, Moves.ERUPTION ],
],
[Species.RAYQUAZA]: [
- [ 1, Moves.SCARY_FACE ],
+ [ 1, Moves.DRAGON_ASCENT ],
[ 1, Moves.TWISTER ],
[ 1, Moves.ANCIENT_POWER ],
[ 1, Moves.AIR_SLASH ],
- [ 1, Moves.DRAGON_ASCENT ],
+ [ 1, Moves.SCARY_FACE ],
[ 9, Moves.CRUNCH ],
[ 18, Moves.DRAGON_DANCE ],
[ 27, Moves.EXTREME_SPEED ],
@@ -6566,7 +6583,6 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 1, Moves.CONFUSION ],
[ 1, Moves.WISH ],
[ 7, Moves.SWIFT ],
- [ 14, Moves.HELPING_HAND ],
[ 21, Moves.LIFE_DEW ],
[ 28, Moves.ZEN_HEADBUTT ],
[ 35, Moves.GRAVITY ],
@@ -6581,15 +6597,15 @@ export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {
[ 98, Moves.DOOM_DESIRE ],
],
[Species.DEOXYS]: [
- [ 1, Moves.WRAP ],
[ 1, Moves.LEER ],
+ [ 1, Moves.WRAP ],
[ 7, Moves.NIGHT_SHADE ],
[ 13, Moves.TELEPORT ],
[ 19, Moves.KNOCK_OFF ],
- [ 25, Moves.PURSUIT ],
+ [ 25, Moves.PSYSHOCK ],
[ 31, Moves.PSYCHIC ],
- [ 37, Moves.SNATCH ],
- [ 43, Moves.PSYCHO_SHIFT ],
+ [ 37, Moves.GRAVITY ],
+ [ 43, Moves.SKILL_SWAP ],
[ 49, Moves.ZEN_HEADBUTT ],
[ 55, Moves.COSMIC_POWER ],
[ 61, Moves.RECOVER ],
@@ -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 f1c1e8bbb..7f33d9ec7 100644
--- a/src/data/pokemon-species.ts
+++ b/src/data/pokemon-species.ts
@@ -138,9 +138,9 @@ export abstract class PokemonSpeciesForm {
this.genderDiffs = genderDiffs;
}
- getRootSpeciesId(): Species {
+ getRootSpeciesId(forStarter: boolean = false): Species {
let ret = this.speciesId;
- while (pokemonPrevolutions.hasOwnProperty(ret))
+ while (pokemonPrevolutions.hasOwnProperty(ret) && (!forStarter || !speciesStarters.hasOwnProperty(ret)))
ret = pokemonPrevolutions[ret];
return ret;
}
@@ -367,8 +367,8 @@ export abstract class PokemonSpeciesForm {
loadAssets(scene: BattleScene, female: boolean, formIndex?: integer, shiny?: boolean, variant?: Variant, startLoad?: boolean): Promise {
return new Promise(resolve => {
const spriteKey = this.getSpriteKey(female, formIndex, shiny, variant);
- scene.load.audio(this.getCryKey(formIndex), `audio/cry/${this.getCryKey(formIndex)}.m4a`);
scene.loadPokemonAtlas(spriteKey, this.getSpriteAtlasPath(female, formIndex, shiny, variant));
+ scene.load.audio(this.getCryKey(formIndex), `audio/cry/${this.getCryKey(formIndex)}.m4a`);
scene.load.once(Phaser.Loader.Events.COMPLETE, () => {
const originalWarn = console.warn;
// Ignore warnings for missing frames, because there will be a lot
@@ -476,7 +476,7 @@ export abstract class PokemonSpeciesForm {
export default class PokemonSpecies extends PokemonSpeciesForm implements Localizable {
public name: string;
- public pseudoLegendary: boolean;
+ public subLegendary: boolean;
public legendary: boolean;
public mythical: boolean;
public species: string;
@@ -486,7 +486,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
public canChangeForm: boolean;
public forms: PokemonForm[];
- constructor(id: Species, generation: integer, pseudoLegendary: boolean, legendary: boolean, mythical: boolean, species: string,
+ constructor(id: Species, generation: integer, subLegendary: boolean, legendary: boolean, mythical: boolean, species: string,
type1: Type, type2: Type, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities,
baseTotal: integer, baseHp: integer, baseAtk: integer, baseDef: integer, baseSpatk: integer, baseSpdef: integer, baseSpd: integer,
catchRate: integer, baseFriendship: integer, baseExp: integer, growthRate: GrowthRate, malePercent: number,
@@ -496,7 +496,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
this.speciesId = id;
this.formIndex = 0;
this.generation = generation;
- this.pseudoLegendary = pseudoLegendary;
+ this.subLegendary = subLegendary;
this.legendary = legendary;
this.mythical = mythical;
this.species = species;
@@ -712,14 +712,14 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali
getCompatibleFusionSpeciesFilter(): PokemonSpeciesFilter {
const hasEvolution = pokemonEvolutions.hasOwnProperty(this.speciesId);
const hasPrevolution = pokemonPrevolutions.hasOwnProperty(this.speciesId);
- const pseudoLegendary = this.pseudoLegendary;
+ const pseudoLegendary = this.subLegendary;
const legendary = this.legendary;
const mythical = this.mythical;
return species => {
return (pseudoLegendary || legendary || mythical ||
(pokemonEvolutions.hasOwnProperty(species.speciesId) === hasEvolution
&& pokemonPrevolutions.hasOwnProperty(species.speciesId) === hasPrevolution))
- && species.pseudoLegendary === pseudoLegendary
+ && species.subLegendary === pseudoLegendary
&& species.legendary === legendary
&& species.mythical === mythical
&& (this.isTrainerForbidden() || !species.isTrainerForbidden());
@@ -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, ""),
@@ -3150,6 +3156,30 @@ export const noStarterFormKeys: string[] = [
SpeciesFormKey.ETERNAMAX
].map(k => k.toString());
+export function getStarterValueFriendshipCap(value: integer): integer {
+ switch (value) {
+ case 1:
+ return 20;
+ case 2:
+ return 40;
+ case 3:
+ return 60;
+ case 4:
+ return 100;
+ case 5:
+ return 140;
+ case 6:
+ return 200;
+ case 7:
+ return 280;
+ case 8:
+ case 9:
+ return 450;
+ default:
+ return 600;
+ }
+}
+
export const starterPassiveAbilities = {
[Species.BULBASAUR]: Abilities.SOLAR_POWER,
[Species.CHARMANDER]: Abilities.INTIMIDATE,
@@ -3179,7 +3209,7 @@ export const starterPassiveAbilities = {
[Species.BELLSPROUT]: Abilities.CORROSION,
[Species.TENTACOOL]: Abilities.INNARDS_OUT,
[Species.GEODUDE]: Abilities.ROCKY_PAYLOAD,
- [Species.PONYTA]: Abilities.PIXILATE,
+ [Species.PONYTA]: Abilities.MAGIC_GUARD,
[Species.SLOWPOKE]: Abilities.UNAWARE,
[Species.MAGNEMITE]: Abilities.MOTOR_DRIVE,
[Species.FARFETCHD]: Abilities.PURE_POWER,
@@ -3205,7 +3235,7 @@ export const starterPassiveAbilities = {
[Species.SCYTHER]: Abilities.SPEED_BOOST,
[Species.PINSIR]: Abilities.SAP_SIPPER,
[Species.TAUROS]: Abilities.ROCK_HEAD,
- [Species.MAGIKARP]: Abilities.BERSERK,
+ [Species.MAGIKARP]: Abilities.MULTISCALE,
[Species.LAPRAS]: Abilities.LIQUID_VOICE,
[Species.DITTO]: Abilities.GOOEY,
[Species.EEVEE]: Abilities.PROTEAN,
@@ -3219,16 +3249,16 @@ export const starterPassiveAbilities = {
[Species.DRATINI]: Abilities.DELTA_STREAM,
[Species.MEWTWO]: Abilities.NEUROFORCE,
[Species.MEW]: Abilities.PROTEAN,
- [Species.CHIKORITA]: Abilities.RIPEN,
+ [Species.CHIKORITA]: Abilities.THICK_FAT,
[Species.CYNDAQUIL]: Abilities.TURBOBLAZE,
[Species.TOTODILE]: Abilities.TOUGH_CLAWS,
[Species.SENTRET]: Abilities.FLUFFY,
[Species.HOOTHOOT]: Abilities.CURSED_BODY,
- [Species.LEDYBA]: Abilities.SCREEN_CLEANER,
+ [Species.LEDYBA]: Abilities.PRANKSTER,
[Species.SPINARAK]: Abilities.PRANKSTER,
[Species.CHINCHOU]: Abilities.REGENERATOR,
[Species.PICHU]: Abilities.TRANSISTOR,
- [Species.CLEFFA]: Abilities.MISTY_SURGE,
+ [Species.CLEFFA]: Abilities.MAGIC_BOUNCE,
[Species.IGGLYBUFF]: Abilities.SERENE_GRACE,
[Species.TOGEPI]: Abilities.OPPORTUNIST,
[Species.NATU]: Abilities.TINTED_LENS,
@@ -3246,7 +3276,7 @@ export const starterPassiveAbilities = {
[Species.DUNSPARCE]: Abilities.MARVEL_SCALE,
[Species.GLIGAR]: Abilities.MERCILESS,
[Species.SNUBBULL]: Abilities.BALL_FETCH,
- [Species.QWILFISH]: Abilities.LIQUID_OOZE,
+ [Species.QWILFISH]: Abilities.TOXIC_DEBRIS,
[Species.SHUCKLE]: Abilities.WELL_BAKED_BODY,
[Species.HERACROSS]: Abilities.QUICK_FEET,
[Species.SNEASEL]: Abilities.MOXIE,
@@ -3262,7 +3292,7 @@ export const starterPassiveAbilities = {
[Species.STANTLER]: Abilities.MAGIC_GUARD,
[Species.SMEARGLE]: Abilities.QUICK_DRAW,
[Species.TYROGUE]: Abilities.STAMINA,
- [Species.SMOOCHUM]: Abilities.CUTE_CHARM,
+ [Species.SMOOCHUM]: Abilities.DAZZLING,
[Species.ELEKID]: Abilities.IRON_FIST,
[Species.MAGBY]: Abilities.CONTRARY,
[Species.MILTANK]: Abilities.GLUTTONY,
@@ -3270,10 +3300,10 @@ export const starterPassiveAbilities = {
[Species.ENTEI]: Abilities.MOXIE,
[Species.SUICUNE]: Abilities.UNAWARE,
[Species.LARVITAR]: Abilities.SAND_FORCE,
- [Species.LUGIA]: Abilities.STORM_DRAIN,
+ [Species.LUGIA]: Abilities.DELTA_STREAM,
[Species.HO_OH]: Abilities.MAGIC_GUARD,
[Species.CELEBI]: Abilities.GRASSY_SURGE,
- [Species.TREECKO]: Abilities.GRASSY_SURGE,
+ [Species.TREECKO]: Abilities.TINTED_LENS,
[Species.TORCHIC]: Abilities.RECKLESS,
[Species.MUDKIP]: Abilities.REGENERATOR,
[Species.POOCHYENA]: Abilities.STRONG_JAW,
@@ -3290,7 +3320,7 @@ export const starterPassiveAbilities = {
[Species.NINCADA]: Abilities.OVERCOAT,
[Species.WHISMUR]: Abilities.PUNK_ROCK,
[Species.MAKUHITA]: Abilities.STAMINA,
- [Species.AZURILL]: Abilities.UNNERVE,
+ [Species.AZURILL]: Abilities.MISTY_SURGE,
[Species.NOSEPASS]: Abilities.LEVITATE,
[Species.SKITTY]: Abilities.SCRAPPY,
[Species.SABLEYE]: Abilities.UNNERVE,
@@ -3321,7 +3351,7 @@ export const starterPassiveAbilities = {
[Species.BALTOY]: Abilities.OWN_TEMPO,
[Species.LILEEP]: Abilities.WATER_ABSORB,
[Species.ANORITH]: Abilities.WATER_ABSORB,
- [Species.FEEBAS]: Abilities.PASTEL_VEIL,
+ [Species.FEEBAS]: Abilities.MAGIC_GUARD,
[Species.CASTFORM]: Abilities.ADAPTABILITY,
[Species.KECLEON]: Abilities.ADAPTABILITY,
[Species.SHUPPET]: Abilities.MUMMY,
@@ -3336,13 +3366,13 @@ export const starterPassiveAbilities = {
[Species.LUVDISC]: Abilities.PICKUP,
[Species.BAGON]: Abilities.GALE_WINGS,
[Species.BELDUM]: Abilities.IRON_FIST,
- [Species.REGIROCK]: Abilities.REGENERATOR,
- [Species.REGICE]: Abilities.ICE_SCALES,
- [Species.REGISTEEL]: Abilities.STEELY_SPIRIT,
- [Species.LATIAS]: Abilities.SERENE_GRACE,
- [Species.LATIOS]: Abilities.SERENE_GRACE,
+ [Species.REGIROCK]: Abilities.SAND_STREAM,
+ [Species.REGICE]: Abilities.SNOW_WARNING,
+ [Species.REGISTEEL]: Abilities.FILTER,
+ [Species.LATIAS]: Abilities.SOUL_HEART,
+ [Species.LATIOS]: Abilities.TINTED_LENS,
[Species.KYOGRE]: Abilities.HYDRATION,
- [Species.GROUDON]: Abilities.EARTH_EATER,
+ [Species.GROUDON]: Abilities.PROTOSYNTHESIS,
[Species.RAYQUAZA]: Abilities.UNNERVE,
[Species.JIRACHI]: Abilities.COMATOSE,
[Species.DEOXYS]: Abilities.PROTEAN,
@@ -3384,16 +3414,16 @@ export const starterPassiveAbilities = {
[Species.MANTYKE]: Abilities.STORM_DRAIN,
[Species.SNOVER]: Abilities.SNOW_CLOAK,
[Species.ROTOM]: Abilities.HADRON_ENGINE,
- [Species.UXIE]: Abilities.ILLUSION,
+ [Species.UXIE]: Abilities.UNAWARE,
[Species.MESPRIT]: Abilities.MOODY,
[Species.AZELF]: Abilities.NEUROFORCE,
[Species.DIALGA]: Abilities.SPEED_BOOST,
- [Species.PALKIA]: Abilities.MAGIC_BOUNCE,
- [Species.HEATRAN]: Abilities.ROUGH_SKIN,
+ [Species.PALKIA]: Abilities.MULTISCALE,
+ [Species.HEATRAN]: Abilities.FILTER,
[Species.REGIGIGAS]: Abilities.MINDS_EYE,
- [Species.GIRATINA]: Abilities.SHADOW_TAG,
+ [Species.GIRATINA]: Abilities.SHADOW_SHIELD,
[Species.CRESSELIA]: Abilities.MAGIC_BOUNCE,
- [Species.PHIONE]: Abilities.SWIFT_SWIM,
+ [Species.PHIONE]: Abilities.SIMPLE,
[Species.MANAPHY]: Abilities.SIMPLE,
[Species.DARKRAI]: Abilities.UNNERVE,
[Species.SHAYMIN]: Abilities.FLOWER_VEIL,
@@ -3401,7 +3431,7 @@ export const starterPassiveAbilities = {
[Species.VICTINI]: Abilities.SUPER_LUCK,
[Species.SNIVY]: Abilities.MULTISCALE,
[Species.TEPIG]: Abilities.ROCK_HEAD,
- [Species.OSHAWOTT]: Abilities.MOLD_BREAKER,
+ [Species.OSHAWOTT]: Abilities.QUICK_DRAW,
[Species.PATRAT]: Abilities.STAKEOUT,
[Species.LILLIPUP]: Abilities.BALL_FETCH,
[Species.PURRLOIN]: Abilities.DEFIANT,
@@ -3414,14 +3444,14 @@ export const starterPassiveAbilities = {
[Species.ROGGENROLA]: Abilities.SOLID_ROCK,
[Species.WOOBAT]: Abilities.SOUL_HEART,
[Species.DRILBUR]: Abilities.SAND_STREAM,
- [Species.AUDINO]: Abilities.SERENE_GRACE,
+ [Species.AUDINO]: Abilities.FRIEND_GUARD,
[Species.TIMBURR]: Abilities.STAMINA,
[Species.TYMPOLE]: Abilities.MOODY,
[Species.THROH]: Abilities.SIMPLE,
[Species.SAWK]: Abilities.DEFIANT,
[Species.SEWADDLE]: Abilities.SHARPNESS,
[Species.VENIPEDE]: Abilities.INTIMIDATE,
- [Species.COTTONEE]: Abilities.MISTY_SURGE,
+ [Species.COTTONEE]: Abilities.FLUFFY,
[Species.PETILIL]: Abilities.DANCER,
[Species.BASCULIN]: Abilities.OPPORTUNIST,
[Species.SANDILE]: Abilities.STRONG_JAW,
@@ -3430,7 +3460,7 @@ export const starterPassiveAbilities = {
[Species.DWEBBLE]: Abilities.STAMINA,
[Species.SCRAGGY]: Abilities.ROCK_HEAD,
[Species.SIGILYPH]: Abilities.MAGICIAN,
- [Species.YAMASK]: Abilities.GOOD_AS_GOLD,
+ [Species.YAMASK]: Abilities.PURIFYING_SALT,
[Species.TIRTOUGA]: Abilities.SHELL_ARMOR,
[Species.ARCHEN]: Abilities.ROCKY_PAYLOAD,
[Species.TRUBBISH]: Abilities.GOOEY,
@@ -3470,16 +3500,16 @@ export const starterPassiveAbilities = {
[Species.LARVESTA]: Abilities.DROUGHT,
[Species.COBALION]: Abilities.INTREPID_SWORD,
[Species.TERRAKION]: Abilities.ROCKY_PAYLOAD,
- [Species.VIRIZION]: Abilities.SYMBIOSIS,
- [Species.TORNADUS]: Abilities.DELTA_STREAM,
+ [Species.VIRIZION]: Abilities.SHARPNESS,
+ [Species.TORNADUS]: Abilities.DRIZZLE,
[Species.THUNDURUS]: Abilities.DRIZZLE,
[Species.RESHIRAM]: Abilities.ORICHALCUM_PULSE,
[Species.ZEKROM]: Abilities.HADRON_ENGINE,
- [Species.LANDORUS]: Abilities.PRANKSTER,
+ [Species.LANDORUS]: Abilities.STORM_DRAIN,
[Species.KYUREM]: Abilities.SNOW_WARNING,
- [Species.KELDEO]: Abilities.SHARPNESS,
- [Species.MELOETTA]: Abilities.PUNK_ROCK,
- [Species.GENESECT]: Abilities.MEGA_LAUNCHER,
+ [Species.KELDEO]: Abilities.GRIM_NEIGH,
+ [Species.MELOETTA]: Abilities.MINDS_EYE,
+ [Species.GENESECT]: Abilities.REGENERATOR,
[Species.CHESPIN]: Abilities.IRON_BARBS,
[Species.FENNEKIN]: Abilities.MAGIC_BOUNCE,
[Species.FROAKIE]: Abilities.ADAPTABILITY,
@@ -3491,7 +3521,7 @@ export const starterPassiveAbilities = {
[Species.SKIDDO]: Abilities.GRASSY_SURGE,
[Species.PANCHAM]: Abilities.FLUFFY,
[Species.FURFROU]: Abilities.BALL_FETCH,
- [Species.ESPURR]: Abilities.PSYCHIC_SURGE,
+ [Species.ESPURR]: Abilities.FUR_COAT,
[Species.HONEDGE]: Abilities.SHARPNESS,
[Species.SPRITZEE]: Abilities.MISTY_SURGE,
[Species.SWIRLIX]: Abilities.WELL_BAKED_BODY,
@@ -3511,14 +3541,14 @@ export const starterPassiveAbilities = {
[Species.PUMPKABOO]: Abilities.FLASH_FIRE,
[Species.BERGMITE]: Abilities.MIRROR_ARMOR,
[Species.NOIBAT]: Abilities.PUNK_ROCK,
- [Species.XERNEAS]: Abilities.COMPETITIVE,
- [Species.YVELTAL]: Abilities.DEFIANT,
- [Species.ZYGARDE]: Abilities.REGENERATOR,
- [Species.DIANCIE]: Abilities.QUEENLY_MAJESTY,
- [Species.HOOPA]: Abilities.TRACE,
+ [Species.XERNEAS]: Abilities.MISTY_SURGE,
+ [Species.YVELTAL]: Abilities.SOUL_HEART,
+ [Species.ZYGARDE]: Abilities.HUGE_POWER,
+ [Species.DIANCIE]: Abilities.LEVITATE,
+ [Species.HOOPA]: Abilities.OPPORTUNIST,
[Species.VOLCANION]: Abilities.FILTER,
[Species.ROWLET]: Abilities.SNIPER,
- [Species.LITTEN]: Abilities.PRANKSTER,
+ [Species.LITTEN]: Abilities.FLAME_BODY,
[Species.POPPLIO]: Abilities.PUNK_ROCK,
[Species.PIKIPEK]: Abilities.ANGER_POINT,
[Species.YUNGOOS]: Abilities.HUGE_POWER,
@@ -3547,39 +3577,39 @@ export const starterPassiveAbilities = {
[Species.KOMALA]: Abilities.GUTS,
[Species.TURTONATOR]: Abilities.ANGER_SHELL,
[Species.TOGEDEMARU]: Abilities.STATIC,
- [Species.MIMIKYU]: Abilities.CURSED_BODY,
+ [Species.MIMIKYU]: Abilities.TOUGH_CLAWS,
[Species.BRUXISH]: Abilities.MULTISCALE,
[Species.DRAMPA]: Abilities.FLASH_FIRE,
[Species.DHELMISE]: Abilities.INFILTRATOR,
[Species.JANGMO_O]: Abilities.DANCER,
- [Species.TAPU_KOKO]: Abilities.GALVANIZE,
- [Species.TAPU_LELE]: Abilities.BERSERK,
- [Species.TAPU_BULU]: Abilities.FLOWER_VEIL,
+ [Species.TAPU_KOKO]: Abilities.TRANSISTOR,
+ [Species.TAPU_LELE]: Abilities.SHEER_FORCE,
+ [Species.TAPU_BULU]: Abilities.GRASS_PELT,
[Species.TAPU_FINI]: Abilities.FAIRY_AURA,
[Species.COSMOG]: Abilities.BEAST_BOOST,
- [Species.NIHILEGO]: Abilities.POISON_PUPPETEER,
+ [Species.NIHILEGO]: Abilities.LEVITATE,
[Species.BUZZWOLE]: Abilities.MOXIE,
- [Species.PHEROMOSA]: Abilities.MOXIE,
- [Species.XURKITREE]: Abilities.LIGHTNING_ROD,
- [Species.CELESTEELA]: Abilities.CHLOROPHYLL,
+ [Species.PHEROMOSA]: Abilities.TINTED_LENS,
+ [Species.XURKITREE]: Abilities.TRANSISTOR,
+ [Species.CELESTEELA]: Abilities.HEATPROOF,
[Species.KARTANA]: Abilities.SHARPNESS,
- [Species.GUZZLORD]: Abilities.GLUTTONY,
+ [Species.GUZZLORD]: Abilities.INNARDS_OUT,
[Species.NECROZMA]: Abilities.BEAST_BOOST,
[Species.MAGEARNA]: Abilities.STEELY_SPIRIT,
[Species.MARSHADOW]: Abilities.IRON_FIST,
- [Species.POIPOLE]: Abilities.MERCILESS,
- [Species.STAKATAKA]: Abilities.DAUNTLESS_SHIELD,
+ [Species.POIPOLE]: Abilities.SHEER_FORCE,
+ [Species.STAKATAKA]: Abilities.SOLID_ROCK,
[Species.BLACEPHALON]: Abilities.MAGIC_GUARD,
- [Species.ZERAORA]: Abilities.MOTOR_DRIVE,
- [Species.MELTAN]: Abilities.FULL_METAL_BODY,
+ [Species.ZERAORA]: Abilities.TOUGH_CLAWS,
+ [Species.MELTAN]: Abilities.STEELY_SPIRIT,
[Species.GROOKEY]: Abilities.GRASS_PELT,
[Species.SCORBUNNY]: Abilities.RECKLESS,
[Species.SOBBLE]: Abilities.SUPER_LUCK,
[Species.SKWOVET]: Abilities.HONEY_GATHER,
[Species.ROOKIDEE]: Abilities.IRON_BARBS,
- [Species.BLIPBUG]: Abilities.TINTED_LENS,
+ [Species.BLIPBUG]: Abilities.PSYCHIC_SURGE,
[Species.NICKIT]: Abilities.INTIMIDATE,
- [Species.GOSSIFLEUR]: Abilities.STORM_DRAIN,
+ [Species.GOSSIFLEUR]: Abilities.GRASSY_SURGE,
[Species.WOOLOO]: Abilities.ROCK_HEAD,
[Species.CHEWTLE]: Abilities.ROCK_HEAD,
[Species.YAMPER]: Abilities.STAKEOUT,
@@ -3594,7 +3624,7 @@ export const starterPassiveAbilities = {
[Species.SINISTEA]: Abilities.WATER_ABSORB,
[Species.HATENNA]: Abilities.MAGIC_GUARD,
[Species.IMPIDIMP]: Abilities.TANGLING_HAIR,
- [Species.MILCERY]: Abilities.WELL_BAKED_BODY,
+ [Species.MILCERY]: Abilities.MISTY_SURGE,
[Species.FALINKS]: Abilities.MOXIE,
[Species.PINCURCHIN]: Abilities.IRON_BARBS,
[Species.SNOM]: Abilities.SNOW_WARNING,
@@ -3609,17 +3639,17 @@ export const starterPassiveAbilities = {
[Species.ARCTOVISH]: Abilities.STRONG_JAW,
[Species.DURALUDON]: Abilities.MEGA_LAUNCHER,
[Species.DREEPY]: Abilities.PARENTAL_BOND,
- [Species.ZACIAN]: Abilities.GUARD_DOG,
- [Species.ZAMAZENTA]: Abilities.GUARD_DOG,
+ [Species.ZACIAN]: Abilities.UNNERVE,
+ [Species.ZAMAZENTA]: Abilities.STAMINA,
[Species.ETERNATUS]: Abilities.SUPREME_OVERLORD,
[Species.KUBFU]: Abilities.IRON_FIST,
- [Species.ZARUDE]: Abilities.PRANKSTER,
- [Species.REGIELEKI]: Abilities.LEVITATE,
- [Species.REGIDRAGO]: Abilities.INTIMIDATE,
+ [Species.ZARUDE]: Abilities.GRASSY_SURGE,
+ [Species.REGIELEKI]: Abilities.ELECTRIC_SURGE,
+ [Species.REGIDRAGO]: Abilities.MULTISCALE,
[Species.GLASTRIER]: Abilities.FILTER,
- [Species.SPECTRIER]: Abilities.PERISH_BODY,
+ [Species.SPECTRIER]: Abilities.SHADOW_SHIELD,
[Species.CALYREX]: Abilities.HARVEST,
- [Species.ENAMORUS]: Abilities.PRANKSTER,
+ [Species.ENAMORUS]: Abilities.FAIRY_AURA,
[Species.SPRIGATITO]: Abilities.MAGICIAN,
[Species.FUECOCO]: Abilities.EARTH_EATER,
[Species.QUAXLY]: Abilities.DANCER,
@@ -3644,9 +3674,9 @@ export const starterPassiveAbilities = {
[Species.RELLOR]: Abilities.MAGIC_GUARD,
[Species.FLITTLE]: Abilities.COMPETITIVE,
[Species.TINKATINK]: Abilities.HUGE_POWER,
- [Species.WIGLETT]: Abilities.STORM_DRAIN,
+ [Species.WIGLETT]: Abilities.STURDY,
[Species.BOMBIRDIER]: Abilities.UNAWARE,
- [Species.FINIZEN]: Abilities.LIQUID_VOICE,
+ [Species.FINIZEN]: Abilities.IRON_FIST,
[Species.VAROOM]: Abilities.SPEED_BOOST,
[Species.CYCLIZAR]: Abilities.PROTEAN,
[Species.ORTHWORM]: Abilities.HEATPROOF,
@@ -3658,55 +3688,55 @@ export const starterPassiveAbilities = {
[Species.DONDOZO]: Abilities.GLUTTONY,
[Species.TATSUGIRI]: Abilities.WATER_BUBBLE,
[Species.GREAT_TUSK]: Abilities.INTIMIDATE,
- [Species.SCREAM_TAIL]: Abilities.PIXILATE,
+ [Species.SCREAM_TAIL]: Abilities.UNAWARE,
[Species.BRUTE_BONNET]: Abilities.BEAST_BOOST,
[Species.FLUTTER_MANE]: Abilities.DAZZLING,
- [Species.SLITHER_WING]: Abilities.MOXIE,
+ [Species.SLITHER_WING]: Abilities.SCRAPPY,
[Species.SANDY_SHOCKS]: Abilities.EARTH_EATER,
- [Species.IRON_TREADS]: Abilities.BULLETPROOF,
+ [Species.IRON_TREADS]: Abilities.STEELY_SPIRIT,
[Species.IRON_BUNDLE]: Abilities.SNOW_WARNING,
[Species.IRON_HANDS]: Abilities.IRON_FIST,
- [Species.IRON_JUGULIS]: Abilities.NO_GUARD,
+ [Species.IRON_JUGULIS]: Abilities.AERILATE,
[Species.IRON_MOTH]: Abilities.LEVITATE,
[Species.IRON_THORNS]: Abilities.SAND_STREAM,
[Species.FRIGIBAX]: Abilities.THICK_FAT,
[Species.GIMMIGHOUL]: Abilities.SUPER_LUCK,
- [Species.WO_CHIEN]: Abilities.TRIAGE,
- [Species.CHIEN_PAO]: Abilities.REFRIGERATE,
+ [Species.WO_CHIEN]: Abilities.GRASSY_SURGE,
+ [Species.CHIEN_PAO]: Abilities.INTREPID_SWORD,
[Species.TING_LU]: Abilities.STAMINA,
- [Species.CHI_YU]: Abilities.BLAZE,
- [Species.ROARING_MOON]: Abilities.AERILATE,
+ [Species.CHI_YU]: Abilities.DROUGHT,
+ [Species.ROARING_MOON]: Abilities.TOUGH_CLAWS,
[Species.IRON_VALIANT]: Abilities.DOWNLOAD,
[Species.KORAIDON]: Abilities.PROTOSYNTHESIS,
[Species.MIRAIDON]: Abilities.QUARK_DRIVE,
[Species.WALKING_WAKE]: Abilities.BEAST_BOOST,
[Species.IRON_LEAVES]: Abilities.SHARPNESS,
[Species.POLTCHAGEIST]: Abilities.FLAME_BODY,
- [Species.OKIDOGI]: Abilities.INTIMIDATE,
- [Species.MUNKIDORI]: Abilities.PRANKSTER,
- [Species.FEZANDIPITI]: Abilities.DAZZLING,
+ [Species.OKIDOGI]: Abilities.FUR_COAT,
+ [Species.MUNKIDORI]: Abilities.NEUROFORCE,
+ [Species.FEZANDIPITI]: Abilities.LEVITATE,
[Species.OGERPON]: Abilities.OPPORTUNIST,
[Species.GOUGING_FIRE]: Abilities.BEAST_BOOST,
[Species.RAGING_BOLT]: Abilities.BEAST_BOOST,
[Species.IRON_BOULDER]: Abilities.SHARPNESS,
[Species.IRON_CROWN]: Abilities.SHARPNESS,
- [Species.TERAPAGOS]: Abilities.PROTEAN,
- [Species.PECHARUNT]: Abilities.CORROSION,
+ [Species.TERAPAGOS]: Abilities.REGENERATOR,
+ [Species.PECHARUNT]: Abilities.TOXIC_CHAIN,
[Species.ALOLA_RATTATA]: Abilities.CHEEK_POUCH,
[Species.ALOLA_SANDSHREW]: Abilities.ICE_BODY,
[Species.ALOLA_VULPIX]: Abilities.ICE_BODY,
- [Species.ALOLA_DIGLETT]: Abilities.CUTE_CHARM,
+ [Species.ALOLA_DIGLETT]: Abilities.STURDY,
[Species.ALOLA_MEOWTH]: Abilities.UNNERVE,
[Species.ALOLA_GEODUDE]: Abilities.ELECTROMORPHOSIS,
[Species.ALOLA_GRIMER]: Abilities.MERCILESS,
[Species.ETERNAL_FLOETTE]: Abilities.MAGIC_GUARD,
[Species.GALAR_MEOWTH]: Abilities.SUPER_LUCK,
- [Species.GALAR_PONYTA]: Abilities.MAGIC_GUARD,
+ [Species.GALAR_PONYTA]: Abilities.PIXILATE,
[Species.GALAR_SLOWPOKE]: Abilities.POISON_TOUCH,
[Species.GALAR_FARFETCHD]: Abilities.SUPER_LUCK,
[Species.GALAR_ARTICUNO]: Abilities.SERENE_GRACE,
[Species.GALAR_ZAPDOS]: Abilities.TOUGH_CLAWS,
- [Species.GALAR_MOLTRES]: Abilities.REGENERATOR,
+ [Species.GALAR_MOLTRES]: Abilities.DARK_AURA,
[Species.GALAR_CORSOLA]: Abilities.SHADOW_TAG,
[Species.GALAR_ZIGZAGOON]: Abilities.PICKPOCKET,
[Species.GALAR_DARUMAKA]: Abilities.FLASH_FIRE,
diff --git a/src/data/splash-messages.ts b/src/data/splash-messages.ts
index 11629cf05..198ff07ce 100644
--- a/src/data/splash-messages.ts
+++ b/src/data/splash-messages.ts
@@ -33,6 +33,5 @@ splashMessages.push(...[
'Also Try Emerald Rogue!',
'Also Try Radical Red!',
'Eevee Expo!',
- 'YNOproject!',
- 'Shh, don\'t tell Sam!'
+ 'YNOproject!'
]);
\ No newline at end of file
diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts
index 4ae095265..c14d49a32 100644
--- a/src/data/status-effect.ts
+++ b/src/data/status-effect.ts
@@ -134,4 +134,44 @@ export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect):
}
return 1;
+}
+
+/**
+* Returns a random non-volatile StatusEffect
+*/
+export function generateRandomStatusEffect(): StatusEffect {
+ return Utils.randIntRange(1, 6);
+}
+
+/**
+* Returns a random non-volatile StatusEffect between the two provided
+* @param statusEffectA The first StatusEffect
+* @param statusEffectA The second StatusEffect
+*/
+export function getRandomStatusEffect(statusEffectA: StatusEffect, statusEffectB: StatusEffect): StatusEffect {
+ if (statusEffectA === StatusEffect.NONE || statusEffectA === StatusEffect.FAINT) {
+ return statusEffectB;
+ }
+ if (statusEffectB === StatusEffect.NONE || statusEffectB === StatusEffect.FAINT) {
+ return statusEffectA;
+ }
+
+ return Utils.randIntRange(0, 2) ? statusEffectA : statusEffectB;
+}
+
+/**
+* Returns a random non-volatile StatusEffect between the two provided
+* @param statusA The first Status
+* @param statusB The second Status
+*/
+export function getRandomStatus(statusA: Status, statusB: Status): Status {
+ if (statusA === undefined || statusA.effect === StatusEffect.NONE || statusA.effect === StatusEffect.FAINT) {
+ return statusB;
+ }
+ if (statusB === undefined || statusB.effect === StatusEffect.NONE || statusB.effect === StatusEffect.FAINT) {
+ return statusA;
+ }
+
+
+ return Utils.randIntRange(0, 2) ? statusA : statusB;
}
\ No newline at end of file
diff --git a/src/data/terrain.ts b/src/data/terrain.ts
index 48ffc1c68..c0328d98d 100644
--- a/src/data/terrain.ts
+++ b/src/data/terrain.ts
@@ -4,6 +4,7 @@ import { Type } from "./type";
import * as Utils from "../utils";
import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability";
import { ProtectAttr } from "./move";
+import { BattlerIndex } from "#app/battle.js";
export enum TerrainType {
NONE,
@@ -48,13 +49,13 @@ export class Terrain {
return 1;
}
- isMoveTerrainCancelled(user: Pokemon, move: Move): boolean {
+ isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean {
switch (this.terrainType) {
case TerrainType.PSYCHIC:
- if (!move.getAttrs(ProtectAttr).length){
+ if (!move.getAttrs(ProtectAttr).length) {
const priority = new Utils.IntegerHolder(move.priority);
applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority);
- return priority.value > 0;
+ return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0;
}
}
diff --git a/src/data/tms.ts b/src/data/tms.ts
index 71264d16c..eeccd9310 100644
--- a/src/data/tms.ts
+++ b/src/data/tms.ts
@@ -29550,7 +29550,6 @@ export const tmSpecies: TmSpecies = {
Species.MURKROW,
Species.SLOWKING,
Species.MISDREAVUS,
- Species.UNOWN,
Species.GIRAFARIG,
Species.PINECO,
Species.FORRETRESS,
@@ -51856,7 +51855,6 @@ export const tmSpecies: TmSpecies = {
Species.MABOSSTIFF,
Species.BOMBIRDIER,
Species.WALKING_WAKE,
- Species.PIKACHU,
Species.ALOLA_SANDSHREW,
Species.ALOLA_SANDSLASH,
Species.ALOLA_DIGLETT,
@@ -60030,6 +60028,7 @@ export const tmSpecies: TmSpecies = {
Species.SHARPEDO,
Species.SEVIPER,
Species.SALAMENCE,
+ Species.METAGROSS,
Species.SHINX,
Species.LUXIO,
Species.LUXRAY,
@@ -62012,21 +62011,49 @@ export const tmSpecies: TmSpecies = {
Species.ALOLA_MAROWAK,
],
[Moves.TERA_BLAST]: [
+ Species.BULBASAUR,
+ Species.IVYSAUR,
+ Species.VENUSAUR,
Species.CHARMANDER,
Species.CHARMELEON,
Species.CHARIZARD,
+ Species.SQUIRTLE,
+ Species.WARTORTLE,
+ Species.BLASTOISE,
+ Species.BUTTERFREE,
+ Species.BEEDRILL,
+ Species.PIDGEY,
+ Species.PIDGEOTTO,
+ Species.PIDGEOT,
+ Species.RATTATA,
+ Species.RATICATE,
+ Species.SPEAROW,
+ Species.FEAROW,
Species.EKANS,
Species.ARBOK,
Species.PIKACHU,
Species.RAICHU,
Species.SANDSHREW,
Species.SANDSLASH,
+ Species.NIDORAN_F,
+ Species.NIDORINA,
+ Species.NIDOQUEEN,
+ Species.NIDORAN_M,
+ Species.NIDORINO,
+ Species.NIDOKING,
Species.CLEFAIRY,
Species.CLEFABLE,
Species.VULPIX,
Species.NINETALES,
Species.JIGGLYPUFF,
Species.WIGGLYTUFF,
+ Species.ZUBAT,
+ Species.GOLBAT,
+ Species.ODDISH,
+ Species.GLOOM,
+ Species.VILEPLUME,
+ Species.PARAS,
+ Species.PARASECT,
Species.VENONAT,
Species.VENOMOTH,
Species.DIGLETT,
@@ -62042,16 +62069,31 @@ export const tmSpecies: TmSpecies = {
Species.POLIWAG,
Species.POLIWHIRL,
Species.POLIWRATH,
+ Species.ABRA,
+ Species.KADABRA,
+ Species.ALAKAZAM,
+ Species.MACHOP,
+ Species.MACHOKE,
+ Species.MACHAMP,
Species.BELLSPROUT,
Species.WEEPINBELL,
Species.VICTREEBEL,
+ Species.TENTACOOL,
+ Species.TENTACRUEL,
Species.GEODUDE,
Species.GRAVELER,
Species.GOLEM,
+ Species.PONYTA,
+ Species.RAPIDASH,
Species.SLOWPOKE,
Species.SLOWBRO,
Species.MAGNEMITE,
Species.MAGNETON,
+ Species.FARFETCHD,
+ Species.DODUO,
+ Species.DODRIO,
+ Species.SEEL,
+ Species.DEWGONG,
Species.GRIMER,
Species.MUK,
Species.SHELLDER,
@@ -62059,20 +62101,52 @@ export const tmSpecies: TmSpecies = {
Species.GASTLY,
Species.HAUNTER,
Species.GENGAR,
+ Species.ONIX,
Species.DROWZEE,
Species.HYPNO,
+ Species.KRABBY,
+ Species.KINGLER,
Species.VOLTORB,
Species.ELECTRODE,
+ Species.EXEGGCUTE,
+ Species.EXEGGUTOR,
+ Species.CUBONE,
+ Species.MAROWAK,
+ Species.HITMONLEE,
+ Species.HITMONCHAN,
+ Species.LICKITUNG,
Species.KOFFING,
Species.WEEZING,
+ Species.RHYHORN,
+ Species.RHYDON,
Species.CHANSEY,
+ Species.TANGELA,
+ Species.KANGASKHAN,
+ Species.HORSEA,
+ Species.SEADRA,
+ Species.GOLDEEN,
+ Species.SEAKING,
+ Species.STARYU,
+ Species.STARMIE,
+ Species.MR_MIME,
Species.SCYTHER,
+ Species.JYNX,
+ Species.ELECTABUZZ,
+ Species.MAGMAR,
+ Species.PINSIR,
Species.TAUROS,
Species.GYARADOS,
+ Species.LAPRAS,
Species.EEVEE,
Species.VAPOREON,
Species.JOLTEON,
Species.FLAREON,
+ Species.PORYGON,
+ Species.OMANYTE,
+ Species.OMASTAR,
+ Species.KABUTO,
+ Species.KABUTOPS,
+ Species.AERODACTYL,
Species.SNORLAX,
Species.ARTICUNO,
Species.ZAPDOS,
@@ -62082,21 +62156,37 @@ export const tmSpecies: TmSpecies = {
Species.DRAGONITE,
Species.MEWTWO,
Species.MEW,
+ Species.CHIKORITA,
+ Species.BAYLEEF,
+ Species.MEGANIUM,
Species.CYNDAQUIL,
Species.QUILAVA,
Species.TYPHLOSION,
+ Species.TOTODILE,
+ Species.CROCONAW,
+ Species.FERALIGATR,
Species.SENTRET,
Species.FURRET,
Species.HOOTHOOT,
Species.NOCTOWL,
+ Species.LEDYBA,
+ Species.LEDIAN,
Species.SPINARAK,
Species.ARIADOS,
+ Species.CROBAT,
+ Species.CHINCHOU,
+ Species.LANTURN,
Species.PICHU,
Species.CLEFFA,
Species.IGGLYBUFF,
+ Species.TOGEPI,
+ Species.TOGETIC,
+ Species.NATU,
+ Species.XATU,
Species.MAREEP,
Species.FLAAFFY,
Species.AMPHAROS,
+ Species.BELLOSSOM,
Species.MARILL,
Species.AZUMARILL,
Species.SUDOWOODO,
@@ -62120,8 +62210,12 @@ export const tmSpecies: TmSpecies = {
Species.FORRETRESS,
Species.DUNSPARCE,
Species.GLIGAR,
+ Species.STEELIX,
+ Species.SNUBBULL,
+ Species.GRANBULL,
Species.QWILFISH,
Species.SCIZOR,
+ Species.SHUCKLE,
Species.HERACROSS,
Species.SNEASEL,
Species.TEDDIURSA,
@@ -62130,24 +62224,58 @@ export const tmSpecies: TmSpecies = {
Species.MAGCARGO,
Species.SWINUB,
Species.PILOSWINE,
+ Species.CORSOLA,
+ Species.REMORAID,
+ Species.OCTILLERY,
Species.DELIBIRD,
+ Species.MANTINE,
+ Species.SKARMORY,
Species.HOUNDOUR,
Species.HOUNDOOM,
+ Species.KINGDRA,
Species.PHANPY,
Species.DONPHAN,
+ Species.PORYGON2,
Species.STANTLER,
+ Species.TYROGUE,
+ Species.HITMONTOP,
+ Species.SMOOCHUM,
+ Species.ELEKID,
+ Species.MAGBY,
+ Species.MILTANK,
Species.BLISSEY,
+ Species.RAIKOU,
+ Species.ENTEI,
+ Species.SUICUNE,
Species.LARVITAR,
Species.PUPITAR,
Species.TYRANITAR,
+ Species.LUGIA,
+ Species.HO_OH,
+ Species.CELEBI,
+ Species.TREECKO,
+ Species.GROVYLE,
+ Species.SCEPTILE,
+ Species.TORCHIC,
+ Species.COMBUSKEN,
+ Species.BLAZIKEN,
+ Species.MUDKIP,
+ Species.MARSHTOMP,
+ Species.SWAMPERT,
Species.POOCHYENA,
Species.MIGHTYENA,
+ Species.ZIGZAGOON,
+ Species.LINOONE,
+ Species.BEAUTIFLY,
+ Species.DUSTOX,
Species.LOTAD,
Species.LOMBRE,
Species.LUDICOLO,
Species.SEEDOT,
Species.NUZLEAF,
Species.SHIFTRY,
+ Species.TAILLOW,
+ Species.SWELLOW,
Species.WINGULL,
Species.PELIPPER,
Species.RALTS,
@@ -62160,49 +62288,101 @@ export const tmSpecies: TmSpecies = {
Species.SLAKOTH,
Species.VIGOROTH,
Species.SLAKING,
+ Species.NINCADA,
+ Species.NINJASK,
+ Species.SHEDINJA,
+ Species.WHISMUR,
+ Species.LOUDRED,
+ Species.EXPLOUD,
Species.MAKUHITA,
Species.HARIYAMA,
Species.AZURILL,
Species.NOSEPASS,
+ Species.SKITTY,
+ Species.DELCATTY,
Species.SABLEYE,
+ Species.MAWILE,
+ Species.ARON,
+ Species.LAIRON,
+ Species.AGGRON,
Species.MEDITITE,
Species.MEDICHAM,
+ Species.ELECTRIKE,
+ Species.MANECTRIC,
+ Species.PLUSLE,
+ Species.MINUN,
Species.VOLBEAT,
Species.ILLUMISE,
+ Species.ROSELIA,
Species.GULPIN,
Species.SWALOT,
+ Species.CARVANHA,
+ Species.SHARPEDO,
+ Species.WAILMER,
+ Species.WAILORD,
Species.NUMEL,
Species.CAMERUPT,
Species.TORKOAL,
Species.SPOINK,
Species.GRUMPIG,
+ Species.SPINDA,
+ Species.TRAPINCH,
+ Species.VIBRAVA,
+ Species.FLYGON,
Species.CACNEA,
Species.CACTURNE,
Species.SWABLU,
Species.ALTARIA,
Species.ZANGOOSE,
Species.SEVIPER,
+ Species.LUNATONE,
+ Species.SOLROCK,
Species.BARBOACH,
Species.WHISCASH,
Species.CORPHISH,
Species.CRAWDAUNT,
+ Species.BALTOY,
+ Species.CLAYDOL,
+ Species.LILEEP,
+ Species.CRADILY,
+ Species.ANORITH,
+ Species.ARMALDO,
Species.FEEBAS,
Species.MILOTIC,
+ Species.CASTFORM,
+ Species.KECLEON,
Species.SHUPPET,
Species.BANETTE,
Species.DUSKULL,
Species.DUSCLOPS,
Species.TROPIUS,
Species.CHIMECHO,
+ Species.ABSOL,
Species.SNORUNT,
Species.GLALIE,
+ Species.SPHEAL,
+ Species.SEALEO,
+ Species.WALREIN,
+ Species.CLAMPERL,
+ Species.HUNTAIL,
+ Species.GOREBYSS,
+ Species.RELICANTH,
Species.LUVDISC,
Species.BAGON,
Species.SHELGON,
Species.SALAMENCE,
+ Species.METANG,
+ Species.METAGROSS,
+ Species.REGIROCK,
+ Species.REGICE,
+ Species.REGISTEEL,
+ Species.LATIAS,
+ Species.LATIOS,
Species.KYOGRE,
Species.GROUDON,
Species.RAYQUAZA,
+ Species.JIRACHI,
+ Species.DEOXYS,
Species.TURTWIG,
Species.GROTLE,
Species.TORTERRA,
@@ -62215,30 +62395,49 @@ export const tmSpecies: TmSpecies = {
Species.STARLY,
Species.STARAVIA,
Species.STARAPTOR,
+ Species.BIDOOF,
+ Species.BIBAREL,
Species.KRICKETOT,
Species.KRICKETUNE,
Species.SHINX,
Species.LUXIO,
Species.LUXRAY,
+ Species.BUDEW,
+ Species.ROSERADE,
+ Species.CRANIDOS,
+ Species.RAMPARDOS,
+ Species.SHIELDON,
+ Species.BASTIODON,
+ Species.BURMY,
+ Species.WORMADAM,
+ Species.MOTHIM,
Species.COMBEE,
Species.VESPIQUEN,
Species.PACHIRISU,
Species.BUIZEL,
Species.FLOATZEL,
+ Species.CHERUBI,
+ Species.CHERRIM,
Species.SHELLOS,
Species.GASTRODON,
Species.AMBIPOM,
Species.DRIFLOON,
Species.DRIFBLIM,
+ Species.BUNEARY,
+ Species.LOPUNNY,
Species.MISMAGIUS,
Species.HONCHKROW,
+ Species.GLAMEOW,
+ Species.PURUGLY,
Species.CHINGLING,
Species.STUNKY,
Species.SKUNTANK,
Species.BRONZOR,
Species.BRONZONG,
Species.BONSLY,
+ Species.MIME_JR,
Species.HAPPINY,
+ Species.CHATOT,
Species.SPIRITOMB,
Species.GIBLE,
Species.GABITE,
@@ -62248,19 +62447,30 @@ export const tmSpecies: TmSpecies = {
Species.LUCARIO,
Species.HIPPOPOTAS,
Species.HIPPOWDON,
+ Species.SKORUPI,
+ Species.DRAPION,
Species.CROAGUNK,
Species.TOXICROAK,
+ Species.CARNIVINE,
Species.FINNEON,
Species.LUMINEON,
+ Species.MANTYKE,
Species.SNOVER,
Species.ABOMASNOW,
Species.WEAVILE,
Species.MAGNEZONE,
+ Species.LICKILICKY,
+ Species.RHYPERIOR,
+ Species.TANGROWTH,
+ Species.ELECTIVIRE,
+ Species.MAGMORTAR,
+ Species.TOGEKISS,
Species.YANMEGA,
Species.LEAFEON,
Species.GLACEON,
Species.GLISCOR,
Species.MAMOSWINE,
+ Species.PORYGON_Z,
Species.GALLADE,
Species.PROBOPASS,
Species.DUSKNOIR,
@@ -62272,39 +62482,127 @@ export const tmSpecies: TmSpecies = {
Species.DIALGA,
Species.PALKIA,
Species.HEATRAN,
+ Species.REGIGIGAS,
Species.GIRATINA,
Species.CRESSELIA,
+ Species.PHIONE,
+ Species.MANAPHY,
+ Species.DARKRAI,
+ Species.SHAYMIN,
Species.ARCEUS,
+ Species.VICTINI,
+ Species.SNIVY,
+ Species.SERVINE,
+ Species.SERPERIOR,
+ Species.TEPIG,
+ Species.PIGNITE,
+ Species.EMBOAR,
Species.OSHAWOTT,
Species.DEWOTT,
Species.SAMUROTT,
+ Species.PATRAT,
+ Species.WATCHOG,
+ Species.LILLIPUP,
+ Species.HERDIER,
+ Species.STOUTLAND,
+ Species.PURRLOIN,
+ Species.LIEPARD,
+ Species.PANSAGE,
+ Species.SIMISAGE,
+ Species.PANSEAR,
+ Species.SIMISEAR,
+ Species.PANPOUR,
+ Species.SIMIPOUR,
+ Species.MUNNA,
+ Species.MUSHARNA,
+ Species.PIDOVE,
+ Species.TRANQUILL,
+ Species.UNFEZANT,
+ Species.BLITZLE,
+ Species.ZEBSTRIKA,
+ Species.ROGGENROLA,
+ Species.BOLDORE,
+ Species.GIGALITH,
+ Species.WOOBAT,
+ Species.SWOOBAT,
+ Species.DRILBUR,
+ Species.EXCADRILL,
+ Species.AUDINO,
Species.TIMBURR,
Species.GURDURR,
Species.CONKELDURR,
+ Species.TYMPOLE,
+ Species.PALPITOAD,
+ Species.SEISMITOAD,
+ Species.THROH,
+ Species.SAWK,
Species.SEWADDLE,
Species.SWADLOON,
Species.LEAVANNY,
+ Species.VENIPEDE,
+ Species.WHIRLIPEDE,
+ Species.SCOLIPEDE,
+ Species.COTTONEE,
+ Species.WHIMSICOTT,
Species.PETILIL,
Species.LILLIGANT,
Species.BASCULIN,
Species.SANDILE,
Species.KROKOROK,
Species.KROOKODILE,
+ Species.DARUMAKA,
+ Species.DARMANITAN,
+ Species.MARACTUS,
+ Species.DWEBBLE,
+ Species.CRUSTLE,
+ Species.SCRAGGY,
+ Species.SCRAFTY,
+ Species.SIGILYPH,
+ Species.YAMASK,
+ Species.COFAGRIGUS,
+ Species.TIRTOUGA,
+ Species.CARRACOSTA,
+ Species.ARCHEN,
+ Species.ARCHEOPS,
+ Species.TRUBBISH,
+ Species.GARBODOR,
Species.ZORUA,
Species.ZOROARK,
+ Species.MINCCINO,
+ Species.CINCCINO,
Species.GOTHITA,
Species.GOTHORITA,
Species.GOTHITELLE,
+ Species.SOLOSIS,
+ Species.DUOSION,
+ Species.REUNICLUS,
Species.DUCKLETT,
Species.SWANNA,
+ Species.VANILLITE,
+ Species.VANILLISH,
+ Species.VANILLUXE,
Species.DEERLING,
Species.SAWSBUCK,
+ Species.EMOLGA,
+ Species.KARRABLAST,
+ Species.ESCAVALIER,
Species.FOONGUS,
Species.AMOONGUSS,
+ Species.FRILLISH,
+ Species.JELLICENT,
Species.ALOMOMOLA,
+ Species.JOLTIK,
+ Species.GALVANTULA,
+ Species.FERROSEED,
+ Species.FERROTHORN,
+ Species.KLINK,
+ Species.KLANG,
+ Species.KLINKLANG,
Species.TYNAMO,
Species.EELEKTRIK,
Species.EELEKTROSS,
+ Species.ELGYEM,
+ Species.BEHEEYEM,
Species.LITWICK,
Species.LAMPENT,
Species.CHANDELURE,
@@ -62314,23 +62612,40 @@ export const tmSpecies: TmSpecies = {
Species.CUBCHOO,
Species.BEARTIC,
Species.CRYOGONAL,
+ Species.SHELMET,
+ Species.ACCELGOR,
+ Species.STUNFISK,
Species.MIENFOO,
Species.MIENSHAO,
+ Species.DRUDDIGON,
+ Species.GOLETT,
+ Species.GOLURK,
Species.PAWNIARD,
Species.BISHARP,
+ Species.BOUFFALANT,
Species.RUFFLET,
Species.BRAVIARY,
Species.VULLABY,
Species.MANDIBUZZ,
+ Species.HEATMOR,
+ Species.DURANT,
Species.DEINO,
Species.ZWEILOUS,
Species.HYDREIGON,
Species.LARVESTA,
Species.VOLCARONA,
+ Species.COBALION,
+ Species.TERRAKION,
+ Species.VIRIZION,
Species.TORNADUS,
Species.THUNDURUS,
+ Species.RESHIRAM,
+ Species.ZEKROM,
Species.LANDORUS,
+ Species.KYUREM,
+ Species.KELDEO,
Species.MELOETTA,
+ Species.GENESECT,
Species.CHESPIN,
Species.QUILLADIN,
Species.CHESNAUGHT,
@@ -62345,6 +62660,8 @@ export const tmSpecies: TmSpecies = {
'battle-bond',
'ash',
],
+ Species.BUNNELBY,
+ Species.DIGGERSBY,
Species.FLETCHLING,
Species.FLETCHINDER,
Species.TALONFLAME,
@@ -62354,14 +62671,43 @@ export const tmSpecies: TmSpecies = {
Species.LITLEO,
Species.PYROAR,
Species.FLABEBE,
- Species.FLOETTE,
+ [
+ Species.FLOETTE,
+ 'red',
+ 'yellow',
+ 'orange',
+ 'blue',
+ 'white',
+ ],
Species.FLORGES,
Species.SKIDDO,
Species.GOGOAT,
+ Species.PANCHAM,
+ Species.PANGORO,
+ Species.FURFROU,
+ Species.ESPURR,
+ Species.MEOWSTIC,
+ Species.HONEDGE,
+ Species.DOUBLADE,
+ Species.AEGISLASH,
+ Species.SPRITZEE,
+ Species.AROMATISSE,
+ Species.SWIRLIX,
+ Species.SLURPUFF,
+ Species.INKAY,
+ Species.MALAMAR,
+ Species.BINACLE,
+ Species.BARBARACLE,
Species.SKRELP,
Species.DRAGALGE,
Species.CLAUNCHER,
Species.CLAWITZER,
+ Species.HELIOPTILE,
+ Species.HELIOLISK,
+ Species.TYRUNT,
+ Species.TYRANTRUM,
+ Species.AMAURA,
+ Species.AURORUS,
Species.SYLVEON,
Species.HAWLUCHA,
Species.DEDENNE,
@@ -62372,16 +62718,30 @@ export const tmSpecies: TmSpecies = {
Species.KLEFKI,
Species.PHANTUMP,
Species.TREVENANT,
+ Species.PUMPKABOO,
+ Species.GOURGEIST,
Species.BERGMITE,
Species.AVALUGG,
Species.NOIBAT,
Species.NOIVERN,
+ Species.XERNEAS,
+ Species.YVELTAL,
+ Species.ZYGARDE,
Species.DIANCIE,
Species.HOOPA,
Species.VOLCANION,
Species.ROWLET,
Species.DARTRIX,
Species.DECIDUEYE,
+ Species.LITTEN,
+ Species.TORRACAT,
+ Species.INCINEROAR,
+ Species.POPPLIO,
+ Species.BRIONNE,
+ Species.PRIMARINA,
+ Species.PIKIPEK,
+ Species.TRUMBEAK,
+ Species.TOUCANNON,
Species.YUNGOOS,
Species.GUMSHOOS,
Species.GRUBBIN,
@@ -62394,28 +62754,84 @@ export const tmSpecies: TmSpecies = {
Species.RIBOMBEE,
Species.ROCKRUFF,
Species.LYCANROC,
+ Species.WISHIWASHI,
Species.MAREANIE,
Species.TOXAPEX,
Species.MUDBRAY,
Species.MUDSDALE,
+ Species.DEWPIDER,
+ Species.ARAQUANID,
Species.FOMANTIS,
Species.LURANTIS,
+ Species.MORELULL,
+ Species.SHIINOTIC,
Species.SALANDIT,
Species.SALAZZLE,
+ Species.STUFFUL,
+ Species.BEWEAR,
Species.BOUNSWEET,
Species.STEENEE,
Species.TSAREENA,
+ Species.COMFEY,
Species.ORANGURU,
Species.PASSIMIAN,
+ Species.WIMPOD,
+ Species.GOLISOPOD,
Species.SANDYGAST,
Species.PALOSSAND,
+ Species.TYPE_NULL,
+ Species.SILVALLY,
+ Species.MINIOR,
Species.KOMALA,
+ Species.TURTONATOR,
+ Species.TOGEDEMARU,
Species.MIMIKYU,
Species.BRUXISH,
+ Species.DRAMPA,
+ Species.DHELMISE,
Species.JANGMO_O,
Species.HAKAMO_O,
Species.KOMMO_O,
+ Species.TAPU_KOKO,
+ Species.TAPU_LELE,
+ Species.TAPU_BULU,
+ Species.TAPU_FINI,
+ Species.SOLGALEO,
+ Species.LUNALA,
+ Species.NIHILEGO,
+ Species.BUZZWOLE,
+ Species.PHEROMOSA,
+ Species.XURKITREE,
+ Species.CELESTEELA,
+ Species.KARTANA,
+ Species.GUZZLORD,
+ Species.NECROZMA,
Species.MAGEARNA,
+ Species.MARSHADOW,
+ Species.POIPOLE,
+ Species.NAGANADEL,
+ Species.STAKATAKA,
+ Species.BLACEPHALON,
+ Species.ZERAORA,
+ Species.ALOLA_RATTATA,
+ Species.ALOLA_RATICATE,
+ Species.ALOLA_RAICHU,
+ Species.ALOLA_SANDSHREW,
+ Species.ALOLA_SANDSLASH,
+ Species.ALOLA_VULPIX,
+ Species.ALOLA_NINETALES,
+ Species.ALOLA_DIGLETT,
+ Species.ALOLA_DUGTRIO,
+ Species.ALOLA_MEOWTH,
+ Species.ALOLA_PERSIAN,
+ Species.ALOLA_GEODUDE,
+ Species.ALOLA_GRAVELER,
+ Species.ALOLA_GOLEM,
+ Species.ALOLA_GRIMER,
+ Species.ALOLA_MUK,
+ Species.ALOLA_EXEGGUTOR,
+ Species.ALOLA_MAROWAK,
+ Species.ETERNAL_FLOETTE,
Species.GROOKEY,
Species.THWACKEY,
Species.RILLABOOM,
@@ -62596,21 +63012,6 @@ export const tmSpecies: TmSpecies = {
Species.MUNKIDORI,
Species.FEZANDIPITI,
Species.OGERPON,
- Species.ALOLA_RAICHU,
- Species.ALOLA_SANDSHREW,
- Species.ALOLA_SANDSLASH,
- Species.ALOLA_VULPIX,
- Species.ALOLA_NINETALES,
- Species.ALOLA_DIGLETT,
- Species.ALOLA_DUGTRIO,
- Species.ALOLA_MEOWTH,
- Species.ALOLA_PERSIAN,
- Species.ALOLA_GEODUDE,
- Species.ALOLA_GRAVELER,
- Species.ALOLA_GOLEM,
- Species.ALOLA_GRIMER,
- Species.ALOLA_MUK,
- Species.ETERNAL_FLOETTE,
Species.GALAR_MEOWTH,
Species.GALAR_SLOWPOKE,
Species.GALAR_SLOWBRO,
diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts
index 044bd4ec8..36d76edcf 100644
--- a/src/data/trainer-config.ts
+++ b/src/data/trainer-config.ts
@@ -212,7 +212,7 @@ export class TrainerConfig {
this.battleBgm = 'battle_trainer';
this.victoryBgm = 'victory_trainer';
this.partyTemplates = [ trainerPartyTemplates.TWO_AVG ];
- this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.pseudoLegendary && !species.mythical)) && !species.isTrainerForbidden();
+ this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden();
}
getKey(): string {
@@ -509,7 +509,7 @@ function getRandomPartyMemberFunc(speciesPool: Species[], trainerSlot: TrainerSl
function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilter, trainerSlot: TrainerSlot = TrainerSlot.TRAINER, allowLegendaries?: boolean, postProcess?: (EnemyPokemon: EnemyPokemon) => void): PartyMemberFunc {
const originalSpeciesFilter = speciesFilter;
- speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.pseudoLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species);
+ speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species);
return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => {
const ret = scene.addEnemyPokemon(getPokemonSpecies(scene.randomSpecies(scene.currentBattle.waveIndex, level, false, speciesFilter).getTrainerSpeciesForLevel(level, true, strength)), level, trainerSlot, undefined, undefined, postProcess);
return ret;
diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts
index 4cf025e36..348976eae 100644
--- a/src/data/trainer-names.ts
+++ b/src/data/trainer-names.ts
@@ -97,7 +97,7 @@ export const trainerNamePools = {
[TrainerType.MAID]: ["Belinda","Sophie","Emily","Elena","Clare","Alica","Tanya","Tammy"],
[TrainerType.MUSICIAN]: ["Boris","Preston","Charles","Clyde","Vincent","Dalton","Kirk","Shawn","Fabian","Fernando","Joseph","Marcos","Arturo","Jerry","Lonnie","Tony"],
[TrainerType.NURSERY_AIDE]: ["Autumn","Briana","Leah","Miho","Ethel","Hollie","Ilse","June","Kimya","Rosalyn"],
- [TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Sheriff","Raymond"],
+ [TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Raymond"],
[TrainerType.PARASOL_LADY]: ["Angelica","Clarissa","Madeline","Akari","Annabell","Kayley","Rachel","Alexa","Sabrina","April","Gwyneth","Laura","Lumi","Mariah","Melita","Nicole","Tihana","Ingrid","Tyra"],
[TrainerType.PILOT]: ["Chase","Leonard","Ted","Elron","Ewing","Flynn","Winslow"],
[TrainerType.POKEFAN]: [["Alex","Allan","Brandon","Carter","Colin","Derek","Jeremy","Joshua","Rex","Robert","Trevor","William","Colton","Miguel","Francisco","Kaleb","Leonard","Boone","Elliot","Jude","Norbert","Corey","Gabe","Baxter"],["Beverly","Georgia","Jaime","Ruth","Isabel","Marissa","Vanessa","Annika","Bethany","Kimberly","Meredith","Rebekah","Eleanor","Darcy","Lydia","Sachiko","Abigail","Agnes","Lydie","Roisin","Tara","Carmen","Janet"]],
diff --git a/src/data/type.ts b/src/data/type.ts
index 14f9f932a..35c56aecd 100644
--- a/src/data/type.ts
+++ b/src/data/type.ts
@@ -543,4 +543,4 @@ export function getTypeRgb(type: Type): [ integer, integer, integer ] {
default:
return [ 0, 0, 0 ];
}
-}
\ No newline at end of file
+}
diff --git a/src/egg-hatch-phase.ts b/src/egg-hatch-phase.ts
index 19934ad6e..70f2d5f38 100644
--- a/src/egg-hatch-phase.ts
+++ b/src/egg-hatch-phase.ts
@@ -241,10 +241,12 @@ export class EggHatchPhase extends Phase {
doReveal(): void {
const isShiny = this.pokemon.isShiny();
- if (this.pokemon.species.mythical)
- this.scene.validateAchv(achvs.HATCH_MYTHICAL);
+ if (this.pokemon.species.subLegendary)
+ this.scene.validateAchv(achvs.HATCH_SUB_LEGENDARY);
if (this.pokemon.species.legendary)
this.scene.validateAchv(achvs.HATCH_LEGENDARY);
+ if (this.pokemon.species.mythical)
+ this.scene.validateAchv(achvs.HATCH_MYTHICAL);
if (isShiny)
this.scene.validateAchv(achvs.HATCH_SHINY);
this.eggContainer.setVisible(false);
diff --git a/src/enums/buttons.ts b/src/enums/buttons.ts
new file mode 100644
index 000000000..034c5a2af
--- /dev/null
+++ b/src/enums/buttons.ts
@@ -0,0 +1,19 @@
+export enum Button {
+ UP,
+ DOWN,
+ LEFT,
+ RIGHT,
+ SUBMIT,
+ ACTION,
+ CANCEL,
+ MENU,
+ STATS,
+ CYCLE_SHINY,
+ CYCLE_FORM,
+ CYCLE_GENDER,
+ CYCLE_ABILITY,
+ CYCLE_NATURE,
+ CYCLE_VARIANT,
+ SPEED_UP,
+ SLOW_DOWN
+}
diff --git a/src/field/arena.ts b/src/field/arena.ts
index 910d998d6..e8cc98c0a 100644
--- a/src/field/arena.ts
+++ b/src/field/arena.ts
@@ -18,8 +18,7 @@ import { TimeOfDay } from "../data/enums/time-of-day";
import { Terrain, TerrainType } from "../data/terrain";
import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability";
import Pokemon from "./pokemon";
-
-const WEATHER_OVERRIDE = WeatherType.NONE;
+import { WEATHER_OVERRIDE } from '../overrides';
export class Arena {
public scene: BattleScene;
@@ -107,7 +106,7 @@ export class Arena {
ret = getPokemonSpecies(species);
- if (ret.pseudoLegendary || ret.legendary || ret.mythical) {
+ if (ret.subLegendary || ret.legendary || ret.mythical) {
switch (true) {
case (ret.baseTotal >= 720):
regen = level < 90;
@@ -337,8 +336,8 @@ export class Arena {
return this.weather && !this.weather.isEffectSuppressed(this.scene) && this.weather.isMoveWeatherCancelled(move);
}
- isMoveTerrainCancelled(user: Pokemon, move: Move) {
- return this.terrain && this.terrain.isMoveTerrainCancelled(user, move);
+ isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move) {
+ return this.terrain && this.terrain.isMoveTerrainCancelled(user, targets, move);
}
getTerrainType() : TerrainType {
@@ -493,7 +492,7 @@ export class Arena {
}
addTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, side: ArenaTagSide = ArenaTagSide.BOTH, targetIndex?: BattlerIndex): boolean {
- const existingTag = this.getTag(tagType);
+ const existingTag = this.getTagOnSide(tagType, side);
if (existingTag) {
existingTag.onOverlap(this);
return false;
diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts
index 4e20bad40..9ac3aec53 100644
--- a/src/field/pokemon.ts
+++ b/src/field/pokemon.ts
@@ -1,25 +1,25 @@
import Phaser from 'phaser';
-import BattleScene, { ABILITY_OVERRIDE, AnySound, MOVE_OVERRIDE, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE } from '../battle-scene';
+import BattleScene, { AnySound } from '../battle-scene';
import { Variant, VariantSet, variantColorCache } from '#app/data/variant';
import { variantData } from '#app/data/variant';
import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info';
import { Moves } from "../data/enums/moves";
-import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr } from "../data/move";
-import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, starterPassiveAbilities } from '../data/pokemon-species';
+import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr, CounterDamageAttr } from "../data/move";
+import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species';
import * as Utils from '../utils';
import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type';
import { getLevelTotalExp } from '../data/exp';
import { Stat } from '../data/pokemon-stat';
-import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonHeldItemModifier, PokemonMultiHitModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier, TerastallizeModifier } from '../modifier/modifier';
+import { AttackTypeBoosterModifier, DamageMoneyRewardModifier, EnemyDamageBoosterModifier, EnemyDamageReducerModifier, EnemyEndureChanceModifier, EnemyFusionChanceModifier, HiddenAbilityRateBoosterModifier, PokemonBaseStatModifier, PokemonFriendshipBoosterModifier, PokemonHeldItemModifier, PokemonMultiHitModifier, PokemonNatureWeightModifier, ShinyRateBoosterModifier, SurviveDamageModifier, TempBattleStatBoosterModifier, TerastallizeModifier } from '../modifier/modifier';
import { PokeballType } from '../data/pokeball';
import { Gender } from '../data/gender';
import { initMoveAnim, loadMoveAnimAssets } from '../data/battle-anims';
-import { Status, StatusEffect } from '../data/status-effect';
+import { Status, StatusEffect, getRandomStatus } from '../data/status-effect';
import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from '../data/pokemon-evolutions';
import { reverseCompatibleTms, tmSpecies } from '../data/tms';
import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchSummonPhase } from '../phases';
import { BattleStat } from '../data/battle-stat';
-import { BattlerTag, BattlerTagLapseType, EncoreTag, HelpingHandTag, TypeBoostTag, getBattlerTag } from '../data/battler-tags';
+import { BattlerTag, BattlerTagLapseType, EncoreTag, HelpingHandTag, HighestStatBoostTag, TypeBoostTag, getBattlerTag } from '../data/battler-tags';
import { BattlerTagType } from "../data/enums/battler-tag-type";
import { Species } from '../data/enums/species';
import { WeatherType } from '../data/weather';
@@ -27,7 +27,7 @@ import { TempBattleStat } from '../data/temp-battle-stat';
import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag';
import { ArenaTagType } from "../data/enums/arena-tag-type";
import { Biome } from "../data/enums/biome";
-import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr } from '../data/ability';
+import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr } from '../data/ability';
import { Abilities } from "#app/data/enums/abilities";
import PokemonData from '../system/pokemon-data';
import Battle, { BattlerIndex } from '../battle';
@@ -37,12 +37,15 @@ import PartyUiHandler, { PartyOption, PartyUiMode } from '../ui/party-ui-handler
import SoundFade from 'phaser3-rex-plugins/plugins/soundfade';
import { LevelMoves } from '../data/pokemon-level-moves';
import { DamageAchv, achvs } from '../system/achv';
-import { DexAttr, StarterMoveset } from '../system/game-data';
+import { DexAttr, StarterDataEntry, StarterMoveset } from '../system/game-data';
import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from '@material/material-color-utilities';
import { Nature, getNatureStatMultiplier } from '../data/nature';
import { SpeciesFormChange, SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangeStatusEffectTrigger } from '../data/pokemon-forms';
import { TerrainType } from '../data/terrain';
import { TrainerSlot } from '../data/trainer-config';
+import { ABILITY_OVERRIDE, MOVE_OVERRIDE, MOVE_OVERRIDE_2, OPP_ABILITY_OVERRIDE, OPP_MOVE_OVERRIDE, OPP_MOVE_OVERRIDE_2, OPP_PASSIVE_ABILITY_OVERRIDE, OPP_SHINY_OVERRIDE, OPP_VARIANT_OVERRIDE, PASSIVE_ABILITY_OVERRIDE } from '../overrides';
+import { BerryType } from '../data/berry';
+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,13 +589,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
ret *= 1.5;
break;
case Stat.SPD:
+ // Check both the player and enemy to see if Tailwind should be multiplying the speed of the Pokemon
+ if ((this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER))
+ || (!this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.ENEMY)))
+ ret *= 2;
+
if (this.getTag(BattlerTagType.SLOW_START))
ret >>= 1;
if (this.status && this.status.effect === StatusEffect.PARALYSIS)
ret >>= 1;
break;
}
-
+
+ const highestStatBoost = this.findTag(t => t instanceof HighestStatBoostTag && (t as HighestStatBoostTag).stat === stat) as HighestStatBoostTag;
+ if (highestStatBoost)
+ ret *= highestStatBoost.multiplier;
+
return Math.floor(ret);
}
@@ -657,7 +675,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
getHpRatio(precise: boolean = false): number {
return precise
? this.hp / this.getMaxHp()
- : ((this.hp / this.getMaxHp()) * 100) / 100;
+ : Math.round((this.hp / this.getMaxHp()) * 100) / 100;
}
generateGender(): void {
@@ -711,6 +729,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
this.moveset[0] = new PokemonMove(MOVE_OVERRIDE, Math.min(this.moveset[0].ppUsed, allMoves[MOVE_OVERRIDE].pp));
else if (OPP_MOVE_OVERRIDE && !this.isPlayer())
this.moveset[0] = new PokemonMove(OPP_MOVE_OVERRIDE, Math.min(this.moveset[0].ppUsed, allMoves[OPP_MOVE_OVERRIDE].pp));
+ if (MOVE_OVERRIDE_2 && this.isPlayer())
+ this.moveset[1] = new PokemonMove(MOVE_OVERRIDE_2, Math.min(this.moveset[1].ppUsed, allMoves[MOVE_OVERRIDE_2].pp));
+ else if (OPP_MOVE_OVERRIDE_2 && !this.isPlayer())
+ this.moveset[1] = new PokemonMove(OPP_MOVE_OVERRIDE_2, Math.min(this.moveset[1].ppUsed, allMoves[OPP_MOVE_OVERRIDE_2].pp));
+
return ret;
}
@@ -755,9 +778,16 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
types.splice(flyingIndex, 1);
}
- if (!types.length)
+ if (!types.length) // become UNKNOWN if no types are present
types.push(Type.UNKNOWN);
+ if (types.length > 1 && types.includes(Type.UNKNOWN)) { // remove UNKNOWN if other types are present
+ const index = types.indexOf(Type.UNKNOWN);
+ if (index !== -1) {
+ types.splice(index, 1);
+ }
+ }
+
return types;
}
@@ -781,6 +811,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
getPassiveAbility(): Ability {
+ if (PASSIVE_ABILITY_OVERRIDE && this.isPlayer())
+ return allAbilities[PASSIVE_ABILITY_OVERRIDE];
+ if (OPP_PASSIVE_ABILITY_OVERRIDE && !this.isPlayer())
+ return allAbilities[OPP_PASSIVE_ABILITY_OVERRIDE];
+
let starterSpeciesId = this.species.speciesId;
while (pokemonPrevolutions.hasOwnProperty(starterSpeciesId))
starterSpeciesId = pokemonPrevolutions[starterSpeciesId];
@@ -788,6 +823,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
hasPassive(): boolean {
+ if ((PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && this.isPlayer()) || (OPP_PASSIVE_ABILITY_OVERRIDE !== Abilities.NONE && !this.isPlayer()))
+ return true;
return this.passive || this.isBoss();
}
@@ -857,7 +894,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
getAttackMoveEffectiveness(source: Pokemon, move: PokemonMove): TypeDamageMultiplier {
const typeless = !!move.getMove().getAttrs(TypelessAttr).length;
- const typeMultiplier = new Utils.NumberHolder(this.getAttackTypeEffectiveness(move.getMove().type));
+ const typeMultiplier = new Utils.NumberHolder(this.getAttackTypeEffectiveness(move.getMove().type, source));
const cancelled = new Utils.BooleanHolder(false);
if (!typeless)
applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, move, cancelled, typeMultiplier, true);
@@ -866,11 +903,20 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
return (!cancelled.value ? typeMultiplier.value : 0) as TypeDamageMultiplier;
}
- getAttackTypeEffectiveness(moveType: Type): TypeDamageMultiplier {
+ getAttackTypeEffectiveness(moveType: Type, source?: Pokemon): TypeDamageMultiplier {
if (moveType === Type.STELLAR)
return this.isTerastallized() ? 2 : 1;
const types = this.getTypes(true, true);
- let multiplier = getTypeDamageMultiplier(moveType, types[0]) * (types.length > 1 ? getTypeDamageMultiplier(moveType, types[1]) : 1) * (types.length > 2 ? getTypeDamageMultiplier(moveType, types[2]) : 1) as TypeDamageMultiplier;
+
+ const ignorableImmunities = source?.getAbility()?.getAttrs(IgnoreTypeImmunityAbAttr) || [];
+ const cancelled = new Utils.BooleanHolder(false);
+
+ let multiplier = types.map(defType =>
+ ignorableImmunities.some(attr => attr.apply(source, false, cancelled, [moveType, defType]))
+ ? 1
+ : getTypeDamageMultiplier(moveType, defType)
+ ).reduce((acc, cur) => acc * cur, 1) as TypeDamageMultiplier;
+
// Handle strong winds lowering effectiveness of types super effective against pure flying
if (this.scene.arena.weather?.weatherType === WeatherType.STRONG_WINDS && !this.scene.arena.weather.isEffectSuppressed(this.scene) && multiplier >= 2 && this.isOfType(Type.FLYING) && getTypeDamageMultiplier(moveType, Type.FLYING) === 2)
multiplier /= 2;
@@ -881,12 +927,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const types = this.getTypes(true);
const enemyTypes = pokemon.getTypes(true, true);
const outspeed = (this.isActive(true) ? this.getBattleStat(Stat.SPD, pokemon) : this.getStat(Stat.SPD)) <= pokemon.getBattleStat(Stat.SPD, this);
- let atkScore = pokemon.getAttackTypeEffectiveness(types[0]) * (outspeed ? 1.25 : 1);
- let defScore = 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[0]), 0.25);
+ let atkScore = pokemon.getAttackTypeEffectiveness(types[0], this) * (outspeed ? 1.25 : 1);
+ let defScore = 1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[0], pokemon), 0.25);
if (types.length > 1)
- atkScore *= pokemon.getAttackTypeEffectiveness(types[1]);
+ atkScore *= pokemon.getAttackTypeEffectiveness(types[1], this);
if (enemyTypes.length > 1)
- defScore *= (1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1]), 0.25));
+ defScore *= (1 / Math.max(this.getAttackTypeEffectiveness(enemyTypes[1], pokemon), 0.25));
let hpDiffRatio = this.getHpRatio() + (1 - pokemon.getHpRatio());
if (outspeed)
hpDiffRatio = Math.min(hpDiffRatio * 1.5, 1);
@@ -1178,6 +1224,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;
@@ -1235,7 +1285,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
const cancelled = new Utils.BooleanHolder(false);
const typeless = !!move.getAttrs(TypelessAttr).length;
const typeMultiplier = new Utils.NumberHolder(!typeless && (moveCategory !== MoveCategory.STATUS || move.getAttrs(StatusMoveTypeImmunityAttr).find(attr => types.includes((attr as StatusMoveTypeImmunityAttr).immuneType)))
- ? this.getAttackTypeEffectiveness(type)
+ ? this.getAttackTypeEffectiveness(type, source)
: 1);
applyMoveAttrs(VariableMoveTypeMultiplierAttr, source, this, move, typeMultiplier);
if (typeless)
@@ -1314,7 +1364,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);
@@ -1337,7 +1388,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);
@@ -1405,7 +1456,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);
@@ -1423,16 +1474,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;
}
}
@@ -1449,7 +1500,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;
}
@@ -1619,6 +1670,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[] {
@@ -1656,18 +1708,19 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
});
}
- cry(soundConfig?: Phaser.Types.Sound.SoundConfig): AnySound {
- const cry = this.getSpeciesForm().cry(this.scene, soundConfig);
+ cry(soundConfig?: Phaser.Types.Sound.SoundConfig, sceneOverride?: BattleScene): AnySound {
+ const scene = sceneOverride || this.scene;
+ const cry = this.getSpeciesForm().cry(scene, soundConfig);
let duration = cry.totalDuration * 1000;
if (this.fusionSpecies) {
- let fusionCry = this.getFusionSpeciesForm().cry(this.scene, soundConfig, true);
+ let fusionCry = this.getFusionSpeciesForm().cry(scene, soundConfig, true);
duration = Math.min(duration, fusionCry.totalDuration * 1000);
fusionCry.destroy();
- this.scene.time.delayedCall(Utils.fixedInt(Math.ceil(duration * 0.4)), () => {
+ scene.time.delayedCall(Utils.fixedInt(Math.ceil(duration * 0.4)), () => {
try {
- SoundFade.fadeOut(this.scene, cry, Utils.fixedInt(Math.ceil(duration * 0.2)));
- fusionCry = this.getFusionSpeciesForm().cry(this.scene, Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0) }, soundConfig));
- SoundFade.fadeIn(this.scene, fusionCry, Utils.fixedInt(Math.ceil(duration * 0.2)), this.scene.masterVolume * this.scene.seVolume, 0);
+ SoundFade.fadeOut(scene, cry, Utils.fixedInt(Math.ceil(duration * 0.2)));
+ fusionCry = this.getFusionSpeciesForm().cry(scene, Object.assign({ seek: Math.max(fusionCry.totalDuration * 0.4, 0) }, soundConfig));
+ SoundFade.fadeIn(scene, fusionCry, Utils.fixedInt(Math.ceil(duration * 0.2)), scene.masterVolume * scene.seVolume, 0);
} catch (err) {
console.error(err);
}
@@ -1879,6 +1932,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
applyAbAttrs(ReduceStatusEffectDurationAbAttr, this, null, effect, statusCureTurn);
this.setFrameRate(4);
+
+ // If the user is invulnerable, lets remove their invulnerability when they fall asleep
+ const invulnerableTags = [
+ BattlerTagType.UNDERGROUND,
+ BattlerTagType.UNDERWATER,
+ BattlerTagType.HIDDEN,
+ BattlerTagType.FLYING
+ ];
+
+ const tag = invulnerableTags.find((t) => this.getTag(t));
+
+ if (tag) {
+ this.removeTag(tag);
+ this.getMoveQueue().pop();
+ }
}
this.status = new Status(effect, 0, statusCureTurn?.value);
@@ -1919,6 +1987,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
this.summonDataPrimer = null;
}
+ this.updateInfo();
}
resetBattleData(): void {
@@ -2347,6 +2416,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 => {
@@ -2414,12 +2514,18 @@ export class PlayerPokemon extends Pokemon {
private handleSpecialEvolutions(evolution: SpeciesFormEvolution) {
const isFusion = evolution instanceof FusionSpeciesFormEvolution;
- if ((!isFusion ? this.species : this.fusionSpecies).speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) {
- const newEvolution = pokemonEvolutions[this.species.speciesId][1];
+
+ const evoSpecies = (!isFusion ? this.species : this.fusionSpecies)
+ if (evoSpecies.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) {
+ const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1];
+
if (newEvolution.condition.predicate(this)) {
const newPokemon = this.scene.addPlayerPokemon(this.species, this.level, this.abilityIndex, this.formIndex, undefined, this.shiny, this.variant, this.ivs, this.nature);
newPokemon.natureOverride = this.natureOverride;
+ newPokemon.passive = this.passive;
newPokemon.moveset = this.moveset.slice();
+ newPokemon.moveset = this.copyMoveset();
+ newPokemon.luck = this.luck;
newPokemon.fusionSpecies = this.fusionSpecies;
newPokemon.fusionFormIndex = this.fusionFormIndex;
newPokemon.fusionAbilityIndex = this.fusionAbilityIndex;
@@ -2427,8 +2533,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 => {
@@ -2478,6 +2585,10 @@ export class PlayerPokemon extends Pokemon {
this.generateCompatibleTms();
}
+ /**
+ * Returns a Promise to fuse two PlayerPokemon together
+ * @param pokemon The PlayerPokemon to fuse to this one
+ */
fuse(pokemon: PlayerPokemon): Promise {
return new Promise(resolve => {
this.fusionSpecies = pokemon.species;
@@ -2491,8 +2602,25 @@ export class PlayerPokemon extends Pokemon {
this.scene.validateAchv(achvs.SPLICE);
this.scene.gameData.gameStats.pokemonFused++;
+ // Store the average HP% that each Pokemon has
+ const newHpPercent = ((pokemon.hp / pokemon.stats[Stat.HP]) + (this.hp / this.stats[Stat.HP])) / 2;
+
this.generateName();
this.calculateStats();
+
+ // Set this Pokemon's HP to the average % of both fusion components
+ this.hp = Math.round(this.stats[Stat.HP] * newHpPercent);
+ if (!this.isFainted()) {
+ // If this Pokemon hasn't fainted, make sure the HP wasn't set over the new maximum
+ this.hp = Math.min(this.hp, this.stats[Stat.HP]);
+ this.status = getRandomStatus(this.status, pokemon.status); // Get a random valid status between the two
+ }
+ else if (!pokemon.isFainted()) {
+ // If this Pokemon fainted but the other hasn't, make sure the HP wasn't set to zero
+ this.hp = Math.max(this.hp, 1);
+ this.status = pokemon.status; // Inherit the other Pokemon's status
+ }
+
this.generateCompatibleTms();
this.updateInfo(true);
const fusedPartyMemberIndex = this.scene.getParty().indexOf(pokemon);
@@ -2526,6 +2654,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 {
@@ -2664,9 +2801,13 @@ export class EnemyPokemon extends Pokemon {
let targetScores: integer[] = [];
for (let mt of moveTargets[move.id]) {
+ // Prevent a target score from being calculated when the target is whoever attacks the user
+ if (mt === BattlerIndex.ATTACKER)
+ break;
+
const target = this.scene.getField()[mt];
let targetScore = move.getUserBenefitScore(this, target, move) + move.getTargetBenefitScore(this, target, move) * (mt < BattlerIndex.ENEMY === this.isPlayer() ? 1 : -1);
- if (move.name.endsWith(' (N)'))
+ if (move.name.endsWith(' (N)') || !move.applyConditions(this, target, move))
targetScore = -20;
else if (move instanceof AttackMove) {
const effectiveness = target.getAttackMoveEffectiveness(this, pokemonMove);
@@ -2734,8 +2875,14 @@ export class EnemyPokemon extends Pokemon {
return scoreA < scoreB ? 1 : scoreA > scoreB ? -1 : 0;
});
- if (!sortedBenefitScores.length)
+ if (!sortedBenefitScores.length) {
+ // Set target to BattlerIndex.ATTACKER when using a counter move
+ // This is the same as when the player does so
+ if (!!move.findAttr(attr => attr instanceof CounterDamageAttr))
+ return [BattlerIndex.ATTACKER];
+
return [];
+ }
let targetWeights = sortedBenefitScores.map(s => s[1]);
const lowestWeight = targetWeights[targetWeights.length - 1];
@@ -2986,6 +3133,8 @@ export class PokemonSummonData {
export class PokemonBattleData {
public hitCount: integer = 0;
public endured: boolean = false;
+ public berriesEaten: BerryType[] = [];
+ public abilitiesApplied: Abilities[] = [];
}
export class PokemonBattleSummonData {
@@ -3048,7 +3197,7 @@ export class PokemonMove {
isUsable(pokemon: Pokemon, ignorePp?: boolean): boolean {
if (this.moveId && pokemon.summonData?.disabledMove === this.moveId)
return false;
- return ignorePp || this.ppUsed < this.getMovePp() || this.getMove().pp === -1;
+ return (ignorePp || this.ppUsed < this.getMovePp() || this.getMove().pp === -1) && !this.getMove().name.endsWith(' (N)');
}
getMove(): Move {
diff --git a/src/game-mode.ts b/src/game-mode.ts
index 0ac3f0503..81db82425 100644
--- a/src/game-mode.ts
+++ b/src/game-mode.ts
@@ -1,10 +1,11 @@
import { fixedBattles } from "./battle";
-import BattleScene, { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from "./battle-scene";
+import BattleScene from "./battle-scene";
import { Biome } from "./data/enums/biome";
import { Species } from "./data/enums/species";
import PokemonSpecies, { allSpecies } from "./data/pokemon-species";
import { Arena } from "./field/arena";
import * as Utils from "./utils";
+import { STARTING_BIOME_OVERRIDE, STARTING_LEVEL_OVERRIDE, STARTING_MONEY_OVERRIDE } from './overrides';
export enum GameModes {
CLASSIC,
@@ -120,7 +121,7 @@ export class GameMode implements GameModeConfig {
getOverrideSpecies(waveIndex: integer): PokemonSpecies {
if (this.isDaily && this.isWaveFinal(waveIndex)) {
- const allFinalBossSpecies = allSpecies.filter(s => (s.pseudoLegendary || s.legendary || s.mythical)
+ const allFinalBossSpecies = allSpecies.filter(s => (s.subLegendary || s.legendary || s.mythical)
&& s.baseTotal >= 600 && s.speciesId !== Species.ETERNATUS && s.speciesId !== Species.ARCEUS);
return Utils.randSeedItem(allFinalBossSpecies);
}
diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts
new file mode 100644
index 000000000..5f5615358
--- /dev/null
+++ b/src/inputs-controller.ts
@@ -0,0 +1,294 @@
+import Phaser, {Time} from "phaser";
+import * as Utils from "./utils";
+import {initTouchControls} from './touch-controls';
+import pad_generic from "./configs/pad_generic";
+import pad_unlicensedSNES from "./configs/pad_unlicensedSNES";
+import pad_xbox360 from "./configs/pad_xbox360";
+import pad_dualshock from "./configs/pad_dualshock";
+import {Button} from "./enums/buttons";
+
+export interface GamepadMapping {
+ [key: string]: number;
+}
+
+export interface GamepadConfig {
+ padID: string;
+ padType: string;
+ gamepadMapping: GamepadMapping;
+}
+
+export interface ActionGamepadMapping {
+ [key: string]: Button;
+}
+
+const repeatInputDelayMillis = 250;
+
+export class InputsController {
+ private buttonKeys: Phaser.Input.Keyboard.Key[][];
+ private gamepads: Array = new Array();
+ private scene: Phaser.Scene;
+
+ // buttonLock ensures only a single movement key is firing repeated inputs
+ // (i.e. by holding down a button) at a time
+ private buttonLock: Button;
+ private buttonLock2: Button;
+ private interactions: Map> = new Map();
+ private time: Time;
+ private player: Map = new Map();
+
+ constructor(scene: Phaser.Scene) {
+ this.scene = scene;
+ this.time = this.scene.time;
+ this.buttonKeys = [];
+
+ for (const b of Utils.getEnumValues(Button)) {
+ this.interactions[b] = {
+ pressTime: false,
+ isPressed: false,
+ }
+ }
+ // We don't want the menu key to be repeated
+ delete this.interactions[Button.MENU];
+ delete this.interactions[Button.STATS];
+ this.init();
+ }
+
+ init(): void {
+ this.events = new Phaser.Events.EventEmitter();
+ // Handle the game losing focus
+ this.scene.game.events.on(Phaser.Core.Events.BLUR, () => {
+ this.loseFocus()
+ })
+
+ if (typeof this.scene.input.gamepad !== 'undefined') {
+ this.scene.input.gamepad.on('connected', function (thisGamepad) {
+ this.refreshGamepads();
+ this.setupGamepad(thisGamepad);
+ }, this);
+
+ // Check to see if the gamepad has already been setup by the browser
+ this.scene.input.gamepad.refreshPads();
+ if (this.scene.input.gamepad.total) {
+ this.refreshGamepads();
+ for (const thisGamepad of this.gamepads) {
+ this.scene.input.gamepad.emit('connected', thisGamepad);
+ }
+ }
+
+ this.scene.input.gamepad.on('down', this.gamepadButtonDown, this);
+ this.scene.input.gamepad.on('up', this.gamepadButtonUp, this);
+ }
+
+ // Keyboard
+ this.setupKeyboardControls();
+ }
+
+ loseFocus(): void {
+ this.deactivatePressedKey();
+ }
+
+ update(): void {
+ // reversed to let the cancel button have a kinda priority on the action button
+ for (const b of Utils.getEnumValues(Button).reverse()) {
+ if (!this.interactions.hasOwnProperty(b)) continue;
+ if (this.repeatInputDurationJustPassed(b) && this.interactions[b].isPressed) {
+ this.events.emit('input_down', {
+ controller_type: 'repeated',
+ button: b,
+ });
+ this.setLastProcessedMovementTime(b);
+ }
+ }
+ }
+
+ setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void {
+ let gamepadID = thisGamepad.id.toLowerCase();
+ const mappedPad = this.mapGamepad(gamepadID);
+ this.player['mapping'] = mappedPad.gamepadMapping;
+ }
+
+ refreshGamepads(): void {
+ // Sometimes, gamepads are undefined. For some reason.
+ this.gamepads = this.scene.input.gamepad.gamepads.filter(function (el) {
+ return el != null;
+ });
+
+ for (const [index, thisGamepad] of this.gamepads.entries()) {
+ thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier
+ }
+ }
+
+ getActionGamepadMapping(): ActionGamepadMapping {
+ const gamepadMapping = {};
+ if (!this.player?.mapping) return gamepadMapping;
+ gamepadMapping[this.player.mapping.LC_N] = Button.UP;
+ gamepadMapping[this.player.mapping.LC_S] = Button.DOWN;
+ gamepadMapping[this.player.mapping.LC_W] = Button.LEFT;
+ gamepadMapping[this.player.mapping.LC_E] = Button.RIGHT;
+ gamepadMapping[this.player.mapping.TOUCH] = Button.SUBMIT;
+ gamepadMapping[this.player.mapping.RC_S] = this.scene.abSwapped ? Button.CANCEL : Button.ACTION;
+ gamepadMapping[this.player.mapping.RC_E] = this.scene.abSwapped ? Button.ACTION : Button.CANCEL;
+ gamepadMapping[this.player.mapping.SELECT] = Button.STATS;
+ gamepadMapping[this.player.mapping.START] = Button.MENU;
+ gamepadMapping[this.player.mapping.RB] = Button.CYCLE_SHINY;
+ gamepadMapping[this.player.mapping.LB] = Button.CYCLE_FORM;
+ gamepadMapping[this.player.mapping.LT] = Button.CYCLE_GENDER;
+ gamepadMapping[this.player.mapping.RT] = Button.CYCLE_ABILITY;
+ gamepadMapping[this.player.mapping.RC_W] = Button.CYCLE_NATURE;
+ gamepadMapping[this.player.mapping.RC_N] = Button.CYCLE_VARIANT;
+ gamepadMapping[this.player.mapping.LS] = Button.SPEED_UP;
+ gamepadMapping[this.player.mapping.RS] = Button.SLOW_DOWN;
+
+ return gamepadMapping;
+ }
+
+ gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
+ if (!this.scene.gamepadSupport) return;
+ const actionMapping = this.getActionGamepadMapping();
+ const buttonDown = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index];
+ if (buttonDown !== undefined) {
+ this.events.emit('input_down', {
+ controller_type: 'gamepad',
+ button: buttonDown,
+ });
+ this.setLastProcessedMovementTime(buttonDown);
+ }
+ }
+
+ gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void {
+ if (!this.scene.gamepadSupport) return;
+ const actionMapping = this.getActionGamepadMapping();
+ const buttonUp = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index];
+ if (buttonUp !== undefined) {
+ this.events.emit('input_up', {
+ controller_type: 'gamepad',
+ button: buttonUp,
+ });
+ this.delLastProcessedMovementTime(buttonUp);
+ }
+ }
+
+ setupKeyboardControls(): void {
+ const keyCodes = Phaser.Input.Keyboard.KeyCodes;
+ const keyConfig = {
+ [Button.UP]: [keyCodes.UP, keyCodes.W],
+ [Button.DOWN]: [keyCodes.DOWN, keyCodes.S],
+ [Button.LEFT]: [keyCodes.LEFT, keyCodes.A],
+ [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D],
+ [Button.SUBMIT]: [keyCodes.ENTER],
+ [Button.ACTION]: [keyCodes.SPACE, keyCodes.Z],
+ [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X],
+ [Button.MENU]: [keyCodes.ESC, keyCodes.M],
+ [Button.STATS]: [keyCodes.SHIFT, keyCodes.C],
+ [Button.CYCLE_SHINY]: [keyCodes.R],
+ [Button.CYCLE_FORM]: [keyCodes.F],
+ [Button.CYCLE_GENDER]: [keyCodes.G],
+ [Button.CYCLE_ABILITY]: [keyCodes.E],
+ [Button.CYCLE_NATURE]: [keyCodes.N],
+ [Button.CYCLE_VARIANT]: [keyCodes.V],
+ [Button.SPEED_UP]: [keyCodes.PLUS],
+ [Button.SLOW_DOWN]: [keyCodes.MINUS]
+ };
+ const mobileKeyConfig = {};
+ for (const b of Utils.getEnumValues(Button)) {
+ const keys: Phaser.Input.Keyboard.Key[] = [];
+ if (keyConfig.hasOwnProperty(b)) {
+ for (let k of keyConfig[b])
+ keys.push(this.scene.input.keyboard.addKey(k, false));
+ mobileKeyConfig[Button[b]] = keys[0];
+ }
+ this.buttonKeys[b] = keys;
+ }
+
+ initTouchControls(mobileKeyConfig);
+ this.listenInputKeyboard();
+ }
+
+ listenInputKeyboard(): void {
+ this.buttonKeys.forEach((row, index) => {
+ for (const key of row) {
+ key.on('down', () => {
+ this.events.emit('input_down', {
+ controller_type: 'keyboard',
+ button: index,
+ });
+ this.setLastProcessedMovementTime(index);
+ });
+ key.on('up', () => {
+ this.events.emit('input_up', {
+ controller_type: 'keyboard',
+ button: index,
+ });
+ this.delLastProcessedMovementTime(index);
+ });
+ }
+ });
+ }
+
+ mapGamepad(id: string): GamepadConfig {
+ id = id.toLowerCase();
+
+ if (id.includes('081f') && id.includes('e401')) {
+ return pad_unlicensedSNES;
+ } else if (id.includes('xbox') && id.includes('360')) {
+ return pad_xbox360;
+ } else if (id.includes('054c')) {
+ return pad_dualshock;
+ }
+
+ return pad_generic;
+ }
+
+ /**
+ * repeatInputDurationJustPassed returns true if @param button has been held down long
+ * enough to fire a repeated input. A button must claim the buttonLock before
+ * firing a repeated input - this is to prevent multiple buttons from firing repeatedly.
+ */
+ repeatInputDurationJustPassed(button: Button): boolean {
+ if (!this.isButtonLocked(button)) return false;
+ if (this.time.now - this.interactions[button].pressTime >= repeatInputDelayMillis) {
+ return true;
+ }
+ }
+
+ setLastProcessedMovementTime(button: Button): void {
+ if (!this.interactions.hasOwnProperty(button)) return;
+ this.setButtonLock(button);
+ this.interactions[button].pressTime = this.time.now;
+ this.interactions[button].isPressed = true;
+ }
+
+ delLastProcessedMovementTime(button: Button): void {
+ if (!this.interactions.hasOwnProperty(button)) return;
+ this.releaseButtonLock(button);
+ this.interactions[button].pressTime = null;
+ this.interactions[button].isPressed = false;
+ }
+
+ deactivatePressedKey(): void {
+ this.releaseButtonLock(this.buttonLock);
+ this.releaseButtonLock(this.buttonLock2);
+ for (const b of Utils.getEnumValues(Button)) {
+ if (!this.interactions.hasOwnProperty(b)) return;
+ this.interactions[b].pressTime = null;
+ this.interactions[b].isPressed = false;
+ }
+ }
+
+ isButtonLocked(button: Button): boolean {
+ return (this.buttonLock === button || this.buttonLock2 === button);
+ }
+
+ setButtonLock(button: Button): void {
+ if (this.buttonLock === button || this.buttonLock2 === button) return;
+ if (this.buttonLock === button) this.buttonLock2 = button;
+ else if (this.buttonLock2 === button) this.buttonLock = button;
+ else if(!!this.buttonLock) this.buttonLock2 = button;
+ else this.buttonLock = button;
+ }
+
+ releaseButtonLock(button: Button): void {
+ if (this.buttonLock === button) this.buttonLock = null;
+ else if (this.buttonLock2 === button) this.buttonLock2 = null;
+ }
+}
\ No newline at end of file
diff --git a/src/loading-scene.ts b/src/loading-scene.ts
index 2f37b900a..a7d68ef98 100644
--- a/src/loading-scene.ts
+++ b/src/loading-scene.ts
@@ -31,6 +31,8 @@ export class LoadingScene extends SceneBase {
this.loadAtlas('bg', 'ui');
this.loadImage('command_fight_labels', 'ui');
this.loadAtlas('prompt', 'ui');
+ this.loadImage('candy', 'ui');
+ this.loadImage('candy_overlay', 'ui');
this.loadImage('cursor', 'ui');
this.loadImage('cursor_reverse', 'ui');
for (let wv of Utils.getEnumValues(WindowVariant)) {
@@ -39,15 +41,21 @@ export class LoadingScene extends SceneBase {
}
this.loadAtlas('namebox', 'ui');
this.loadImage('pbinfo_player', 'ui');
+ this.loadImage('pbinfo_player_stats', 'ui');
this.loadImage('pbinfo_player_mini', 'ui');
+ this.loadImage('pbinfo_player_mini_stats', 'ui');
this.loadAtlas('pbinfo_player_type', 'ui');
this.loadAtlas('pbinfo_player_type1', 'ui');
this.loadAtlas('pbinfo_player_type2', 'ui');
this.loadImage('pbinfo_enemy_mini', 'ui');
+ this.loadImage('pbinfo_enemy_mini_stats', 'ui');
this.loadImage('pbinfo_enemy_boss', 'ui');
+ this.loadImage('pbinfo_enemy_boss_stats', 'ui');
this.loadAtlas('pbinfo_enemy_type', 'ui');
this.loadAtlas('pbinfo_enemy_type1', 'ui');
this.loadAtlas('pbinfo_enemy_type2', 'ui');
+ this.loadAtlas('pbinfo_stat', 'ui');
+ this.loadAtlas('pbinfo_stat_numbers', 'ui');
this.loadImage('overlay_lv', 'ui');
this.loadAtlas('numbers', 'ui');
this.loadAtlas('numbers_red', 'ui');
@@ -61,6 +69,7 @@ export class LoadingScene extends SceneBase {
this.loadImage('achv_bar_2', 'ui');
this.loadImage('achv_bar_3', 'ui');
this.loadImage('achv_bar_4', 'ui');
+ this.loadImage('achv_bar_5', 'ui');
this.loadImage('shiny_star', 'ui', 'shiny.png');
this.loadImage('shiny_star_1', 'ui', 'shiny_1.png');
this.loadImage('shiny_star_2', 'ui', 'shiny_2.png');
@@ -68,6 +77,7 @@ export class LoadingScene extends SceneBase {
this.loadImage('shiny_star_small_1', 'ui', 'shiny_small_1.png');
this.loadImage('shiny_star_small_2', 'ui', 'shiny_small_2.png');
this.loadImage('ha_capsule', 'ui', 'ha_capsule.png');
+ this.loadImage('champion_ribbon', 'ui', 'champion_ribbon.png');
this.loadImage('icon_spliced', 'ui');
this.loadImage('icon_tera', 'ui');
this.loadImage('type_tera', 'ui');
@@ -216,6 +226,7 @@ export class LoadingScene extends SceneBase {
this.loadSe('sparkle');
this.loadSe('restore');
this.loadSe('shine');
+ this.loadSe('shing');
this.loadSe('charge');
this.loadSe('beam');
this.loadSe('upgrade');
diff --git a/src/locales/de/battle.ts b/src/locales/de/battle.ts
new file mode 100644
index 000000000..b48aa1129
--- /dev/null
+++ b/src/locales/de/battle.ts
@@ -0,0 +1,53 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const battle: SimpleTranslationEntries = {
+ "bossAppeared": "{{bossName}} erscheint.",
+ "trainerAppeared": "{{trainerName}}\nmöchte kämpfen!",
+ "singleWildAppeared": "Ein wildes {{pokemonName}} erscheint!",
+ "multiWildAppeared": "Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!",
+ "playerComeBack": "Komm zurück, {{pokemonName}}!",
+ "trainerComeBack": "{{trainerName}} ruft {{pokemonName}} zurück!",
+ "playerGo": "Los! {{pokemonName}}!",
+ "trainerGo": "{{trainerName}} sendet {{pokemonName}} raus!",
+ "switchQuestion": "Willst du\n{{pokemonName}} auswechseln?",
+ "trainerDefeated": `You defeated\n{{trainerName}}!`,
+ "pokemonCaught": "{{pokemonName}} was caught!",
+ "pokemon": "Pokémon",
+ "sendOutPokemon": "Los! {{pokemonName}}!",
+ "hitResultCriticalHit": "A critical hit!",
+ "hitResultSuperEffective": "It's super effective!",
+ "hitResultNotVeryEffective": "It's not very effective…",
+ "hitResultNoEffect": "It doesn't affect {{pokemonName}}!",
+ "hitResultOneHitKO": "It's a one-hit KO!",
+ "attackFailed": "But it failed!",
+ "attackHitsCount": `Hit {{count}} time(s)!`,
+ "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!",
+ "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!",
+ "learnMove": "{{pokemonName}} learned\n{{moveName}}!",
+ "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.",
+ "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.",
+ "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?",
+ "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?",
+ "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.",
+ "learnMoveForgetQuestion": "Which move should be forgotten?",
+ "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.",
+ "levelCapUp": "Das Levellimit\nhat sich zu {{levelCap}} erhöht!",
+ "moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.",
+ "moveNoPP": "There's no PP left for\nthis move!",
+ "moveDisabled": "{{moveName}} ist deaktiviert!",
+ "noPokeballForce": "Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.",
+ "noPokeballTrainer": "Du kannst das Pokémon\neines anderen Trainers nicht fangen!",
+ "noPokeballMulti": "Du kannst erst einen Pokéball werden,\nwenn nur noch ein Pokémon übrig ist!",
+ "noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!",
+ "noEscapeForce": "Eine unsichtbare Kraft\nverhindert die Flucht.",
+ "noEscapeTrainer": "Du kannst nicht\naus einem Trainerkampf fliehen!",
+ "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nverhindert {{escapeVerb}}!",
+ "runAwaySuccess": "You got away safely!",
+ "runAwayCannotEscape": 'You can\'t escape!',
+ "escapeVerbSwitch": "auswechseln",
+ "escapeVerbFlee": "flucht",
+ "notDisabled": "{{moveName}} ist\nnicht mehr deaktiviert!",
+ "skipItemQuestion": "Are you sure you want to skip taking an item?",
+ "eggHatching": "Oh?",
+ "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?"
+} as const;
\ No newline at end of file
diff --git a/src/locales/de/config.ts b/src/locales/de/config.ts
new file mode 100644
index 000000000..c388d7dec
--- /dev/null
+++ b/src/locales/de/config.ts
@@ -0,0 +1,28 @@
+import { ability } from "./ability";
+import { battle } from "./battle";
+import { commandUiHandler } from "./command-ui-handler";
+import { fightUiHandler } from "./fight-ui-handler";
+import { menu } from "./menu";
+import { menuUiHandler } from "./menu-ui-handler";
+import { move } from "./move";
+import { pokeball } from "./pokeball";
+import { pokemon } from "./pokemon";
+import { pokemonStat } from "./pokemon-stat";
+import { starterSelectUiHandler } from "./starter-select-ui-handler";
+import { tutorial } from "./tutorial";
+
+
+export const deConfig = {
+ ability: ability,
+ battle: battle,
+ commandUiHandler: commandUiHandler,
+ fightUiHandler: fightUiHandler,
+ menuUiHandler: menuUiHandler,
+ menu: menu,
+ move: move,
+ pokeball: pokeball,
+ pokemonStat: pokemonStat,
+ pokemon: pokemon,
+ starterSelectUiHandler: starterSelectUiHandler,
+ tutorial: tutorial
+}
\ No newline at end of file
diff --git a/src/locales/de/fight-ui-handler.ts b/src/locales/de/fight-ui-handler.ts
new file mode 100644
index 000000000..1ce9e0317
--- /dev/null
+++ b/src/locales/de/fight-ui-handler.ts
@@ -0,0 +1,6 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const fightUiHandler: SimpleTranslationEntries = {
+ "pp": "PP",
+ "power": "POWER",
+} as const;
\ No newline at end of file
diff --git a/src/locales/de/menu.ts b/src/locales/de/menu.ts
index d70cd83c5..aa4604f9d 100644
--- a/src/locales/de/menu.ts
+++ b/src/locales/de/menu.ts
@@ -35,28 +35,12 @@ export const menu: SimpleTranslationEntries = {
"boyOrGirl": "Bist du ein Junge oder ein Mädchen?",
"boy": "Junge",
"girl": "Mädchen",
- "bossAppeared": "{{bossName}} erscheint.",
- "trainerAppeared": "{{trainerName}}\nmöchte kämpfen!",
- "singleWildAppeared": "Ein wildes {{pokemonName}} erscheint!",
- "multiWildAppeared": "Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!",
- "playerComeBack": "Komm zurück, {{pokemonName}}!",
- "trainerComeBack": "{{trainerName}} ruft {{pokemonName}} zurück!",
- "playerGo": "Los! {{pokemonName}}!",
- "trainerGo": "{{trainerName}} sendet {{pokemonName}} raus!",
- "switchQuestion": "Willst du\n{{pokemonName}} auswechseln?",
- "pokemon": "Pokémon",
- "sendOutPokemon": "Los! {{pokemonName}}!",
- "levelCapUp": "Das Levellimit\nhat sich zu {{levelCap}} erhöht!",
- "moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.",
- "moveDisabled": "{{moveName}} ist deaktiviert!",
- "noPokeballForce": "Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.",
- "noPokeballTrainer": "Du kannst das Pokémon\neines anderen Trainers nicht fangen!",
- "noPokeballMulti": "Du kannst erst einen Pokéball werden,\nwenn nur noch ein Pokémon übrig ist!",
- "noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!",
- "noEscapeForce": "Eine unsichtbare Kraft\nverhindert die Flucht.",
- "noEscapeTrainer": "Du kannst nicht\naus einem Trainerkampf fliehen!",
- "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nverhindert {{escapeVerb}}!",
- "escapeVerbSwitch": "auswechseln",
- "escapeVerbFlee": "flucht",
- "notDisabled": "{{moveName}} ist\nnicht mehr deaktiviert!",
+ "dailyRankings": "Daily Rankings",
+ "weeklyRankings": "Weekly Rankings",
+ "noRankings": "No Rankings",
+ "loading": "Loading…",
+ "playersOnline": "Players Online",
+ "empty":"Empty",
+ "yes":"Yes",
+ "no":"No",
} as const;
\ No newline at end of file
diff --git a/src/locales/de/move.ts b/src/locales/de/move.ts
index f0c1c623a..f39721b1d 100644
--- a/src/locales/de/move.ts
+++ b/src/locales/de/move.ts
@@ -2,44 +2,44 @@ import { MoveTranslationEntries } from "#app/plugins/i18n";
export const move: MoveTranslationEntries = {
"pound": {
- name: "Pound",
- effect: "The target is physically pounded with a long tail, a foreleg, or the like."
+ name: "Klaps",
+ effect: "Ein Hieb mit den Vorderbeinen oder dem Schweif."
},
"karateChop": {
- name: "Karate Chop",
- effect: "The target is attacked with a sharp chop. Critical hits land more easily."
+ name: "Karateschlag",
+ effect: "Gute Möglichkeit, einen Volltreffer zu landen."
},
"doubleSlap": {
- name: "Double Slap",
- effect: "The target is slapped repeatedly, back and forth, two to five times in a row."
+ name: "Duplexhieb",
+ effect: "Trifft das Ziel zwei- bis fünfmal hintereinander mit einem Duplexhieb."
},
"cometPunch": {
- name: "Comet Punch",
- effect: "The target is hit with a flurry of punches that strike two to five times in a row."
+ name: "Kometenhieb",
+ effect: "Trifft das Ziel zwei- bis fünfmal hintereinander mit kräftigen Hieben."
},
"megaPunch": {
- name: "Mega Punch",
- effect: "The target is slugged by a punch thrown with muscle-packed power."
+ name: "Megahieb",
+ effect: "Ein unglaublich kräftiger Hieb."
},
"payDay": {
- name: "Pay Day",
- effect: "Numerous coins are hurled at the target to inflict damage. Money is earned after the battle."
+ name: "Zahltag",
+ effect: "Das Ziel wird mit Münzen beworfen. Das Geld wird nach dem Kampf aufgesammelt."
},
"firePunch": {
- name: "Fire Punch",
- effect: "The target is punched with a fiery fist. This may also leave the target with a burn."
+ name: "Feuerschlag",
+ effect: "Feuriger Schlag, der dem Ziel eventuell Verbrennungen zufügt."
},
"icePunch": {
- name: "Ice Punch",
- effect: "The target is punched with an icy fist. This may also leave the target frozen."
+ name: "Eishieb",
+ effect: "Ein eisiger Schlag, der das Ziel eventuell einfriert."
},
"thunderPunch": {
- name: "Thunder Punch",
- effect: "The target is punched with an electrified fist. This may also leave the target with paralysis."
+ name: "Donnerschlag",
+ effect: "Ein elektrischer Schlag, der das Ziel eventuell paralysiert."
},
"scratch": {
- name: "Scratch",
- effect: "Hard, pointed, sharp claws rake the target to inflict damage."
+ name: "Kratzer",
+ effect: "Das Ziel wird mit scharfen Klauen zerkratzt."
},
"viseGrip": {
name: "Vise Grip",
@@ -47,3263 +47,3263 @@ export const move: MoveTranslationEntries = {
},
"guillotine": {
name: "Guillotine",
- effect: "A vicious, tearing attack with big pincers. The target faints instantly if this attack hits."
+ effect: "Kräftige Scheren-Attacke. Führt beim Ziel sofort zum K.O."
},
"razorWind": {
- name: "Razor Wind",
- effect: "In this two-turn attack, blades of wind hit opposing Pokémon on the second turn. Critical hits land more easily."
+ name: "Klingensturm",
+ effect: "Eine Attacke, die über zwei Runden geht. Hohe Volltrefferquote."
},
"swordsDance": {
- name: "Swords Dance",
- effect: "A frenetic dance to uplift the fighting spirit. This sharply raises the user's Attack stat."
+ name: "Schwerttanz",
+ effect: "Ein wilder Kampftanz, der den eigenen Angriffs-Wert stark erhöht."
},
"cut": {
- name: "Cut",
- effect: "The target is cut with a scythe or claw."
+ name: "Zerschneider",
+ effect: "Ein Basisangriff mit Schere oder Klaue. Damit können kleine Bäume gefällt werden."
},
"gust": {
- name: "Gust",
- effect: "A gust of wind is whipped up by wings and launched at the target to inflict damage."
+ name: "Windstoß",
+ effect: "Trifft das Ziel mit einem Windstoß durch einen Flügelschlag."
},
"wingAttack": {
- name: "Wing Attack",
- effect: "The target is struck with large, imposing wings spread wide to inflict damage."
+ name: "Flügelschlag",
+ effect: "Trifft das Ziel mit ausgebreiteten Flügeln."
},
"whirlwind": {
- name: "Whirlwind",
- effect: "The target is blown away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon."
+ name: "Wirbelwind",
+ effect: "Weht das Ziel weg und ersetzt es durch ein anderes Pokémon. In der Wildnis endet der Kampf."
},
"fly": {
- name: "Fly",
- effect: "The user flies up into the sky and then strikes its target on the next turn."
+ name: "Fliegen",
+ effect: "Steigt in Runde 1 empor und trifft das Ziel in Runde 2."
},
"bind": {
- name: "Bind",
- effect: "Things such as long bodies or tentacles are used to bind and squeeze the target for four to five turns."
+ name: "Klammergriff",
+ effect: "Umklammert und quetscht das Ziel über vier bis fünf Runden."
},
"slam": {
name: "Slam",
- effect: "The target is slammed with a long tail, vines, or the like to inflict damage."
+ effect: "Schlag mit einem langen Schweif, einer Ranke oder Ähnlichem."
},
"vineWhip": {
- name: "Vine Whip",
- effect: "The target is struck with slender, whiplike vines to inflict damage."
+ name: "Rankenhieb",
+ effect: "Peitschenähnlicher Schlag mit Ranken."
},
"stomp": {
- name: "Stomp",
- effect: "The target is stomped with a big foot. This may also make the target flinch."
+ name: "Stampfer",
+ effect: "Stampfen mit dem Fuß. Das Ziel schreckt eventuell zurück."
},
"doubleKick": {
- name: "Double Kick",
- effect: "The target is quickly kicked twice in succession using both feet."
+ name: "Doppelkick",
+ effect: "Der Anwender tritt in einer Runde zweimal schnell zu."
},
"megaKick": {
- name: "Mega Kick",
- effect: "The target is attacked by a kick launched with muscle-packed power."
+ name: "Megakick",
+ effect: "Das Ziel wird mit einem extrem heftigen Tritt angegriffen."
},
"jumpKick": {
- name: "Jump Kick",
- effect: "The user jumps up high, then strikes with a kick. If the kick misses, the user hurts itself."
+ name: "Sprungkick",
+ effect: "Der Angreifer hüpft hoch und tritt zu. Bei Misserfolg schadet er sich selbst."
},
"rollingKick": {
- name: "Rolling Kick",
- effect: "The user lashes out with a quick, spinning kick. This may also make the target flinch."
+ name: "Fegekick",
+ effect: "Heftiger Tritt aus einer schnellen Drehbewegung. Lässt das Ziel eventuell zurückschrecken."
},
"sandAttack": {
- name: "Sand Attack",
- effect: "Sand is hurled in the target's face, reducing the target's accuracy."
+ name: "Sandwirbel",
+ effect: "Senkt Genauigkeit des Zieles, indem ihm Sand ins Gesicht geworfen wird."
},
"headbutt": {
- name: "Headbutt",
- effect: "The user sticks out its head and attacks by charging straight into the target. This may also make the target flinch."
+ name: "Kopfnuss",
+ effect: "Rammt das Ziel mit einer Kopfnuss. Ziel schreckt eventuell zurück."
},
"hornAttack": {
- name: "Horn Attack",
- effect: "The target is jabbed with a sharply pointed horn to inflict damage."
+ name: "Hornattacke",
+ effect: "Spießt das Ziel mit einem spitzen Horn auf."
},
"furyAttack": {
- name: "Fury Attack",
- effect: "The target is jabbed repeatedly with a horn or beak two to five times in a row."
+ name: "Furienschlag",
+ effect: "Spießt das Ziel zwei- bis fünfmal mit spitzem Horn oder Schnabel auf."
},
"hornDrill": {
- name: "Horn Drill",
- effect: "The user stabs the target with a horn that rotates like a drill. The target faints instantly if this attack hits."
+ name: "Hornbohrer",
+ effect: "K.O.-Attacke, bei der ein Horn als Bohrer eingesetzt wird."
},
"tackle": {
name: "Tackle",
- effect: "A physical attack in which the user charges and slams into the target with its whole body."
+ effect: "Trifft das Ziel mit vollem Körpereinsatz."
},
"bodySlam": {
- name: "Body Slam",
- effect: "The user drops onto the target with its full body weight. This may also leave the target with paralysis."
+ name: "Bodyslam",
+ effect: "Trifft das Ziel mit vollem Körpereinsatz. Bewirkt eventuell Paralyse."
},
"wrap": {
- name: "Wrap",
- effect: "A long body, vines, or the like are used to wrap and squeeze the target for four to five turns."
+ name: "Wickel",
+ effect: "Umwickelt das Ziel über vier bis fünf Runden mit Ranken oder Ähnlichem und fügt ihm Schaden zu."
},
"takeDown": {
- name: "Take Down",
- effect: "A reckless, full-body charge attack for slamming into the target. This also damages the user a little."
+ name: "Bodycheck",
+ effect: "Rücksichtslose Attacke, bei der sich der Angreifer selbst leicht verletzt."
},
"thrash": {
- name: "Thrash",
- effect: "The user rampages and attacks for two to three turns. The user then becomes confused."
+ name: "Fuchtler",
+ effect: "Attacke über zwei bis drei Runden, die den Angreifer verwirrt."
},
"doubleEdge": {
- name: "Double-Edge",
- effect: "A reckless, life-risking tackle in which the user rushes the target. This also damages the user quite a lot."
+ name: "Risikotackle",
+ effect: "Lebensgefährlicher Angriff, bei dem sich der Angreifer selbst verletzt."
},
"tailWhip": {
- name: "Tail Whip",
- effect: "The user wags its tail cutely, making opposing Pokémon less wary and lowering their Defense stats."
+ name: "Rutenschlag",
+ effect: "Hieb mit dem Schweif. Senkt die Verteidigung des Zieles."
},
"poisonSting": {
- name: "Poison Sting",
- effect: "The user stabs the target with a poisonous stinger. This may also poison the target."
+ name: "Giftstachel",
+ effect: "Angriff mit Giftstachel. Das Ziel wird eventuell vergiftet."
},
"twineedle": {
- name: "Twineedle",
- effect: "The user damages the target twice in succession by jabbing it with two spikes. This may also poison the target."
+ name: "Duonadel",
+ effect: "Stacheln treffen das Ziel zweimal. Das Ziel wird eventuell vergiftet."
},
"pinMissile": {
- name: "Pin Missile",
- effect: "Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row."
+ name: "Nadelrakete",
+ effect: "Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander."
},
"leer": {
- name: "Leer",
- effect: "The user gives opposing Pokémon an intimidating leer that lowers the Defense stat."
+ name: "Silberblick",
+ effect: "Gegnerischer Verteidigungs-Wert wird durch angsteinflößenden Blick gesenkt."
},
"bite": {
- name: "Bite",
- effect: "The target is bitten with viciously sharp fangs. This may also make the target flinch."
+ name: "Biss",
+ effect: "Beißt zu und lässt das Ziel eventuell zurückschrecken."
},
"growl": {
- name: "Growl",
- effect: "The user growls in an endearing way, making opposing Pokémon less wary. This lowers their Attack stats."
+ name: "Heuler",
+ effect: "Der Anwender nimmt das Ziel für sich ein und senkt dessen Angriffs-Wert."
},
"roar": {
- name: "Roar",
- effect: "The target is scared off, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon."
+ name: "Brüller",
+ effect: "Verjagt das Ziel und ersetzt es durch ein anderes Pokémon. Beendet den Kampf in der Wildnis."
},
"sing": {
- name: "Sing",
- effect: "A soothing lullaby is sung in a calming voice that puts the target into a deep slumber."
+ name: "Gesang",
+ effect: "Ein Lied, das das Ziel in tiefen Schlaf versetzt."
},
"supersonic": {
- name: "Supersonic",
- effect: "The user generates odd sound waves from its body that confuse the target."
+ name: "Superschall",
+ effect: "Ausstoß bizarrer Schallwellen. Das Ziel wird verwirrt."
},
"sonicBoom": {
- name: "Sonic Boom",
- effect: "The target is hit with a destructive shock wave that always inflicts 20 HP damage."
+ name: "Ultraschall",
+ effect: "Das Ziel wird von einer Schockwelle getroffen, die stets 20 KP Schaden anrichtet."
},
"disable": {
- name: "Disable",
- effect: "For four turns, this move prevents the target from using the move it last used."
+ name: "Aussetzer",
+ effect: "Die zuletzt eingesetzte Attacke des Zieles wird für mehrere Runden blockiert."
},
"acid": {
- name: "Acid",
- effect: "Opposing Pokémon are attacked with a spray of harsh acid. This may also lower their Sp. Def stats."
+ name: "Säure",
+ effect: "Versprüht ätzende Flüssigkeit, die eventuell die Spezial-Verteidigung der Gegner in der Nähe des Anwenders senkt."
},
"ember": {
- name: "Ember",
- effect: "The target is attacked with small flames. This may also leave the target with a burn."
+ name: "Glut",
+ effect: "Schwache Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet."
},
"flamethrower": {
- name: "Flamethrower",
- effect: "The target is scorched with an intense blast of fire. This may also leave the target with a burn."
+ name: "Flammenwurf",
+ effect: "Starke Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet."
},
"mist": {
- name: "Mist",
- effect: "The user cloaks itself and its allies in a white mist that prevents any of their stats from being lowered for five turns."
+ name: "Weißnebel",
+ effect: "Anwender schützt das Team mit einem Nebel. Verhindert Statussenkungen für fünf Runden."
},
"waterGun": {
- name: "Water Gun",
- effect: "The target is blasted with a forceful shot of water."
+ name: "Aquaknarre",
+ effect: "Das Ziel wird mit Wasser bespritzt."
},
"hydroPump": {
- name: "Hydro Pump",
- effect: "The target is blasted by a huge volume of water launched under great pressure."
+ name: "Hydropumpe",
+ effect: "Spritzt eine Menge Wasser mit Hochdruck auf das Ziel."
},
"surf": {
- name: "Surf",
- effect: "The user attacks everything around it by swamping its surroundings with a giant wave."
+ name: "Surfer",
+ effect: "Eine Welle bricht über alle Pokémon in der Nähe des Anwenders herein."
},
"iceBeam": {
- name: "Ice Beam",
- effect: "The target is struck with an icy-cold beam of energy. This may also leave the target frozen."
+ name: "Eisstrahl",
+ effect: "Das Ziel wird von einem Eisstrahl getroffen und friert eventuell ein."
},
"blizzard": {
name: "Blizzard",
- effect: "A howling blizzard is summoned to strike opposing Pokémon. This may also leave the opposing Pokémon frozen."
+ effect: "Ein Schneesturm wütet, der das Ziel einfrieren kann."
},
"psybeam": {
- name: "Psybeam",
- effect: "The target is attacked with a peculiar ray. This may also leave the target confused."
+ name: "Psystrahl",
+ effect: "Feuert einen Strahl ab, der das Ziel verwirren kann."
},
"bubbleBeam": {
- name: "Bubble Beam",
- effect: "A spray of bubbles is forcefully ejected at the target. This may also lower the target's Speed stat."
+ name: "Blubbstrahl",
+ effect: "Versprüht Blasen, die eventuell den Initiative-Wert des Zieles senken."
},
"auroraBeam": {
- name: "Aurora Beam",
- effect: "The target is hit with a rainbow-colored beam. This may also lower the target's Attack stat."
+ name: "Aurorastrahl",
+ effect: "Regenbogenfarbener Strahl, der eventuell den Angriffs-Wert des Zieles senkt."
},
"hyperBeam": {
- name: "Hyper Beam",
- effect: "The target is attacked with a powerful beam. The user can't move on the next turn."
+ name: "Hyperstrahl",
+ effect: "Starke Attacke, die den Anwender zwingt, eine Runde auszusetzen."
},
"peck": {
- name: "Peck",
- effect: "The target is jabbed with a sharply pointed beak or horn."
+ name: "Pikser",
+ effect: "Greift das Ziel mit dem Schnabel oder Horn an."
},
"drillPeck": {
- name: "Drill Peck",
- effect: "A corkscrewing attack that strikes the target with a sharp beak acting as a drill."
+ name: "Bohrschnabel",
+ effect: "Korkenzieherangriff, bei dem der Schnabel als Bohrer dient."
},
"submission": {
- name: "Submission",
- effect: "The user grabs the target and recklessly dives for the ground. This also damages the user a little."
+ name: "Überroller",
+ effect: "Harte Körperattacke, bei der sich der Angreifer selbst leicht verletzt."
},
"lowKick": {
- name: "Low Kick",
- effect: "A powerful low kick that makes the target fall over. The heavier the target, the greater the move's power."
+ name: "Fußkick",
+ effect: "Ein Tritt, der das Ziel umwirft. Je schwerer das Ziel ist, desto mehr Schaden fügt ihm die Attacke zu."
},
"counter": {
- name: "Counter",
- effect: "A retaliation move that counters any physical attack, inflicting double the damage taken."
+ name: "Konter",
+ effect: "Kontert physische Treffer und fügt dem Ziel das Doppelte des Schadens zu, den der Anwender erlitten hat."
},
"seismicToss": {
- name: "Seismic Toss",
- effect: "The target is thrown using the power of gravity. It inflicts damage equal to the user's level."
+ name: "Geowurf",
+ effect: "Ziel wird mit der Kraft der Gravitation umgeworfen. Richtet Schaden gemäß Level des Angreifers an."
},
"strength": {
- name: "Strength",
- effect: "The target is slugged with a punch thrown at maximum power."
+ name: "Stärke",
+ effect: "Das Ziel wird extrem stark getroffen. Macht Verschieben von Felsen möglich."
},
"absorb": {
- name: "Absorb",
- effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target."
+ name: "Absorber",
+ effect: "Attacke, die die Hälfte des Schadens absorbiert."
},
"megaDrain": {
- name: "Mega Drain",
- effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target."
+ name: "Megasauger",
+ effect: "Attacke, die die Hälfte des Schadens absorbiert."
},
"leechSeed": {
- name: "Leech Seed",
- effect: "A seed is planted on the target. It steals some HP from the target every turn."
+ name: "Egelsamen",
+ effect: "Ziel wird bepflanzt und verliert jede Runde KP, die ein Pokémon aus dem Team des Anwenders heilen."
},
"growth": {
- name: "Growth",
- effect: "The user's body grows all at once, raising the Attack and Sp. Atk stats."
+ name: "Wachstum",
+ effect: "Der Körper wächst. Dadurch steigen Angriff und Spezial-Angriff."
},
"razorLeaf": {
- name: "Razor Leaf",
- effect: "Sharp-edged leaves are launched to slash at opposing Pokémon. Critical hits land more easily."
+ name: "Rasierblatt",
+ effect: "Trifft das Ziel mit Blättern. Hohe Volltrefferquote."
},
"solarBeam": {
- name: "Solar Beam",
- effect: "In this two-turn attack, the user gathers light, then blasts a bundled beam on the next turn."
+ name: "Solarstrahl",
+ effect: "Absorbiert Licht in Runde 1. In Runde 2 erfolgt der Angriff."
},
"poisonPowder": {
- name: "Poison Powder",
- effect: "The user scatters a cloud of poisonous dust that poisons the target."
+ name: "Giftpuder",
+ effect: "Verstreut giftigen Puder auf das Ziel."
},
"stunSpore": {
- name: "Stun Spore",
- effect: "The user scatters a cloud of numbing powder that paralyzes the target."
+ name: "Stachelspore",
+ effect: "Verstreut lähmenden Puder."
},
"sleepPowder": {
- name: "Sleep Powder",
- effect: "The user scatters a big cloud of sleep-inducing dust around the target."
+ name: "Schlafpuder",
+ effect: "Verstreut Schlafpuder, der das Ziel eventuell in Schlaf versetzt."
},
"petalDance": {
- name: "Petal Dance",
- effect: "The user attacks the target by scattering petals for two to three turns. The user then becomes confused."
+ name: "Blättertanz",
+ effect: "Angriff mit Blütenblättern für zwei bis drei Runden. Angreifer wird verwirrt."
},
"stringShot": {
- name: "String Shot",
- effect: "Opposing Pokémon are bound with silk blown from the user's mouth that harshly lowers the Speed stat."
+ name: "Fadenschuss",
+ effect: "Umwickelt Ziele in der Nähe mit Fäden aus dem Mund und senkt den Initiative-Wert."
},
"dragonRage": {
- name: "Dragon Rage",
- effect: "This attack hits the target with a shock wave of pure rage. This attack always inflicts 40 HP damage."
+ name: "Drachenwut",
+ effect: "Stößt eine wutgeladene Schockwelle aus, die stets 40 KP Schaden anrichtet."
},
"fireSpin": {
- name: "Fire Spin",
- effect: "The target becomes trapped within a fierce vortex of fire that rages for four to five turns."
+ name: "Feuerwirbel",
+ effect: "Das Ziel wird für vier bis fünf Runden in einem Feuerkreis gefangen."
},
"thunderShock": {
- name: "Thunder Shock",
- effect: "A jolt of electricity crashes down on the target to inflict damage. This may also leave the target with paralysis."
+ name: "Donnerschock",
+ effect: "Eine Elektro-Attacke, die das Ziel eventuell paralysiert."
},
"thunderbolt": {
- name: "Thunderbolt",
- effect: "A strong electric blast crashes down on the target. This may also leave the target with paralysis."
+ name: "Donnerblitz",
+ effect: "Eine starke Elektro-Attacke, die das Ziel eventuell paralysiert."
},
"thunderWave": {
- name: "Thunder Wave",
- effect: "The user launches a weak jolt of electricity that paralyzes the target."
+ name: "Donnerwelle",
+ effect: "Ein schwacher Stromstoß, der das Ziel paralysiert."
},
"thunder": {
- name: "Thunder",
- effect: "A wicked thunderbolt is dropped on the target to inflict damage. This may also leave the target with paralysis."
+ name: "Donner",
+ effect: "Eine verheerende Elektro-Attacke, die das Ziel eventuell paralysiert."
},
"rockThrow": {
- name: "Rock Throw",
- effect: "The user picks up and throws a small rock at the target to attack."
+ name: "Steinwurf",
+ effect: "Das Ziel wird mit einem kleinen Stein beworfen."
},
"earthquake": {
- name: "Earthquake",
- effect: "The user sets off an earthquake that strikes every Pokémon around it."
+ name: "Erdbeben",
+ effect: "Ein mächtiges Beben, das die anderen Pokémon in der Nähe des Anwenders trifft."
},
"fissure": {
- name: "Fissure",
- effect: "The user opens up a fissure in the ground and drops the target in. The target faints instantly if this attack hits."
+ name: "Geofissur",
+ effect: "Das Ziel wird in eine Erdspalte geworfen. Ist die Attacke erfolgreich, führt sie zu einem K.O."
},
"dig": {
- name: "Dig",
- effect: "The user burrows into the ground, then attacks on the next turn."
+ name: "Schaufler",
+ effect: "In Runde 1 gräbt sich der Anwender ein und in Runde 2 greift er an. Macht Flucht aus Höhlen möglich."
},
"toxic": {
- name: "Toxic",
- effect: "A move that leaves the target badly poisoned. Its poison damage worsens every turn."
+ name: "Toxin",
+ effect: "Vergiftet das Ziel mit einem potenten Toxin schwer. Vergiftung wird von Runde zu Runde stärker."
},
"confusion": {
- name: "Confusion",
- effect: "The target is hit by a weak telekinetic force. This may also confuse the target."
+ name: "Konfusion",
+ effect: "Das Ziel wird von schwacher telekinetischer Energie getroffen und eventuell verwirrt."
},
"psychic": {
- name: "Psychic",
- effect: "The target is hit by a strong telekinetic force. This may also lower the target's Sp. Def stat."
+ name: "Psychokinese",
+ effect: "Starke Psycho-Attacke, die eventuell die Spezial-Verteidigung des Zieles senkt."
},
"hypnosis": {
- name: "Hypnosis",
- effect: "The user employs hypnotic suggestion to make the target fall into a deep sleep."
+ name: "Hypnose",
+ effect: "Hypnose-Attacke, die das Ziel in Schlaf versetzt."
},
"meditate": {
- name: "Meditate",
- effect: "The user meditates to awaken the power deep within its body and raise its Attack stat."
+ name: "Meditation",
+ effect: "Anwender aktiviert Kräfte, die tief in seinem Inneren schlummern, und steigert so seinen Angriffs-Wert."
},
"agility": {
- name: "Agility",
- effect: "The user relaxes and lightens its body to move faster. This sharply raises the Speed stat."
+ name: "Agilität",
+ effect: "Entspannt den Körper, um den Initiative-Wert stark zu steigern."
},
"quickAttack": {
- name: "Quick Attack",
- effect: "The user lunges at the target at a speed that makes it almost invisible. This move always goes first."
+ name: "Ruckzuckhieb",
+ effect: "Sehr schneller Angriff mit Erstschlaggarantie."
},
"rage": {
- name: "Rage",
- effect: "As long as this move is in use, the power of rage raises the Attack stat each time the user is hit in battle."
+ name: "Raserei",
+ effect: "Erhöht Angriff des Anwenders, wenn dieser getroffen wird, solange die Attacke aktiviert ist."
},
"teleport": {
name: "Teleport",
- effect: "The user switches places with a party Pokémon in waiting, if any. If a wild Pokémon uses this move, it flees."
+ effect: "Der Anwender tauscht den Platz mit einem anderen Team-Mitglied, sofern vorhanden. Setzen wilde Pokémon die Attacke ein, ergreifen diese die Flucht."
},
"nightShade": {
- name: "Night Shade",
- effect: "The user makes the target see a frightening mirage. It inflicts damage equal to the user's level."
+ name: "Nachtnebel",
+ effect: "Das Ziel sieht eine Illusion. Richtet Schaden gemäß dem Level des Anwenders an."
},
"mimic": {
- name: "Mimic",
- effect: "The user copies the target's last move. The move can be used during battle until the Pokémon is switched out."
+ name: "Mimikry",
+ effect: "Kopiert die zuvor ausgeführte Attacke des Zieles. Kann im Kampf bis zur Auswechslung verwendet werden."
},
"screech": {
- name: "Screech",
- effect: "An earsplitting screech harshly lowers the target's Defense stat."
+ name: "Kreideschrei",
+ effect: "Stößt einen Schrei aus, um die Verteidigung des Zieles stark zu senken."
},
"doubleTeam": {
- name: "Double Team",
- effect: "By moving rapidly, the user makes illusory copies of itself to raise its evasiveness."
+ name: "Doppelteam",
+ effect: "Erzeugt durch schnelle Bewegungen Ebenbilder, um den Fluchtwert zu erhöhen."
},
"recover": {
- name: "Recover",
- effect: "Restoring its own cells, the user restores its own HP by half of its max HP."
+ name: "Genesung",
+ effect: "Eine Selbstheilung. KP des Anwenders werden um 50 % des maximalen Wertes aufgefüllt."
},
"harden": {
- name: "Harden",
- effect: "The user stiffens all the muscles in its body to raise its Defense stat."
+ name: "Härtner",
+ effect: "Stärkt die Muskulatur und erhöht den Verteidigungs-Wert."
},
"minimize": {
- name: "Minimize",
- effect: "The user compresses its body to make itself look smaller, which sharply raises its evasiveness."
+ name: "Komprimator",
+ effect: "Anwender schrumpft, um seinen Fluchtwert stark zu erhöhen."
},
"smokescreen": {
- name: "Smokescreen",
- effect: "The user releases an obscuring cloud of smoke or ink. This lowers the target's accuracy."
+ name: "Rauchwolke",
+ effect: "Senkt Genauigkeit des Zieles mit Rauch, Tinte oder Ähnlichem."
},
"confuseRay": {
- name: "Confuse Ray",
- effect: "The target is exposed to a sinister ray that triggers confusion."
+ name: "Konfusstrahl",
+ effect: "Ein fieser Strahl, der das Ziel verwirrt."
},
"withdraw": {
- name: "Withdraw",
- effect: "The user withdraws its body into its hard shell, raising its Defense stat."
+ name: "Panzerschutz",
+ effect: "Rückzug in den harten Panzer. Erhöht den Verteidigungs-Wert."
},
"defenseCurl": {
- name: "Defense Curl",
- effect: "The user curls up to conceal weak spots and raise its Defense stat."
+ name: "Einigler",
+ effect: "Verbirgt Schwächen durch Einrollen und hebt gleichzeitig den Verteidigungs-Wert."
},
"barrier": {
- name: "Barrier",
- effect: "The user throws up a sturdy wall that sharply raises its Defense stat."
+ name: "Barriere",
+ effect: "Erzeugt eine Barriere, die den Verteidigungs-Wert stark erhöht."
},
"lightScreen": {
- name: "Light Screen",
- effect: "A wondrous wall of light is put up to reduce damage from special attacks for five turns."
+ name: "Lichtschild",
+ effect: "Erzeugt eine Lichtwand und senkt den Schaden durch Spezial-Angriffe für fünf Runden."
},
"haze": {
- name: "Haze",
- effect: "The user creates a haze that eliminates every stat change among all the Pokémon engaged in battle."
+ name: "Dunkelnebel",
+ effect: "Erzeugt einen dunklen Nebel. Alle Veränderungen der Statuswerte der Kampfteilnehmer werden annulliert."
},
"reflect": {
- name: "Reflect",
- effect: "A wondrous wall of light is put up to reduce damage from physical attacks for five turns."
+ name: "Reflektor",
+ effect: "Eine mysteriöse Wand, die fünf Runden den Schaden von physischen gegnerischen Treffern reduziert."
},
"focusEnergy": {
- name: "Focus Energy",
- effect: "The user takes a deep breath and focuses so that critical hits land more easily."
+ name: "Energiefokus",
+ effect: "Anwender atmet ein und bündelt Kraft. Die Volltrefferquote steigt dadurch."
},
"bide": {
- name: "Bide",
- effect: "The user endures attacks for two turns, then strikes back to cause double the damage taken."
+ name: "Geduld",
+ effect: "Erträgt zwei Runden Angriffe und schlägt dann mit dem doppelten Wert des erlittenen Schadens zurück."
},
"metronome": {
- name: "Metronome",
- effect: "The user waggles a finger and stimulates its brain into randomly using nearly any move."
+ name: "Metronom",
+ effect: "Bewegt Finger, um das Gehirn zu stimulieren. Wählt zufällig eine Attacke aus."
},
"mirrorMove": {
- name: "Mirror Move",
- effect: "The user counters the target by mimicking the target's last move."
+ name: "Spiegeltrick",
+ effect: "Kopiert die letzte Attacke des Zieles und greift es an."
},
"selfDestruct": {
- name: "Self-Destruct",
- effect: "The user attacks everything around it by causing an explosion. The user faints upon using this move."
+ name: "Finale",
+ effect: "Anwender sprengt sich, richtet rundum Riesenschaden an und wird dabei besiegt."
},
"eggBomb": {
- name: "Egg Bomb",
- effect: "A large egg is hurled at the target with maximum force to inflict damage."
+ name: "Eierbombe",
+ effect: "Ein großes Ei wird auf das Ziel abgefeuert, um ihm zu schaden."
},
"lick": {
- name: "Lick",
- effect: "The target is licked with a long tongue, causing damage. This may also leave the target with paralysis."
+ name: "Schlecker",
+ effect: "Leck-Attacke mit langer Zunge. Das Ziel wird eventuell paralysiert."
},
"smog": {
name: "Smog",
- effect: "The target is attacked with a discharge of filthy gases. This may also poison the target."
+ effect: "Angriff mit Gas. Das Ziel kann eventuell vergiftet werden."
},
"sludge": {
- name: "Sludge",
- effect: "Unsanitary sludge is hurled at the target. This may also poison the target."
+ name: "Schlammbad",
+ effect: "Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet."
},
"boneClub": {
- name: "Bone Club",
- effect: "The user clubs the target with a bone. This may also make the target flinch."
+ name: "Knochenkeule",
+ effect: "Schlägt das Ziel mit einer Keule und lässt es eventuell zurückschrecken."
},
"fireBlast": {
- name: "Fire Blast",
- effect: "The target is attacked with an intense blast of all-consuming fire. This may also leave the target with a burn."
+ name: "Feuersturm",
+ effect: "Feuersbrunst, die das Ziel versengt und ihm eventuell eine Verbrennung zufügt."
},
"waterfall": {
- name: "Waterfall",
- effect: "The user charges at the target and may make it flinch."
+ name: "Kaskade",
+ effect: "Eine mächtige Attacke, durch die das Ziel eventuell zurückschreckt."
},
"clamp": {
- name: "Clamp",
- effect: "The target is clamped and squeezed by the user's very thick and sturdy shell for four to five turns."
+ name: "Schnapper",
+ effect: "Fängt und quetscht das Ziel über vier bis fünf Runden durch die harte Schale des Anwenders."
},
"swift": {
- name: "Swift",
- effect: "Star-shaped rays are shot at opposing Pokémon. This attack never misses."
+ name: "Sternschauer",
+ effect: "Verschießt sternförmige Strahlen, die stets treffen, auf Ziele in der Umgebung."
},
"skullBash": {
- name: "Skull Bash",
- effect: "The user tucks in its head to raise its Defense stat on the first turn, then rams the target on the next turn."
+ name: "Schädelwumme",
+ effect: "Der Anwender erhöht in Runde 1 seine Verteidigung und greift in Runde 2 an."
},
"spikeCannon": {
- name: "Spike Cannon",
- effect: "Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row."
+ name: "Dornkanone",
+ effect: "Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander."
},
"constrict": {
- name: "Constrict",
- effect: "The target is attacked with long, creeping tentacles, vines, or the like. This may also lower the target's Speed stat."
+ name: "Umklammerung",
+ effect: "Angriff mit langen Tentakeln oder Ranken. Senkt eventuell den Initiative-Wert."
},
"amnesia": {
- name: "Amnesia",
- effect: "The user temporarily empties its mind to forget its concerns. This sharply raises the user's Sp. Def stat."
+ name: "Amnesie",
+ effect: "Gedächtnisverlust, der die Spezial-Verteidigung stark erhöht."
},
"kinesis": {
- name: "Kinesis",
- effect: "The user distracts the target by bending a spoon. This lowers the target's accuracy."
+ name: "Psykraft",
+ effect: "Lenkt Ziel durch Verbiegen eines Löffels ab. Senkt dessen Genauigkeit."
},
"softBoiled": {
- name: "Soft-Boiled",
- effect: "The user restores its own HP by up to half of its max HP."
+ name: "Weichei",
+ effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt."
},
"highJumpKick": {
- name: "High Jump Kick",
- effect: "The target is attacked with a knee kick from a jump. If it misses, the user is hurt instead."
+ name: "Turmkick",
+ effect: "Sprungtritt mit Knie. Bei Misserfolg verletzt sich der Anwender selbst."
},
"glare": {
- name: "Glare",
- effect: "The user intimidates the target with the pattern on its belly to cause paralysis."
+ name: "Schlangenblick",
+ effect: "Schüchtert Ziel mit dem Muster auf seinem Bauch ein, sodass dieses paralysiert wird."
},
"dreamEater": {
- name: "Dream Eater",
- effect: "The user eats the dreams of a sleeping target. The user's HP is restored by half the damage taken by the target."
+ name: "Traumfresser",
+ effect: "Attacke gegen schlafendes Ziel. Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben."
},
"poisonGas": {
- name: "Poison Gas",
- effect: "A cloud of poison gas is sprayed in the face of opposing Pokémon, poisoning those it hits."
+ name: "Giftwolke",
+ effect: "Hüllt Ziele in der Umgebung in Gas ein, das sie eventuell vergiftet."
},
"barrage": {
- name: "Barrage",
- effect: "Round objects are hurled at the target to strike two to five times in a row."
+ name: "Stakkato",
+ effect: "Wirft zwei- bis fünfmal runde Gegenstände auf das Ziel."
},
"leechLife": {
- name: "Leech Life",
- effect: "The user drains the target's blood. The user's HP is restored by half the damage taken by the target."
+ name: "Blutsauger",
+ effect: "Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben."
},
"lovelyKiss": {
- name: "Lovely Kiss",
- effect: "With a scary face, the user tries to force a kiss on the target. If it succeeds, the target falls asleep."
+ name: "Todeskuss",
+ effect: "Anwender zwingt dem Ziel einen Kuss auf, der Schlaf verursacht."
},
"skyAttack": {
- name: "Sky Attack",
- effect: "A second-turn attack move where critical hits land more easily. This may also make the target flinch."
+ name: "Himmelsfeger",
+ effect: "Anwender greift in der zweiten Runde mit hoher Volltrefferquote an. Ziel schreckt eventuell zurück."
},
"transform": {
- name: "Transform",
- effect: "The user transforms into a copy of the target right down to having the same move set."
+ name: "Wandler",
+ effect: "Anwender verwandelt sich in ein Abbild des Zieles und kann so auf die gleichen Attacken zugreifen."
},
"bubble": {
- name: "Bubble",
- effect: "A spray of countless bubbles is jetted at the opposing Pokémon. This may also lower their Speed stat."
+ name: "Blubber",
+ effect: "Angriff mit Blasen. Initiative-Wert des Zieles wird eventuell gesenkt."
},
"dizzyPunch": {
- name: "Dizzy Punch",
- effect: "The target is hit with rhythmically launched punches. This may also leave the target confused."
+ name: "Irrschlag",
+ effect: "Rhythmische Schläge, die das Ziel verwirren können."
},
"spore": {
- name: "Spore",
- effect: "The user scatters bursts of spores that induce sleep."
+ name: "Pilzspore",
+ effect: "Erzeugt eine Wolke aus einschläfernden Sporen."
},
"flash": {
- name: "Flash",
- effect: "The user flashes a bright light that cuts the target's accuracy."
+ name: "Blitz",
+ effect: "Erzeugt helles Licht, das die Genauigkeit des Zieles senkt."
},
"psywave": {
- name: "Psywave",
- effect: "The target is attacked with an odd psychic wave. The attack varies in intensity."
+ name: "Psywelle",
+ effect: "Anwender erzeugt eine mysteriöse Energiewelle, deren Intensität von Mal zu Mal anders ausfällt."
},
"splash": {
- name: "Splash",
- effect: "The user just flops and splashes around to no effect at all..."
+ name: "Platscher",
+ effect: "Nur ein Platscher, der überhaupt nichts bewirkt."
},
"acidArmor": {
- name: "Acid Armor",
- effect: "The user alters its cellular structure to liquefy itself, sharply raising its Defense stat."
+ name: "Säurepanzer",
+ effect: "Verflüssigt Körperzellen des Anwenders. Erhöht den Verteidigungs-Wert stark."
},
"crabhammer": {
- name: "Crabhammer",
- effect: "The target is hammered with a large pincer. Critical hits land more easily."
+ name: "Krabbhammer",
+ effect: "Schlägt mit Schere zu. Hohe Volltrefferquote."
},
"explosion": {
name: "Explosion",
- effect: "The user attacks everything around it by causing a tremendous explosion. The user faints upon using this move."
+ effect: "Anwender explodiert, richtet bei allen Pokémon in seiner Umgebung großen Schaden an und wird selbst kampfunfähig."
},
"furySwipes": {
- name: "Fury Swipes",
- effect: "The target is raked with sharp claws or scythes quickly two to five times in a row."
+ name: "Kratzfurie",
+ effect: "Beharkt das Ziel zwei- bis fünfmal mit scharfen Klauen oder Sicheln."
},
"bonemerang": {
- name: "Bonemerang",
- effect: "The user throws the bone it holds. The bone loops around to hit the target twice—coming and going."
+ name: "Knochmerang",
+ effect: "Ein Bumerang aus Knochen, der zweimal trifft."
},
"rest": {
- name: "Rest",
- effect: "The user goes to sleep for two turns. This fully restores the user's HP and heals any status conditions."
+ name: "Erholung",
+ effect: "Anwender wird vollkommen geheilt und schläft die folgenden zwei Runden."
},
"rockSlide": {
- name: "Rock Slide",
- effect: "Large boulders are hurled at opposing Pokémon to inflict damage. This may also make the opposing Pokémon flinch."
+ name: "Steinhagel",
+ effect: "Schleudert riesige Felsen auf Ziele in der Umgebung, die eventuell zurückschrecken."
},
"hyperFang": {
- name: "Hyper Fang",
- effect: "The user bites hard on the target with its sharp front fangs. This may also make the target flinch."
+ name: "Hyperzahn",
+ effect: "Angriff mit scharfen Reißzähnen. Ziel schreckt eventuell zurück."
},
"sharpen": {
- name: "Sharpen",
- effect: "The user makes its edges more jagged, which raises its Attack stat."
+ name: "Schärfer",
+ effect: "Anwender senkt die Polygonzahl, um Kanten zu erzeugen, die den Angriffs-Wert erhöhen."
},
"conversion": {
- name: "Conversion",
- effect: "The user changes its type to become the same type as the move at the top of the list of moves it knows."
+ name: "Umwandlung",
+ effect: "Wandelt den Typ des Anwenders in den Typ der ersten Attacke des Anwenders um."
},
"triAttack": {
- name: "Tri Attack",
- effect: "The user strikes with a simultaneous three-beam attack. This may also burn, freeze, or paralyze the target."
+ name: "Triplette",
+ effect: "Feuert drei Strahlen ab. Verursacht eventuell Paralyse, Verbrennung oder Einfrieren."
},
"superFang": {
- name: "Super Fang",
- effect: "The user chomps hard on the target with its sharp front fangs. This cuts the target's HP in half."
+ name: "Superzahn",
+ effect: "Greift mit scharfen Reißzähnen an. KP des Zieles werden halbiert."
},
"slash": {
- name: "Slash",
- effect: "The target is attacked with a slash of claws or blades. Critical hits land more easily."
+ name: "Schlitzer",
+ effect: "Hieb mit Klauen oder Ähnlichem. Hohe Volltrefferquote."
},
"substitute": {
- name: "Substitute",
- effect: "The user creates a substitute for itself using some of its HP. The substitute serves as the user's decoy."
+ name: "Delegator",
+ effect: "Anwender setzt eine kleine Menge an KP ein, um einen Doppelgänger zu erzeugen, der für ihn Schläge einsteckt."
},
"struggle": {
- name: "Struggle",
- effect: "This attack is used in desperation only if the user has no PP. It also damages the user a little."
+ name: "Verzweifler",
+ effect: "Angriff nur bei verbrauchten AP. Anwender verletzt sich selbst leicht."
},
"sketch": {
- name: "Sketch",
- effect: "It enables the user to permanently learn the move last used by the target. Once used, Sketch disappears."
+ name: "Nachahmer",
+ effect: "Anwender lernt die letzte Attacke des Zieles dauerhaft. Nachahmer verschwindet nach Gebrauch."
},
"tripleKick": {
- name: "Triple Kick",
- effect: "A consecutive three-kick attack that becomes more powerful with each successful hit."
+ name: "Dreifachkick",
+ effect: "Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu."
},
"thief": {
- name: "Thief",
- effect: "The user attacks and has a 30% chance to steal the target's held item simultaneously."
+ name: "Raub",
+ effect: "Erlaubt es, das Item des Zieles zu stehlen, solang der Anwender selbst keins bei sich trägt."
},
"spiderWeb": {
- name: "Spider Web",
- effect: "The user ensnares the target with thin, gooey silk so it can't flee from battle."
+ name: "Spinnennetz",
+ effect: "Wickelt das Ziel ein. Flucht oder Tausch unmöglich."
},
"mindReader": {
- name: "Mind Reader",
- effect: "The user senses the target's movements with its mind to ensure its next attack does not miss the target."
+ name: "Willensleser",
+ effect: "Ahnt Bewegungen des Zieles voraus, um zu gewährleisten, dass die nächste eigene Attacke trifft."
},
"nightmare": {
- name: "Nightmare",
- effect: "A sleeping target sees a nightmare that inflicts some damage every turn."
+ name: "Nachtmahr",
+ effect: "Dem schlafenden Ziel wird durch einen Alptraum in jeder Runde Schaden zugefügt, solang es schläft."
},
"flameWheel": {
- name: "Flame Wheel",
- effect: "The user cloaks itself in fire and charges at the target. This may also leave the target with a burn."
+ name: "Flammenrad",
+ effect: "Feuer-Attacke, die das Ziel eventuell verbrennt."
},
"snore": {
- name: "Snore",
- effect: "This attack can be used only if the user is asleep. The harsh noise may also make the target flinch."
+ name: "Schnarcher",
+ effect: "Attacke nur im Schlaf möglich. Ziel schreckt eventuell zurück."
},
"curse": {
- name: "Curse",
- effect: "A move that works differently for the Ghost type than for all other types."
+ name: "Fluch",
+ effect: "Attacke, deren Wirkung davon abhängt, ob der Anwender ein Geist-Pokémon ist."
},
"flail": {
- name: "Flail",
- effect: "The user flails about aimlessly to attack. The less HP the user has, the greater the move's power."
+ name: "Dreschflegel",
+ effect: "Attacke richtet mehr Schaden an, wenn eigene KP niedrig sind."
},
"conversion2": {
- name: "Conversion 2",
- effect: "The user changes its type to make itself resistant to the type of the attack the target used last."
+ name: "Umwandlung2",
+ effect: "Anwender ändert Typ und wird gegen letzten Angriffstyp resistent."
},
"aeroblast": {
- name: "Aeroblast",
- effect: "A vortex of air is shot at the target to inflict damage. Critical hits land more easily."
+ name: "Luftstoß",
+ effect: "Erzeugt Luftstrudel gegen das Ziel. Hohe Volltrefferquote."
},
"cottonSpore": {
- name: "Cotton Spore",
- effect: "The user releases cotton-like spores that cling to opposing Pokémon, which harshly lowers their Speed stats."
+ name: "Baumwollsaat",
+ effect: "Wattebäusche heften sich an das Ziel. Der Initiative-Wert sinkt stark."
},
"reversal": {
- name: "Reversal",
- effect: "An all-out attack that becomes more powerful the less HP the user has."
+ name: "Gegenschlag",
+ effect: "Richtet mehr Schaden an, wenn eigene KP niedrig sind."
},
"spite": {
- name: "Spite",
- effect: "The user unleashes its grudge on the move last used by the target by cutting 4 PP from it."
+ name: "Groll",
+ effect: "AP der letzten Attacke des Zieles werden um 4 gesenkt."
},
"powderSnow": {
- name: "Powder Snow",
- effect: "The user attacks with a chilling gust of powdery snow. This may also freeze opposing Pokémon."
+ name: "Pulverschnee",
+ effect: "Angriff mit Schnee. Das Ziel wird eventuell eingefroren."
},
"protect": {
- name: "Protect",
- effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession."
+ name: "Schutzschild",
+ effect: "Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung."
},
"machPunch": {
- name: "Mach Punch",
- effect: "The user throws a punch at blinding speed. This move always goes first."
+ name: "Tempohieb",
+ effect: "Extrem schneller Hieb, der stets zuerst trifft."
},
"scaryFace": {
- name: "Scary Face",
- effect: "The user frightens the target with a scary face to harshly lower its Speed stat."
+ name: "Grimasse",
+ effect: "Jagt dem Ziel mit einer Grimasse Angst ein. Dessen Initiative-Wert sinkt stark."
},
"feintAttack": {
- name: "Feint Attack",
- effect: "The user approaches the target disarmingly, then throws a sucker punch. This attack never misses."
+ name: "Finte",
+ effect: "Anwender nähert sich mit Unschuldsmiene dem Ziel und schlägt zu, sobald dieses unachtsam wird. Ein Treffer ist gewiss."
},
"sweetKiss": {
- name: "Sweet Kiss",
- effect: "The user kisses the target with a sweet, angelic cuteness that causes confusion."
+ name: "Bitterkuss",
+ effect: "Anwender küsst das Ziel, das durch diese Niedlichkeit verwirrt wird."
},
"bellyDrum": {
- name: "Belly Drum",
- effect: "The user maximizes its Attack stat in exchange for HP equal to half its max HP."
+ name: "Bauchtrommel",
+ effect: "Der Anwender maximiert den Angriffs-Wert auf Kosten der Hälfte seiner maximalen KP."
},
"sludgeBomb": {
- name: "Sludge Bomb",
- effect: "Unsanitary sludge is hurled at the target. This may also poison the target."
+ name: "Matschbombe",
+ effect: "Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet."
},
"mudSlap": {
- name: "Mud-Slap",
- effect: "The user hurls mud in the target's face to inflict damage and lower its accuracy."
+ name: "Lehmschelle",
+ effect: "Schadet dem Ziel durch Matsch. Dessen Genauigkeit sinkt."
},
"octazooka": {
name: "Octazooka",
- effect: "The user attacks by spraying ink in the target's face or eyes. This may also lower the target's accuracy."
+ effect: "Schießt mit Tinte, um Schaden anzurichten und die Genauigkeit zu senken."
},
"spikes": {
- name: "Spikes",
- effect: "The user lays a trap of spikes at the opposing team's feet. The trap hurts Pokémon that switch into battle."
+ name: "Stachler",
+ effect: "Der Anwender verteilt Stacheln, die gegnerische Pokémon verletzen, die in den Kampf gerufen werden."
},
"zapCannon": {
- name: "Zap Cannon",
- effect: "The user fires an electric blast like a cannon to inflict damage and cause paralysis."
+ name: "Blitzkanone",
+ effect: "Kanonenähnlicher Elektro-Schuss, der schadet und paralysiert."
},
"foresight": {
- name: "Foresight",
- effect: "Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit."
+ name: "Scharfblick",
+ effect: "Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles."
},
"destinyBond": {
- name: "Destiny Bond",
- effect: "After using this move, if the user faints, the Pokémon that landed the knockout hit also faints. Its chance of failing rises if it is used in succession."
+ name: "Abgangsbund",
+ effect: "Wird der Anwender nach Einsatz dieser Attacke besiegt, führt dies auch beim Ziel zum K.O."
},
"perishSong": {
- name: "Perish Song",
- effect: "Any Pokémon that hears this song faints in three turns, unless it switches out of battle."
+ name: "Abgesang",
+ effect: "Wer diese Musik hört, wird nach drei Runden besiegt. Rettung ist durch den Eintausch eines neuen Pokémon möglich."
},
"icyWind": {
- name: "Icy Wind",
- effect: "The user attacks with a gust of chilled air. This also lowers opposing Pokémon's Speed stats."
+ name: "Eissturm",
+ effect: "Eis-Attacke, die dem Ziel Schaden zufügt und seinen Initiative-Wert senkt."
},
"detect": {
- name: "Detect",
- effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession."
+ name: "Scanner",
+ effect: "Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung."
},
"boneRush": {
- name: "Bone Rush",
- effect: "The user strikes the target with a hard bone two to five times in a row."
+ name: "Knochenhatz",
+ effect: "Greift Ziel zwei- bis fünfmal in Folge mit einem harten Knochen an."
},
"lockOn": {
- name: "Lock-On",
- effect: "The user takes sure aim at the target. This ensures the next attack does not miss the target."
+ name: "Zielschuss",
+ effect: "Visiert das Ziel an und trifft in der nächsten Runde garantiert."
},
"outrage": {
- name: "Outrage",
- effect: "The user rampages and attacks for two to three turns. The user then becomes confused."
+ name: "Wutanfall",
+ effect: "Attacke über zwei bis drei Runden, die den Anwender verwirrt."
},
"sandstorm": {
- name: "Sandstorm",
- effect: "A five-turn sandstorm is summoned to hurt all combatants except Rock, Ground, and Steel types. It raises the Sp. Def stat of Rock types."
+ name: "Sandsturm",
+ effect: "Sandsturm für fünf Runden. Fügt Pokémon von jedem Typ außer Gestein, Boden und Stahl Schaden zu."
},
"gigaDrain": {
- name: "Giga Drain",
- effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target."
+ name: "Gigasauger",
+ effect: "Das Ziel wird angegriffen und die Hälfte des zugefügten Schadens dem Angreifer als KP gutgeschrieben."
},
"endure": {
- name: "Endure",
- effect: "The user endures any attack with at least 1 HP. Its chance of failing rises if it is used in succession."
+ name: "Ausdauer",
+ effect: "Nach fatalen Attacken bleibt stets 1 KP übrig. Misserfolg bei Wiederholung möglich."
},
"charm": {
- name: "Charm",
- effect: "The user gazes at the target rather charmingly, making it less wary. This harshly lowers the target's Attack stat."
+ name: "Charme",
+ effect: "Betört das Ziel und reduziert dessen Angriffs-Wert stark."
},
"rollout": {
- name: "Rollout",
- effect: "The user continually rolls into the target over five turns. It becomes more powerful each time it hits."
+ name: "Walzer",
+ effect: "Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu."
},
"falseSwipe": {
- name: "False Swipe",
- effect: "A restrained attack that prevents the target from fainting. The target is left with at least 1 HP."
+ name: "Trugschlag",
+ effect: "Ein Angriff, der dem Ziel zumindest 1 KP lässt."
},
"swagger": {
- name: "Swagger",
- effect: "The user enrages and confuses the target. However, this also sharply raises the target's Attack stat."
+ name: "Angeberei",
+ effect: "Verwirrt das Ziel und erhöht dessen Angriffs-Wert stark."
},
"milkDrink": {
- name: "Milk Drink",
- effect: "The user restores its own HP by up to half of its max HP."
+ name: "Milchgetränk",
+ effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt."
},
"spark": {
- name: "Spark",
- effect: "The user throws an electrically charged tackle at the target. This may also leave the target with paralysis."
+ name: "Funkensprung",
+ effect: "Elektro-Hieb, der das Ziel paralysieren kann."
},
"furyCutter": {
- name: "Fury Cutter",
- effect: "The target is slashed with scythes or claws. This attack becomes more powerful if it hits in succession."
+ name: "Zornklinge",
+ effect: "Eine Attacke mit Scheren oder Klauen, deren Härte bei aufeinanderfolgenden Treffern zunimmt."
},
"steelWing": {
- name: "Steel Wing",
- effect: "The target is hit with wings of steel. This may also raise the user's Defense stat."
+ name: "Stahlflügel",
+ effect: "Trifft das Ziel mit Stahlflügeln. Verteidigungs-Wert des Anwenders steigt eventuell."
},
"meanLook": {
- name: "Mean Look",
- effect: "The user pins the target with a dark, arresting look. The target becomes unable to flee."
+ name: "Horrorblick",
+ effect: "Böser Blick, der die Flucht des Zieles vereitelt."
},
"attract": {
- name: "Attract",
- effect: "If it is the opposite gender of the user, the target becomes infatuated and less likely to attack."
+ name: "Anziehung",
+ effect: "Angriff auf Anwender vom anderen Geschlecht wird unwahrscheinlich."
},
"sleepTalk": {
- name: "Sleep Talk",
- effect: "While it is asleep, the user randomly uses one of the moves it knows."
+ name: "Schlafrede",
+ effect: "Anwender setzt per Zufall eine ihm bekannte Attacke im Schlaf ein."
},
"healBell": {
- name: "Heal Bell",
- effect: "The user makes a soothing bell chime to heal the status conditions of all the party Pokémon."
+ name: "Vitalglocke",
+ effect: "Läutet beruhigend und heilt alle Statusprobleme im Team."
},
"return": {
- name: "Return",
- effect: "This full-power attack grows more powerful the more the user likes its Trainer."
+ name: "Rückkehr",
+ effect: "Angriff, dessen Kraft bei Freundschaft zum Trainer größer wird."
},
"present": {
- name: "Present",
- effect: "The user attacks by giving the target a gift with a hidden trap. It restores HP sometimes, however."
+ name: "Geschenk",
+ effect: "Eine Bombe als Geschenk. Kann auch KP des Zieles wiederherstellen."
},
"frustration": {
name: "Frustration",
- effect: "This full-power attack grows more powerful the less the user likes its Trainer."
+ effect: "Die Attacke wird stärker, je weniger der Anwender seinen Trainer mag."
},
"safeguard": {
- name: "Safeguard",
- effect: "The user creates a protective field that prevents status conditions for five turns."
+ name: "Bodyguard",
+ effect: "Team des Anwenders ist fünf Runden vor Statusproblemen geschützt."
},
"painSplit": {
- name: "Pain Split",
- effect: "The user adds its HP to the target's HP, then equally shares the combined HP with the target."
+ name: "Leidteiler",
+ effect: "Addiert KP von Anwender und Ziel. Teilt sie gerecht auf."
},
"sacredFire": {
- name: "Sacred Fire",
- effect: "The target is razed with a mystical fire of great intensity. This may also leave the target with a burn."
+ name: "Läuterfeuer",
+ effect: "Mystische Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet."
},
"magnitude": {
- name: "Magnitude",
- effect: "The user attacks everything around it with a ground-shaking quake. Its power varies."
+ name: "Intensität",
+ effect: "Erdbebenartiger Angriff von zufälliger Stärke gegen andere Pokémon in der Umgebung des Anwenders."
},
"dynamicPunch": {
- name: "Dynamic Punch",
- effect: "The user punches the target with full, concentrated power. This confuses the target if it hits."
+ name: "Wuchtschlag",
+ effect: "Kräftiger Schlag, der das Ziel bei Erfolg verwirrt."
},
"megahorn": {
- name: "Megahorn",
- effect: "Using its tough and impressive horn, the user rams into the target with no letup."
+ name: "Vielender",
+ effect: "Brutaler Ramm-Angriff mit spitzem, beeindruckendem Horn."
},
"dragonBreath": {
- name: "Dragon Breath",
- effect: "The user exhales a mighty gust that inflicts damage. This may also leave the target with paralysis."
+ name: "Feuerodem",
+ effect: "Fegt das Ziel mit zerstörerisch heißem Atem weg. Paralysiert das Ziel eventuell."
},
"batonPass": {
- name: "Baton Pass",
- effect: "The user switches places with a party Pokémon in waiting and passes along any stat changes."
+ name: "Stafette",
+ effect: "Tauscht das eigene Pokémon aus. Alle Statusveränderungen bleiben bestehen."
},
"encore": {
- name: "Encore",
- effect: "The user compels the target to keep using the move it encored for three turns."
+ name: "Zugabe",
+ effect: "Das Ziel wiederholt die letzte Attacke drei Runden lang."
},
"pursuit": {
- name: "Pursuit",
- effect: "The power of this attack move is doubled if it's used on a target that's switching out of battle."
+ name: "Verfolgung",
+ effect: "Die Attacke richtet beim Ziel doppelten Schaden an, falls es ausgetauscht wird."
},
"rapidSpin": {
- name: "Rapid Spin",
- effect: "A spin attack that can also eliminate such moves as Bind, Wrap, and Leech Seed. This also raises the user's Speed stat."
+ name: "Turbodreher",
+ effect: "Trifft das Ziel mit einer Dreh-Attacke. Befreit sich unter anderem von Wickel, Klammergriff, Egelsamen und Stachler."
},
"sweetScent": {
- name: "Sweet Scent",
- effect: "A sweet scent that harshly lowers opposing Pokémon's evasiveness."
+ name: "Lockduft",
+ effect: "Lockt Ziele an und senkt deren Fluchtwert. Lockt im Gras auch wilde Pokémon an."
},
"ironTail": {
- name: "Iron Tail",
- effect: "The target is slammed with a steel-hard tail. This may also lower the target's Defense stat."
+ name: "Eisenschweif",
+ effect: "Attacke mit hartem Eisenschweif. Senkt eventuell den Verteidigungs-Wert des Zieles."
},
"metalClaw": {
- name: "Metal Claw",
- effect: "The target is raked with steel claws. This may also raise the user's Attack stat."
+ name: "Metallklaue",
+ effect: "Klauen-Attacke, die eventuell den Angriffs-Wert des Anwenders erhöht."
},
"vitalThrow": {
- name: "Vital Throw",
- effect: "The user attacks last. In return, this throw move never misses."
+ name: "Überwurf",
+ effect: "Anwender greift als Letzter an, hat dafür aber eine Treffergarantie beim eigenen Angriff."
},
"morningSun": {
- name: "Morning Sun",
- effect: "The user restores its own HP. The amount of HP regained varies with the weather."
+ name: "Morgengrauen",
+ effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab."
},
"synthesis": {
- name: "Synthesis",
- effect: "The user restores its own HP. The amount of HP regained varies with the weather."
+ name: "Synthese",
+ effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab."
},
"moonlight": {
- name: "Moonlight",
- effect: "The user restores its own HP. The amount of HP regained varies with the weather."
+ name: "Mondschein",
+ effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab."
},
"hiddenPower": {
- name: "Hidden Power",
- effect: "A unique attack that varies in type depending on the Pokémon using it."
+ name: "Kraftreserve",
+ effect: "Wirkung und Typ der Attacke hängen vom Anwender ab."
},
"crossChop": {
- name: "Cross Chop",
- effect: "The user delivers a double chop with its forearms crossed. Critical hits land more easily."
+ name: "Kreuzhieb",
+ effect: "Doppelter Hieb mit den Unterarmen. Hohe Volltrefferquote."
},
"twister": {
- name: "Twister",
- effect: "The user whips up a vicious tornado to tear at opposing Pokémon. This may also make them flinch."
+ name: "Windhose",
+ effect: "Trifft Ziele in der Umgebung mit einem heftigen Wirbelsturm, was diese eventuell zurückschrecken lässt."
},
"rainDance": {
- name: "Rain Dance",
- effect: "The user summons a heavy rain that falls for five turns, powering up Water-type moves. It lowers the power of Fire-type moves."
+ name: "Regentanz",
+ effect: "Anwender erzeugt starken Regen. Die Stärke von Wasser-Attacken erhöht sich fünf Runden lang."
},
"sunnyDay": {
- name: "Sunny Day",
- effect: "The user intensifies the sun for five turns, powering up Fire-type moves. It lowers the power of Water-type moves."
+ name: "Sonnentag",
+ effect: "Die Sonne brennt unbarmherzig fünf Runden lang. Dadurch werden Attacken vom Typ Feuer verstärkt."
},
"crunch": {
- name: "Crunch",
- effect: "The user crunches up the target with sharp fangs. This may also lower the target's Defense stat."
+ name: "Knirscher",
+ effect: "Beißt mit scharfen Reißzähnen zu und senkt eventuell die Verteidigung."
},
"mirrorCoat": {
- name: "Mirror Coat",
- effect: "A retaliation move that counters any special attack, inflicting double the damage taken."
+ name: "Spiegelcape",
+ effect: "Kontert den Spezial-Angriff des Gegners mit doppeltem Schaden."
},
"psychUp": {
- name: "Psych Up",
- effect: "The user hypnotizes itself into copying any stat change made by the target."
+ name: "Psycho-Plus",
+ effect: "Der Anwender hypnotisiert sich selbst, um die Statusveränderungen des Zieles zu kopieren."
},
"extremeSpeed": {
- name: "Extreme Speed",
- effect: "The user charges the target at blinding speed. This move always goes first."
+ name: "Turbotempo",
+ effect: "Extrem schnelle und kraftvolle Attacke, die stets zuerst trifft."
},
"ancientPower": {
- name: "Ancient Power",
- effect: "The user attacks with a prehistoric power. This may also raise all the user's stats at once."
+ name: "Antik-Kraft",
+ effect: "Angriff mit antiker Kraft, der alle Statuswerte erhöhen kann."
},
"shadowBall": {
- name: "Shadow Ball",
- effect: "The user hurls a shadowy blob at the target. This may also lower the target's Sp. Def stat."
+ name: "Spukball",
+ effect: "Bewirft das Ziel mit gruseligem Ball und senkt eventuell die Spezial-Verteidigung."
},
"futureSight": {
- name: "Future Sight",
- effect: "Two turns after this move is used, a hunk of psychic energy attacks the target."
+ name: "Seher",
+ effect: "Zwei Runden, nachdem Seher eingesetzt wurde, erfolgt der Angriff."
},
"rockSmash": {
- name: "Rock Smash",
- effect: "The user attacks with a punch. This may also lower the target's Defense stat."
+ name: "Zertrümmerer",
+ effect: "Diese steinbrechende Attacke kann den Verteidigungs-Wert des Zieles senken und außerhalb von Kämpfen rissige Felsen zertrümmern."
},
"whirlpool": {
name: "Whirlpool",
- effect: "The user traps the target in a violent swirling whirlpool for four to five turns."
+ effect: "Das Ziel wird für vier bis fünf Runden in einer Wasserhose gefangen."
},
"beatUp": {
- name: "Beat Up",
- effect: "The user gets all party Pokémon to attack the target. The more party Pokémon, the greater the number of attacks."
+ name: "Prügler",
+ effect: "Das gesamte Team nimmt aktiv am Kampf teil. Je mehr Pokémon, desto höher die Anzahl der Angriffe."
},
"fakeOut": {
- name: "Fake Out",
- effect: "This attack hits first and makes the target flinch. It only works the first turn each time the user enters battle."
+ name: "Mogelhieb",
+ effect: "Diese Attacke trifft zuerst. Das Ziel schreckt zurück. Gelingt nur in der ersten Runde eines Kampfes."
},
"uproar": {
- name: "Uproar",
- effect: "The user attacks in an uproar for three turns. During that time, no Pokémon can fall asleep."
+ name: "Aufruhr",
+ effect: "Anwender greift an, indem er über drei Runden hinweg einen Aufruhr erzeugt. Verhindert Schlaf."
},
"stockpile": {
- name: "Stockpile",
- effect: "The user charges up power and raises both its Defense and Sp. Def stats. The move can be used three times."
+ name: "Horter",
+ effect: "Lädt Kraft für später auf. Erhöht Verteidigung und Spezial-Verteidigung. Kann bis zu dreimal eingesetzt werden."
},
"spitUp": {
- name: "Spit Up",
- effect: "The power stored using the move Stockpile is released at once in an attack. The more power is stored, the greater the move's power."
+ name: "Entfessler",
+ effect: "Entlädt die Kraft, die während des Einsatzes von Horter gesammelt wurde."
},
"swallow": {
- name: "Swallow",
- effect: "The power stored using the move Stockpile is absorbed by the user to heal its HP. Storing more power heals more HP."
+ name: "Verzehrer",
+ effect: "Absorbiert die gehortete Kraft, um KP aufzufüllen."
},
"heatWave": {
- name: "Heat Wave",
- effect: "The user attacks by exhaling hot breath on opposing Pokémon. This may also leave those Pokémon with a burn."
+ name: "Hitzewelle",
+ effect: "Ziele werden von Sturm aus heißer Luft getroffen und verbrennen sich eventuell."
},
"hail": {
- name: "Hail",
- effect: "The user summons a hailstorm lasting five turns. It damages all Pokémon except Ice types."
+ name: "Hagelsturm",
+ effect: "Hagelsturm für fünf Runden. Schadet allen, außer Eis-Pokémon."
},
"torment": {
- name: "Torment",
- effect: "The user torments and enrages the target, making it incapable of using the same move twice in a row."
+ name: "Folterknecht",
+ effect: "Erzürnt das Ziel, um wiederholten Einsatz derselben Attacke zu verhindern."
},
"flatter": {
- name: "Flatter",
- effect: "Flattery is used to confuse the target. However, this also raises the target's Sp. Atk stat."
+ name: "Schmeichler",
+ effect: "Schmeichelt dem Ziel, um es zu verwirren. Erhöht dessen Spezial-Angriff."
},
"willOWisp": {
- name: "Will-O-Wisp",
- effect: "The user shoots a sinister flame at the target to inflict a burn."
+ name: "Irrlicht",
+ effect: "Angriff mit unheimlicher Flamme, die das Ziel verbrennt."
},
"memento": {
- name: "Memento",
- effect: "The user faints when using this move. In return, this harshly lowers the target's Attack and Sp. Atk stats."
+ name: "Memento-Mori",
+ effect: "Der Anwender wird besiegt und senkt den Angriffs-Wert und den Spezial-Angriff des Zieles stark."
},
"facade": {
- name: "Facade",
- effect: "This attack move doubles its power if the user is poisoned, burned, or paralyzed."
+ name: "Fassade",
+ effect: "Doppelte Stärke nach Verbrennung, Paralyse oder Vergiftung."
},
"focusPunch": {
- name: "Focus Punch",
- effect: "The user focuses its mind before launching a punch. This move fails if the user is hit before it is used."
+ name: "Power-Punch",
+ effect: "Anwender konzentriert sich, bevor er angreift. Wird er vorher getroffen, ist die Attacke erfolglos."
},
"smellingSalts": {
- name: "Smelling Salts",
- effect: "This attack's power is doubled when used on a target with paralysis. This also cures the target's paralysis, however."
+ name: "Riechsalz",
+ effect: "Doppelt wirksam gegen paralysierte Ziele, heilt sie aber auch von der Paralyse."
},
"followMe": {
- name: "Follow Me",
- effect: "The user draws attention to itself, making all targets take aim only at the user."
+ name: "Spotlight",
+ effect: "Zieht Aufmerksamkeit auf sich. Gegner greift nur Anwender an."
},
"naturePower": {
- name: "Nature Power",
- effect: "This attack makes use of nature's power. Its effects vary depending on the user's environment."
+ name: "Natur-Kraft",
+ effect: "Angriff mit der Kraft der Natur, dessen Typ vom Ort abhängt, wo er durchgeführt wird."
},
"charge": {
- name: "Charge",
- effect: "The user boosts the power of the Electric move it uses on the next turn. This also raises the user's Sp. Def stat."
+ name: "Ladevorgang",
+ effect: "Lädt Energie für die kommende Elektro-Attacke auf. Erhöht die Spezial-Verteidigung."
},
"taunt": {
- name: "Taunt",
- effect: "The target is taunted into a rage that allows it to use only attack moves for three turns."
+ name: "Verhöhner",
+ effect: "Bringt das Ziel in Rage. Dieses kann über drei Runden hinweg nur noch angreifen."
},
"helpingHand": {
- name: "Helping Hand",
- effect: "The user assists an ally by boosting the power of that ally's attack."
+ name: "Rechte Hand",
+ effect: "Anwender steigert die Kraft eines Angriffes eines Freundes."
},
"trick": {
- name: "Trick",
- effect: "The user catches the target off guard and swaps its held item with its own."
+ name: "Trickbetrug",
+ effect: "Der Anwender überrumpelt das Ziel und tauscht mit ihm die getragenen Items."
},
"rolePlay": {
- name: "Role Play",
- effect: "The user mimics the target completely, copying the target's Ability."
+ name: "Rollenspiel",
+ effect: "Parodiert das Ziel und kopiert seine Fähigkeit."
},
"wish": {
- name: "Wish",
- effect: "One turn after this move is used, the user's or its replacement's HP is restored by half the user's max HP."
+ name: "Wunschtraum",
+ effect: "Ein Wunsch füllt in der nächsten Runde 50 % der KP des Anwenders bei diesem oder einem eingewechselten Pokémon auf."
},
"assist": {
- name: "Assist",
- effect: "The user hurriedly and randomly uses a move among those known by ally Pokémon."
+ name: "Zuschuss",
+ effect: "Greift zufällig mit einer Attacke eines Mitstreiters an."
},
"ingrain": {
- name: "Ingrain",
- effect: "The user lays roots that restore its HP on every turn. Because it's rooted, it can't switch out."
+ name: "Verwurzler",
+ effect: "Verwurzelung füllt jede Runde KP auf. Austausch ist unmöglich."
},
"superpower": {
- name: "Superpower",
- effect: "The user attacks the target with great power. However, this also lowers the user's Attack and Defense stats."
+ name: "Kraftkoloss",
+ effect: "Starke Attacke, die jedoch auch den Angriff und die Verteidigung des Anwenders senkt."
},
"magicCoat": {
- name: "Magic Coat",
- effect: "Moves like Leech Seed and moves that inflict status conditions are blocked by a barrier and reflected back to the user of those moves."
+ name: "Magiemantel",
+ effect: "Egelsamen und alle Attacken mit Status verändernden Effekten prallen ab."
},
"recycle": {
- name: "Recycle",
- effect: "The user recycles a held item that has been used in battle so it can be used again."
+ name: "Aufbereitung",
+ effect: "Recycling eines getragenen Items, das zuvor im Kampf verwendet wurde."
},
"revenge": {
- name: "Revenge",
- effect: "This attack move's power is doubled if the user has been hurt by the opponent in the same turn."
+ name: "Vergeltung",
+ effect: "Schaden verdoppelt sich, wenn der Anwender in der Runde bereits Schaden vom Ziel des Angriffes genommen hat."
},
"brickBreak": {
- name: "Brick Break",
- effect: "The user attacks with a swift chop. It can also break barriers, such as Light Screen and Reflect."
+ name: "Durchbruch",
+ effect: "Ein beherzter Handkantenschlag. Durchbricht Barrieren wie Lichtschild und Reflektor."
},
"yawn": {
- name: "Yawn",
- effect: "The user lets loose a huge yawn that lulls the target into falling asleep on the next turn."
+ name: "Gähner",
+ effect: "Angreifer gähnt und das Ziel schläft in der nächsten Runde ein."
},
"knockOff": {
- name: "Knock Off",
- effect: "The user slaps down the target's held item, and that item can't be used in that battle. The move does more damage if the target has a held item."
+ name: "Abschlag",
+ effect: "Schlägt das Item des Zieles weg und vereitelt so dessen Gebrauch während des Kampfes. Mehr Schaden gegen Ziele, die ein Item bei sich tragen."
},
"endeavor": {
- name: "Endeavor",
- effect: "This attack move cuts down the target's HP to equal the user's HP."
+ name: "Notsituation",
+ effect: "Trifft nur, wenn KP des Anwenders geringer als KP des Zieles sind. Senkt dessen KP auf die Höhe der KP des Anwenders."
},
"eruption": {
name: "Eruption",
- effect: "The user attacks opposing Pokémon with explosive fury. The lower the user's HP, the lower the move's power."
+ effect: "Explosiver Angriff. Je höher die KP des Anwenders sind, desto mehr Schaden wird angerichtet."
},
"skillSwap": {
- name: "Skill Swap",
- effect: "The user employs its psychic power to exchange Abilities with the target."
+ name: "Fähigkeitstausch",
+ effect: "Anwender tauscht Fähigkeit mit dem Ziel."
},
"imprison": {
- name: "Imprison",
- effect: "If opposing Pokémon know any move also known by the user, they are prevented from using it."
+ name: "Begrenzer",
+ effect: "Hindert Gegner am Einsatz von Attacken, die der Anwender selbst auch kennt."
},
"refresh": {
- name: "Refresh",
- effect: "The user rests to cure itself of poisoning, a burn, or paralysis."
+ name: "Heilung",
+ effect: "Selbstheilung bei Vergiftung, Paralyse und Verbrennung."
},
"grudge": {
- name: "Grudge",
- effect: "If the user faints, the user's grudge fully depletes the PP of the opponent's move that knocked it out."
+ name: "Nachspiel",
+ effect: "Bei K.O. des Anwenders werden die AP der Attacke, durch die er besiegt wurde, auf 0 herabgesetzt."
},
"snatch": {
- name: "Snatch",
- effect: "The user steals the effects of any attempts to use a healing or stat-changing move."
+ name: "Übernahme",
+ effect: "Raubt den Effekt eingesetzter heilender oder Werte verändernder Attacken."
},
"secretPower": {
- name: "Secret Power",
- effect: "The additional effects of this attack depend upon where it was used."
+ name: "Geheimpower",
+ effect: "Angriff, der abhängig vom Anwendungsort einen unterschiedlichen Zusatz-Effekt hat."
},
"dive": {
- name: "Dive",
- effect: "Diving on the first turn, the user floats up and attacks on the next turn."
+ name: "Taucher",
+ effect: "Taucht in Runde 1 ab und greift in Runde 2 aus der Tiefe an."
},
"armThrust": {
- name: "Arm Thrust",
- effect: "The user lets loose a flurry of open-palmed arm thrusts that hit two to five times in a row."
+ name: "Armstoß",
+ effect: "Schläge mit geradem Arm, die das Ziel zwei- bis fünfmal treffen."
},
"camouflage": {
- name: "Camouflage",
- effect: "The user's type is changed depending on its environment, such as at water's edge, in grass, or in a cave."
+ name: "Tarnung",
+ effect: "Der Typ des Anwenders passt sich der Umgebung an, sei es im Wasser, im Gras oder in einer Höhle."
},
"tailGlow": {
- name: "Tail Glow",
- effect: "The user stares at flashing lights to focus its mind, drastically raising its Sp. Atk stat."
+ name: "Schweifglanz",
+ effect: "Ein blinkendes Licht, das den Spezial-Angriff drastisch erhöht."
},
"lusterPurge": {
- name: "Luster Purge",
- effect: "The user lets loose a damaging burst of light. This may also lower the target's Sp. Def stat."
+ name: "Scheinwerfer",
+ effect: "Angriff mit grellem Licht, der die Spezial-Verteidigung des Zieles eventuell senkt."
},
"mistBall": {
- name: "Mist Ball",
- effect: "A mist-like flurry of down envelops and damages the target. This may also lower the target's Sp. Atk stat."
+ name: "Nebelball",
+ effect: "Angriff mit einer Kugel aus Wasser, die Nebel enthält. Senkt eventuell den Spezial-Angriff des Zieles."
},
"featherDance": {
- name: "Feather Dance",
- effect: "The user covers the target's body with a mass of down that harshly lowers its Attack stat."
+ name: "Daunenreigen",
+ effect: "Hüllt das Ziel in Daunen und senkt dessen Angriffs-Wert stark."
},
"teeterDance": {
- name: "Teeter Dance",
- effect: "The user performs a wobbly dance that confuses the Pokémon around it."
+ name: "Taumeltanz",
+ effect: "Ein Wackeltanz, der andere Pokémon in der Umgebung des Anwenders verwirrt."
},
"blazeKick": {
- name: "Blaze Kick",
- effect: "The user launches a kick that lands a critical hit more easily. This may also leave the target with a burn."
+ name: "Feuerfeger",
+ effect: "Starker Tritt mit hoher Volltrefferquote. Verursacht eventuell Verbrennung."
},
"mudSport": {
- name: "Mud Sport",
- effect: "The user kicks up mud on the battlefield. This weakens Electric-type moves for five turns."
+ name: "Lehmsuhler",
+ effect: "Schwächt Elektro-Attacken, solang der Anwender am Kampf teilnimmt."
},
"iceBall": {
- name: "Ice Ball",
- effect: "The user attacks the target for five turns. The move's power increases each time it hits."
+ name: "Frostbeule",
+ effect: "Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu."
},
"needleArm": {
- name: "Needle Arm",
- effect: "The user attacks by wildly swinging its thorny arms. This may also make the target flinch."
+ name: "Nietenranke",
+ effect: "Angriff mit dornigen Armen. Das Ziel schreckt eventuell zurück."
},
"slackOff": {
- name: "Slack Off",
- effect: "The user slacks off, restoring its own HP by up to half of its max HP."
+ name: "Tagedieb",
+ effect: "Durch Müßiggang werden KP des Anwenders um 50 % der maximalen KP aufgefüllt."
},
"hyperVoice": {
- name: "Hyper Voice",
- effect: "The user lets loose a horribly echoing shout with the power to inflict damage."
+ name: "Schallwelle",
+ effect: "Laute Attacke mit Schallwellen."
},
"poisonFang": {
- name: "Poison Fang",
- effect: "The user bites the target with toxic fangs. This may also leave the target badly poisoned."
+ name: "Giftzahn",
+ effect: "Angriff mit giftigen Reißzähnen. Das Ziel wird eventuell schwer vergiftet."
},
"crushClaw": {
- name: "Crush Claw",
- effect: "The user slashes the target with hard and sharp claws. This may also lower the target's Defense stat."
+ name: "Zermalmklaue",
+ effect: "Angriff mit scharfen Klauen. Senkt eventuell den Verteidigungs-Wert."
},
"blastBurn": {
- name: "Blast Burn",
- effect: "The target is razed by a fiery explosion. The user can't move on the next turn."
+ name: "Lohekanonade",
+ effect: "Das Ziel wird von starker Explosion getroffen. Angreifer setzt eine Runde aus."
},
"hydroCannon": {
- name: "Hydro Cannon",
- effect: "The target is hit with a watery blast. The user can't move on the next turn."
+ name: "Aquahaubitze",
+ effect: "Das Ziel wird von Wasserkanone getroffen. Angreifer setzt eine Runde aus."
},
"meteorMash": {
- name: "Meteor Mash",
- effect: "The target is hit with a hard punch fired like a meteor. This may also raise the user's Attack stat."
+ name: "Sternenhieb",
+ effect: "Angriff mit einem harten, schnellen Schlag. Erhöht eventuell Angriffs-Wert des Anwenders."
},
"astonish": {
- name: "Astonish",
- effect: "The user attacks the target while shouting in a startling fashion. This may also make the target flinch."
+ name: "Erstauner",
+ effect: "Anwender greift mit einem Schrei an. Ein Angriff, der das Ziel eventuell zurückschrecken lässt."
},
"weatherBall": {
- name: "Weather Ball",
- effect: "This attack move varies in power and type depending on the weather."
+ name: "Meteorologe",
+ effect: "Typ und Stärke der Attacke sind vom Wetter zum Zeitpunkt der Anwendung abhängig."
},
"aromatherapy": {
- name: "Aromatherapy",
- effect: "The user releases a soothing scent that heals all status conditions affecting the user's party."
+ name: "Aromakur",
+ effect: "Heilt alle Statusprobleme des Teams mit beruhigendem Duft."
},
"fakeTears": {
- name: "Fake Tears",
- effect: "The user feigns crying to fluster the target, harshly lowering its Sp. Def stat."
+ name: "Trugträne",
+ effect: "Täuscht Weinen vor, um die Spezial-Verteidigung des Zieles stark zu senken."
},
"airCutter": {
- name: "Air Cutter",
- effect: "The user launches razor-like wind to slash opposing Pokémon. Critical hits land more easily."
+ name: "Windschnitt",
+ effect: "Greift mit rasierklingenartigem Wind an. Hohe Volltrefferquote."
},
"overheat": {
- name: "Overheat",
- effect: "The user attacks the target at full power. The attack's recoil harshly lowers the user's Sp. Atk stat."
+ name: "Hitzekoller",
+ effect: "Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt."
},
"odorSleuth": {
- name: "Odor Sleuth",
- effect: "Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit."
+ name: "Schnüffler",
+ effect: "Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles."
},
"rockTomb": {
- name: "Rock Tomb",
- effect: "Boulders are hurled at the target. This also lowers the target's Speed stat by preventing its movement."
+ name: "Felsgrab",
+ effect: "Angriff mit Felsen. Bei Erfolg wird der Initiative-Wert des Zieles gesenkt."
},
"silverWind": {
- name: "Silver Wind",
- effect: "The target is attacked with powdery scales blown by the wind. This may also raise all the user's stats."
+ name: "Silberhauch",
+ effect: "Angriff mit Silberstaub. Eventuell werden alle Statuswerte des Anwenders erhöht."
},
"metalSound": {
- name: "Metal Sound",
- effect: "A horrible sound like scraping metal harshly lowers the target's Sp. Def stat."
+ name: "Metallsound",
+ effect: "Stößt einen spitzen Schrei aus, der die Spezial-Verteidigung des Zieles stark senkt."
},
"grassWhistle": {
- name: "Grass Whistle",
- effect: "The user plays a pleasant melody that lulls the target into a deep sleep."
+ name: "Grasflöte",
+ effect: "Versetzt das Ziel durch eine schöne Melodie in Tiefschlaf."
},
"tickle": {
- name: "Tickle",
- effect: "The user tickles the target into laughing, reducing its Attack and Defense stats."
+ name: "Spaßkanone",
+ effect: "Bringt das Ziel zum Lachen und senkt dadurch dessen Angriff und Verteidigung."
},
"cosmicPower": {
- name: "Cosmic Power",
- effect: "The user absorbs a mystical power from space to raise its Defense and Sp. Def stats."
+ name: "Kosmik-Kraft",
+ effect: "Erhöht Verteidigung und Spezial-Verteidigung durch eine mystische Kraft."
},
"waterSpout": {
- name: "Water Spout",
- effect: "The user spouts water to damage opposing Pokémon. The lower the user's HP, the lower the move's power."
+ name: "Fontränen",
+ effect: "Wasser-Attacke, die wirkungsvoller ist, wenn KP des Anwenders hoch sind."
},
"signalBeam": {
- name: "Signal Beam",
- effect: "The user attacks with a sinister beam of light. This may also confuse the target."
+ name: "Ampelleuchte",
+ effect: "Strahlenattacke, die das Ziel eventuell verwirrt."
},
"shadowPunch": {
- name: "Shadow Punch",
- effect: "The user throws a punch from the shadows. This attack never misses."
+ name: "Finsterfaust",
+ effect: "Angriff mit der Faust aus dem Schattenreich. Ausweichen unmöglich."
},
"extrasensory": {
- name: "Extrasensory",
- effect: "The user attacks with an odd, unseeable power. This may also make the target flinch."
+ name: "Sondersensor",
+ effect: "Besonderer Angriff mit einer unsichtbaren Kraft, die das Ziel eventuell zurückschrecken lässt."
},
"skyUppercut": {
- name: "Sky Uppercut",
- effect: "The user attacks the target with an uppercut thrown skyward with force."
+ name: "Himmelhieb",
+ effect: "Kinnhaken, der das Ziel gen Himmel schickt."
},
"sandTomb": {
- name: "Sand Tomb",
- effect: "The user traps the target inside a harshly raging sandstorm for four to five turns."
+ name: "Sandgrab",
+ effect: "Das Ziel leidet für vier bis fünf Runden in einer Sandhose."
},
"sheerCold": {
- name: "Sheer Cold",
- effect: "The target faints instantly. It's less likely to hit the target if it's used by Pokémon other than Ice types."
+ name: "Eiseskälte",
+ effect: "Angriff mit Kälte, die das Ziel bei Erfolg besiegt."
},
"muddyWater": {
- name: "Muddy Water",
- effect: "The user attacks by shooting muddy water at opposing Pokémon. This may also lower their accuracy."
+ name: "Lehmbrühe",
+ effect: "Greift mit Matsch an und senkt eventuell die Genauigkeit des Zieles."
},
"bulletSeed": {
- name: "Bullet Seed",
- effect: "The user forcefully shoots seeds at the target two to five times in a row."
+ name: "Kugelsaat",
+ effect: "Der Anwender wirft zwei- bis fünfmal in rascher Folge Samen auf das Ziel."
},
"aerialAce": {
- name: "Aerial Ace",
- effect: "The user confounds the target with speed, then slashes. This attack never misses."
+ name: "Aero-Ass",
+ effect: "Eine extrem schnelle Attacke, der das Ziel nicht ausweichen kann."
},
"icicleSpear": {
- name: "Icicle Spear",
- effect: "The user launches sharp icicles at the target two to five times in a row."
+ name: "Eisspeer",
+ effect: "Feuert zwei bis fünf Eiszapfen auf das Ziel."
},
"ironDefense": {
- name: "Iron Defense",
- effect: "The user hardens its body's surface like iron, sharply raising its Defense stat."
+ name: "Eisenabwehr",
+ effect: "Anwender stärkt den Körper, um den Verteidigungs-Wert stark zu erhöhen."
},
"block": {
- name: "Block",
- effect: "The user blocks the target's way with arms spread wide to prevent escape."
+ name: "Rückentzug",
+ effect: "Anwender versperrt den Fluchtweg des Zieles."
},
"howl": {
- name: "Howl",
- effect: "The user howls loudly to raise the spirit of itself and allies. This raises their Attack stats."
+ name: "Jauler",
+ effect: "Anwender jault, um seinen Kampfgeist und seinen Angriffs-Wert zu erhöhen."
},
"dragonClaw": {
- name: "Dragon Claw",
- effect: "The user slashes the target with huge sharp claws."
+ name: "Drachenklaue",
+ effect: "Das Ziel wird mit riesigen, scharfen Klauen stark verletzt."
},
"frenzyPlant": {
- name: "Frenzy Plant",
- effect: "The user slams the target with the roots of an enormous tree. The user can't move on the next turn."
+ name: "Flora-Statue",
+ effect: "Angriff mit dickem Ast. Der Angreifer muss eine Runde aussetzen."
},
"bulkUp": {
- name: "Bulk Up",
- effect: "The user tenses its muscles to bulk up its body, raising both its Attack and Defense stats."
+ name: "Protzer",
+ effect: "Pumpt den Körper auf, um den Angriff und die Verteidigung zu erhöhen."
},
"bounce": {
- name: "Bounce",
- effect: "The user bounces up high, then drops on the target on the second turn. This may also leave the target with paralysis."
+ name: "Sprungfeder",
+ effect: "Angreifer springt und landet in der nächsten Runde auf dem Ziel. Das Ziel wird eventuell paralysiert."
},
"mudShot": {
- name: "Mud Shot",
- effect: "The user attacks by hurling a blob of mud at the target. This also lowers the target's Speed stat."
+ name: "Lehmschuss",
+ effect: "Angriff mit Lehm, der den Initiative-Wert des Zieles senkt."
},
"poisonTail": {
- name: "Poison Tail",
- effect: "The user hits the target with its tail. This may also poison the target. Critical hits land more easily."
+ name: "Giftschweif",
+ effect: "Angriff mit hoher Volltrefferquote. Diese Schweifattacke vergiftet das Ziel eventuell."
},
"covet": {
- name: "Covet",
- effect: "The user endearingly approaches the target, then has a 30% chance to steal the target's held item."
+ name: "Bezirzer",
+ effect: "Bittet charmant um das getragene Item des Zieles und stiehlt es dann."
},
"voltTackle": {
- name: "Volt Tackle",
- effect: "The user electrifies itself and charges the target. This also damages the user quite a lot. This attack may leave the target with paralysis."
+ name: "Volttackle",
+ effect: "Angriff mit Elektro-Tackle. Der Anwender verletzt sich dabei. Das Ziel wird eventuell paralysiert."
},
"magicalLeaf": {
- name: "Magical Leaf",
- effect: "The user scatters curious leaves that chase the target. This attack never misses."
+ name: "Zauberblatt",
+ effect: "Magischer Blattangriff, dem nicht auszuweichen ist."
},
"waterSport": {
- name: "Water Sport",
- effect: "The user soaks the battlefield with water. This weakens Fire-type moves for five turns."
+ name: "Nassmacher",
+ effect: "Der Anwender lässt Wasser herabregnen und schwächt damit fünf Runden lang Feuer-Attacken."
},
"calmMind": {
- name: "Calm Mind",
- effect: "The user quietly focuses its mind and calms its spirit to raise its Sp. Atk and Sp. Def stats."
+ name: "Gedankengut",
+ effect: "Erhöht Spezial-Angriff und Spezial-Verteidigung durch Konzentration."
},
"leafBlade": {
- name: "Leaf Blade",
- effect: "The user handles a sharp leaf like a sword and attacks by cutting its target. Critical hits land more easily."
+ name: "Laubklinge",
+ effect: "Hieb mit scharfkantigem Blatt. Hohe Volltrefferquote."
},
"dragonDance": {
- name: "Dragon Dance",
- effect: "The user vigorously performs a mystic, powerful dance that raises its Attack and Speed stats."
+ name: "Drachentanz",
+ effect: "Ein mystischer Tanz, der den Angriffs- und Initiative-Wert erhöht."
},
"rockBlast": {
- name: "Rock Blast",
- effect: "The user hurls hard rocks at the target. Two to five rocks are launched in a row."
+ name: "Felswurf",
+ effect: "Wirft zwei- bis fünfmal in Folge Felsblöcke auf das Ziel."
},
"shockWave": {
- name: "Shock Wave",
- effect: "The user strikes the target with a quick jolt of electricity. This attack never misses."
+ name: "Schockwelle",
+ effect: "Angriff mit schnellem Elektro-Schlag. Ausweichen nicht möglich."
},
"waterPulse": {
- name: "Water Pulse",
- effect: "The user attacks the target with a pulsing blast of water. This may also confuse the target."
+ name: "Aquawelle",
+ effect: "Angriff mit Wasserwelle, die das Ziel eventuell verwirren kann."
},
"doomDesire": {
- name: "Doom Desire",
- effect: "Two turns after this move is used, a concentrated bundle of light blasts the target."
+ name: "Kismetwunsch",
+ effect: "Angriff mit gebündeltem Licht erfolgt zwei Runden nach Attackeneinsatz."
},
"psychoBoost": {
- name: "Psycho Boost",
- effect: "The user attacks the target at full power. The attack's recoil harshly lowers the user's Sp. Atk stat."
+ name: "Psyschub",
+ effect: "Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt."
},
"roost": {
- name: "Roost",
- effect: "The user lands and rests its body. This move restores the user's HP by up to half of its max HP."
+ name: "Ruheort",
+ effect: "Anwender landet und ruht sich aus. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt."
},
"gravity": {
- name: "Gravity",
- effect: "This move enables Flying-type Pokémon or Pokémon with the Levitate Ability to be hit by Ground-type moves. Moves that involve flying can't be used."
+ name: "Erdanziehung",
+ effect: "Die Gravitation wird für fünf Runden erhöht. Macht Fliegen unmöglich und verhindert Schwebe."
},
"miracleEye": {
- name: "Miracle Eye",
- effect: "Enables a Dark-type target to be hit by Psychic-type attacks. This also enables an evasive target to be hit."
+ name: "Wunderauge",
+ effect: "Erlaubt es, Unlicht-Pokémon mit Psycho-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles."
},
"wakeUpSlap": {
- name: "Wake-Up Slap",
- effect: "This attack inflicts big damage on a sleeping target. This also wakes the target up, however."
+ name: "Weckruf",
+ effect: "Richtet großen Schaden bei einem schlafenden Ziel an, weckt es aber auch auf."
},
"hammerArm": {
- name: "Hammer Arm",
- effect: "The user swings and hits with its strong, heavy fist. It lowers the user's Speed, however."
+ name: "Hammerarm",
+ effect: "Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders."
},
"gyroBall": {
- name: "Gyro Ball",
- effect: "The user tackles the target with a high-speed spin. The slower the user compared to the target, the greater the move's power."
+ name: "Gyroball",
+ effect: "Angriff mit hoher Geschwindigkeit. Je niedriger die Initiative des Anwenders, desto höher der Schaden."
},
"healingWish": {
- name: "Healing Wish",
- effect: "The user faints. In return, the Pokémon taking its place will have its HP restored and status conditions cured."
+ name: "Heilopfer",
+ effect: "Anwender geht K.O. Das an seine Stelle tretende Pokémon hat volle KP. Statusprobleme werden geheilt."
},
"brine": {
- name: "Brine",
- effect: "If the target's HP is half or less, this attack will hit with double the power."
+ name: "Lake",
+ effect: "Hat das Ziel die Hälfte oder weniger seiner maximalen KP, trifft diese Attacke mit doppelter Kraft."
},
"naturalGift": {
- name: "Natural Gift",
- effect: "The user draws power to attack by using its held Berry. The Berry determines the move's type and power."
+ name: "Beerenkräfte",
+ effect: "Anwender zieht aus seiner derzeitigen Beere Kraft. Sie bestimmt Typ und Stärke der Attacke."
},
"feint": {
- name: "Feint",
- effect: "This attack hits a target using a move such as Protect or Detect. This also lifts the effects of those moves."
+ name: "Offenlegung",
+ effect: "Ziele, die Schutzschild oder Scanner verwenden, werden getroffen. Entfernt Effekte dieser Attacken."
},
"pluck": {
- name: "Pluck",
- effect: "The user pecks the target. If the target is holding a Berry, the user eats it and gains its effect."
+ name: "Pflücker",
+ effect: "Anwender pickt das Ziel, nimmt die Beere, falls das Ziel eine trägt, und erhält ihren Effekt."
},
"tailwind": {
- name: "Tailwind",
- effect: "The user whips up a turbulent whirlwind that ups the Speed stats of the user and its allies for four turns."
+ name: "Rückenwind",
+ effect: "Anwender erzeugt einen Wirbelwind, der die Initiative aller Pokémon im Team für vier Runden steigert."
},
"acupressure": {
- name: "Acupressure",
- effect: "The user applies pressure to stress points, sharply boosting one of its or its allies' stats."
+ name: "Akupressur",
+ effect: "Anwender erhöht Druck auf Stresspunkte und steigert einen Statuswert stark."
},
"metalBurst": {
- name: "Metal Burst",
- effect: "The user retaliates with much greater force against the opponent that last inflicted damage on it."
+ name: "Metallstoß",
+ effect: "Attacke mit großer Kraft gegen das Ziel, das dem Anwender in derselben Runde zuletzt Schaden zufügte."
},
"uTurn": {
- name: "U-turn",
- effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting."
+ name: "Kehrtwende",
+ effect: "Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon."
},
"closeCombat": {
- name: "Close Combat",
- effect: "The user fights the target up close without guarding itself. This also lowers the user's Defense and Sp. Def stats."
+ name: "Nahkampf",
+ effect: "Nahkampf-Attacke ohne Rücksicht auf Verluste. Senkt Verteidigung und Spezial-Verteidigung des Anwenders."
},
"payback": {
- name: "Payback",
- effect: "The user stores power, then attacks. If the user moves after the target, this attack's power will be doubled."
+ name: "Gegenstoß",
+ effect: "Der Anwender lädt die Attacke auf. Handelt das Ziel vor dem Anwender, verdoppelt sich die Kraft der Attacke."
},
"assurance": {
- name: "Assurance",
- effect: "If the target has already taken some damage in the same turn, this attack's power is doubled."
+ name: "Gewissheit",
+ effect: "Hat das Ziel während der Runde schon Schaden genommen, wird die Kraft der Attacke verdoppelt."
},
"embargo": {
- name: "Embargo",
- effect: "This move prevents the target from using its held item for five turns. Its Trainer is also prevented from using items on it."
+ name: "Itemsperre",
+ effect: "Verhindert, dass auf das Ziel Items verwendet werden."
},
"fling": {
- name: "Fling",
- effect: "The user flings its held item at the target to attack. This move's power and effects depend on the item."
+ name: "Schleuder",
+ effect: "Anwender schleudert sein Item auf das Ziel. Kraft und Effekt der Attacke hängen vom Item ab."
},
"psychoShift": {
- name: "Psycho Shift",
- effect: "Using its psychic power of suggestion, the user transfers its status conditions to the target."
+ name: "Psybann",
+ effect: "Anwender nutzt seine Suggestivkräfte, um eigene Statusprobleme auf das Ziel zu transferieren."
},
"trumpCard": {
- name: "Trump Card",
- effect: "The fewer PP this move has, the greater its power."
+ name: "Trumpfkarte",
+ effect: "Je weniger AP diese Attacke hat, desto mehr Angriffskraft besitzt sie."
},
"healBlock": {
- name: "Heal Block",
- effect: "For five turns, the user prevents the opposing team from using any moves, Abilities, or held items that recover HP."
+ name: "Heilblockade",
+ effect: "Anwender verhindert für fünf Runden, dass Ziele durch Attacken, Fähigkeiten oder Items KP regenerieren."
},
"wringOut": {
- name: "Wring Out",
- effect: "The user powerfully wrings the target. The more HP the target has, the greater the move's power."
+ name: "Auswringen",
+ effect: "Anwender presst sein Ziel aus. Je höher die KP des Zieles, desto kraftvoller die Attacke."
},
"powerTrick": {
- name: "Power Trick",
- effect: "The user employs its psychic power to switch its Attack stat with its Defense stat."
+ name: "Krafttrick",
+ effect: "Anwender setzt Psycho-Kräfte ein, um eigenen Angriffs- mit Verteidigungs-Wert auszutauschen."
},
"gastroAcid": {
- name: "Gastro Acid",
- effect: "The user hurls up its stomach acids on the target. The fluid eliminates the effect of the target's Ability."
+ name: "Magensäfte",
+ effect: "Anwender greift das Ziel mit eigenen Magensäften an. Entfernt Effekte von dessen Fähigkeit."
},
"luckyChant": {
- name: "Lucky Chant",
- effect: "The user chants an incantation toward the sky, preventing opposing Pokémon from landing critical hits for five turns."
+ name: "Beschwörung",
+ effect: "Anwender singt eine Beschwörungsformel, die Volltreffer gegen ihn verhindert."
},
"meFirst": {
- name: "Me First",
- effect: "The user cuts ahead of the target to copy and use the target's intended move with greater power. This move fails if it isn't used first."
+ name: "Egotrip",
+ effect: "Anwender stiehlt und führt die Attacke eines langsameren Zieles zuerst und mit größerer Kraft aus."
},
"copycat": {
- name: "Copycat",
- effect: "The user mimics the move used immediately before it. The move fails if no other move has been used yet."
+ name: "Imitator",
+ effect: "Anwender imitiert gerade verwendete Attacke. Dies schlägt fehl, falls zuvor keine Attacke verwendet wurde."
},
"powerSwap": {
- name: "Power Swap",
- effect: "The user employs its psychic power to switch changes to its Attack and Sp. Atk stats with the target."
+ name: "Krafttausch",
+ effect: "Psychische Kräfte tauschen Änderungen an Angriff und Spezial-Angriff mit denen des Zieles."
},
"guardSwap": {
- name: "Guard Swap",
- effect: "The user employs its psychic power to switch changes to its Defense and Sp. Def stats with the target."
+ name: "Schutztausch",
+ effect: "Psychische Kräfte tauschen Änderungen an Verteidigung und Spezial-Verteidigung mit denen des Zieles."
},
"punishment": {
- name: "Punishment",
- effect: "The more the target has powered up with stat changes, the greater the move's power."
+ name: "Strafattacke",
+ effect: "Je stärker das Ziel durch Statusveränderungen ist, desto stärker wirkt diese Attacke."
},
"lastResort": {
- name: "Last Resort",
- effect: "This move can be used only after the user has used all the other moves it knows in the battle."
+ name: "Zuflucht",
+ effect: "Diese Attacke kann nur eingesetzt werden, nachdem alle verfügbaren Attacken ausgeführt worden sind."
},
"worrySeed": {
- name: "Worry Seed",
- effect: "A seed that causes worry is planted on the target. It prevents sleep by making the target's Ability Insomnia."
+ name: "Sorgensamen",
+ effect: "Ziel wird bepflanzt. Wandelt Fähigkeit in Insomnia um. Verhindert so Schlaf."
},
"suckerPunch": {
- name: "Sucker Punch",
- effect: "This move enables the user to attack first. This move fails if the target is not readying an attack."
+ name: "Tiefschlag",
+ effect: "Ermöglicht den Erstschlag. Gelingt aber nur, wenn das Ziel gerade eine Attacke vorbereitet."
},
"toxicSpikes": {
- name: "Toxic Spikes",
- effect: "The user lays a trap of poison spikes at the feet of the opposing team. The spikes will poison opposing Pokémon that switch into battle."
+ name: "Giftspitzen",
+ effect: "Anwender legt eine Falle mit Giftdornen aus. In den Kampf eingewechselte gegnerische Pokémon werden vergiftet."
},
"heartSwap": {
- name: "Heart Swap",
- effect: "The user employs its psychic power to switch stat changes with the target."
+ name: "Statustausch",
+ effect: "Anwender setzt Psycho-Kräfte ein, um Statusveränderungen des Zieles mit den eigenen zu tauschen."
},
"aquaRing": {
- name: "Aqua Ring",
- effect: "The user envelops itself in a veil made of water. It regains some HP every turn."
+ name: "Wasserring",
+ effect: "Anwender umgibt sich mit einem Schleier aus Wasser. Dabei regeneriert er einige KP pro Runde."
},
"magnetRise": {
- name: "Magnet Rise",
- effect: "The user levitates using electrically generated magnetism for five turns."
+ name: "Magnetflug",
+ effect: "Anwender schwebt für fünf Runden durch elektrisch erzeugten Magnetismus."
},
"flareBlitz": {
- name: "Flare Blitz",
- effect: "The user cloaks itself in fire and charges the target. This also damages the user quite a lot. This attack may leave the target with a burn."
+ name: "Flammenblitz",
+ effect: "Anwender hüllt sich in Flammen und stürmt auf das Ziel zu, das sich eventuell verbrennt. Anwender nimmt selbst großen Schaden."
},
"forcePalm": {
- name: "Force Palm",
- effect: "The target is attacked with a shock wave. This may also leave the target with paralysis."
+ name: "Kraftwelle",
+ effect: "Das Ziel wird mit einer Schockwelle angegriffen, die es eventuell paralysiert."
},
"auraSphere": {
- name: "Aura Sphere",
- effect: "The user lets loose a blast of aura power from deep within its body at the target. This attack never misses."
+ name: "Aurasphäre",
+ effect: "Tief aus dem Inneren des Anwenders löst sich ein kraftvoller Stoß Auraenergie. Trifft in jedem Fall."
},
"rockPolish": {
- name: "Rock Polish",
- effect: "The user polishes its body to reduce drag. This sharply raises the Speed stat."
+ name: "Steinpolitur",
+ effect: "Anwender reduziert so gut wie möglich den Luftwiderstand. Kann Initiative-Wert stark steigern."
},
"poisonJab": {
- name: "Poison Jab",
- effect: "The target is stabbed with a tentacle, arm, or the like steeped in poison. This may also poison the target."
+ name: "Gifthieb",
+ effect: "Ziel wird mit vergiftetem Arm oder Tentakel verletzt. Es wird dabei eventuell vergiftet."
},
"darkPulse": {
- name: "Dark Pulse",
- effect: "The user releases a horrible aura imbued with dark thoughts. This may also make the target flinch."
+ name: "Finsteraura",
+ effect: "Anwender greift mit fürchterlicher Aura schlechter Gedanken an. Ziel schreckt eventuell zurück."
},
"nightSlash": {
- name: "Night Slash",
- effect: "The user slashes the target the instant an opportunity arises. Critical hits land more easily."
+ name: "Nachthieb",
+ effect: "Anwender greift bei der ersten Gelegenheit mit scharfen Klauen an. Hohe Volltrefferquote."
},
"aquaTail": {
- name: "Aqua Tail",
- effect: "The user attacks by swinging its tail as if it were a vicious wave in a raging storm."
+ name: "Nassschweif",
+ effect: "Anwender attackiert mit dem Schweif, als ob dieser eine brutale Welle in einem tosenden Sturm sei."
},
"seedBomb": {
- name: "Seed Bomb",
- effect: "The user slams a barrage of hard-shelled seeds down on the target from above."
+ name: "Samenbomben",
+ effect: "Anwender lässt eine Menge Samen mit harter Schale von oben auf das Ziel fallen."
},
"airSlash": {
- name: "Air Slash",
- effect: "The user attacks with a blade of air that slices even the sky. This may also make the target flinch."
+ name: "Luftschnitt",
+ effect: "Das Ziel wird mit einer Luftklinge angegriffen. Ziel schreckt eventuell zurück."
},
"xScissor": {
- name: "X-Scissor",
- effect: "The user slashes at the target by crossing its scythes or claws as if they were a pair of scissors."
+ name: "Kreuzschere",
+ effect: "Der Anwender führt eine Attacke aus, die einer Scherenbewegung ähnelt."
},
"bugBuzz": {
- name: "Bug Buzz",
- effect: "The user generates a damaging sound wave by vibration. This may also lower the target's Sp. Def stat."
+ name: "Käfergebrumm",
+ effect: "Anwender schlägt mit den Flügeln und erzeugt eine Schockwelle. Senkt eventuell Spezial-Verteidigung des Zieles."
},
"dragonPulse": {
- name: "Dragon Pulse",
- effect: "The target is attacked with a shock wave generated by the user's gaping mouth."
+ name: "Drachenpuls",
+ effect: "Das Ziel wird mit einer Schockwelle angegriffen, die aus dem offenen Maul des Anwenders kommt."
},
"dragonRush": {
- name: "Dragon Rush",
- effect: "The user tackles the target while exhibiting overwhelming menace. This may also make the target flinch."
+ name: "Drachenstoß",
+ effect: "Anwender führt einen gefährlichen Angriff aus. Das Ziel schreckt eventuell zurück."
},
"powerGem": {
- name: "Power Gem",
- effect: "The user attacks with a ray of light that sparkles as if it were made of gemstones."
+ name: "Juwelenkraft",
+ effect: "Anwender attackiert mit einem Lichtstrahl, der funkelt, als sei er aus Juwelen."
},
"drainPunch": {
- name: "Drain Punch",
- effect: "An energy-draining punch. The user's HP is restored by half the damage taken by the target."
+ name: "Ableithieb",
+ effect: "Entzieht dem Ziel Energie. Die Hälfte des Schadens wird den KP des Anwenders zugerechnet."
},
"vacuumWave": {
- name: "Vacuum Wave",
- effect: "The user whirls its fists to send a wave of pure vacuum at the target. This move always goes first."
+ name: "Vakuumwelle",
+ effect: "Ein Faustwirbel sendet eine Vakuumwelle auf das Ziel. Erstschlaggarantie."
},
"focusBlast": {
- name: "Focus Blast",
- effect: "The user heightens its mental focus and unleashes its power. This may also lower the target's Sp. Def stat."
+ name: "Fokusstoß",
+ effect: "Anwender erhöht seinen mentalen Fokus und greift dann an. Senkt eventuell Spezial-Verteidigung des Zieles."
},
"energyBall": {
- name: "Energy Ball",
- effect: "The user draws power from nature and fires it at the target. This may also lower the target's Sp. Def stat."
+ name: "Energieball",
+ effect: "Anwender zieht Kraft aus der Natur und feuert sie auf das Ziel. Senkt eventuell Spezial-Verteidigung des Zieles."
},
"braveBird": {
- name: "Brave Bird",
- effect: "The user tucks in its wings and charges from a low altitude. This also damages the user quite a lot."
+ name: "Sturzflug",
+ effect: "Anwender greift aus niedriger Höhe an. Er erleidet bei dieser Attacke selbst großen Schaden."
},
"earthPower": {
- name: "Earth Power",
- effect: "The user makes the ground under the target erupt with power. This may also lower the target's Sp. Def stat."
+ name: "Erdkräfte",
+ effect: "Der Boden unter dem Ziel erzittert durch die Kraft der Erde. Senkt eventuell Spezial-Verteidigung."
},
"switcheroo": {
- name: "Switcheroo",
- effect: "The user trades held items with the target faster than the eye can follow."
+ name: "Wechseldich",
+ effect: "Item wird in Windeseile mit dem Ziel getauscht."
},
"gigaImpact": {
- name: "Giga Impact",
- effect: "The user charges at the target using every bit of its power. The user can't move on the next turn."
+ name: "Gigastoß",
+ effect: "Anwender rennt mit seiner ganzen Kraft gegen das Ziel an und muss dann eine Runde ruhen."
},
"nastyPlot": {
- name: "Nasty Plot",
- effect: "The user stimulates its brain by thinking bad thoughts. This sharply raises the user's Sp. Atk stat."
+ name: "Ränkeschmied",
+ effect: "Anwender stimuliert sein Gehirn und hat finstere Gedanken. Steigert Spezial-Angriff stark."
},
"bulletPunch": {
- name: "Bullet Punch",
- effect: "The user strikes the target with tough punches as fast as bullets. This move always goes first."
+ name: "Patronenhieb",
+ effect: "Das Ziel wird von ultraschnellen Hieben getroffen. Erstschlaggarantie."
},
"avalanche": {
- name: "Avalanche",
- effect: "The power of this attack move is doubled if the user has been hurt by the target in the same turn."
+ name: "Lawine",
+ effect: "Wurde der Anwender in dieser Runde vom Ziel getroffen, macht diese Attacke doppelten Schaden."
},
"iceShard": {
- name: "Ice Shard",
- effect: "The user flash-freezes chunks of ice and hurls them at the target. This move always goes first."
+ name: "Eissplitter",
+ effect: "Das Ziel wird mit Eisklumpen beworfen. Diese Attacke hat Erstschlaggarantie."
},
"shadowClaw": {
- name: "Shadow Claw",
- effect: "The user slashes with a sharp claw made from shadows. Critical hits land more easily."
+ name: "Dunkelklaue",
+ effect: "Das Ziel wird mit scharfen Klauen aus der Schattenwelt attackiert. Hohe Volltrefferquote."
},
"thunderFang": {
- name: "Thunder Fang",
- effect: "The user bites with electrified fangs. This may also make the target flinch or leave it with paralysis."
+ name: "Donnerzahn",
+ effect: "Anwender beißt mit elektrifizierten Reißzähnen zu. Das Ziel schreckt eventuell zurück oder wird paralysiert."
},
"iceFang": {
- name: "Ice Fang",
- effect: "The user bites with cold-infused fangs. This may also make the target flinch or leave it frozen."
+ name: "Eiszahn",
+ effect: "Anwender beißt mit eiskalten Reißzähnen zu. Ziel schreckt eventuell zurück oder friert ein."
},
"fireFang": {
- name: "Fire Fang",
- effect: "The user bites with flame-cloaked fangs. This may also make the target flinch or leave it with a burn."
+ name: "Feuerzahn",
+ effect: "Anwender beißt mit flammenden Reißzähnen zu. Ziel schreckt eventuell zurück oder verbrennt sich."
},
"shadowSneak": {
- name: "Shadow Sneak",
- effect: "The user extends its shadow and attacks the target from behind. This move always goes first."
+ name: "Schattenstoß",
+ effect: "Anwender erweitert Schatten und greift das Ziel von hinten an. Erstschlaggarantie."
},
"mudBomb": {
- name: "Mud Bomb",
- effect: "The user launches a hard-packed mud ball to attack. This may also lower the target's accuracy."
+ name: "Schlammbombe",
+ effect: "Anwender greift mit einem festen Schlammklumpen an. Senkt eventuell Genauigkeit des Zieles."
},
"psychoCut": {
- name: "Psycho Cut",
- effect: "The user tears at the target with blades formed by psychic power. Critical hits land more easily."
+ name: "Psychoklinge",
+ effect: "Das Ziel wird mit Klingen attackiert, die aus Psycho-Energie bestehen. Hohe Volltrefferquote."
},
"zenHeadbutt": {
- name: "Zen Headbutt",
- effect: "The user focuses its willpower to its head and attacks the target. This may also make the target flinch."
+ name: "Zen-Kopfstoß",
+ effect: "Anwender konzentriert seinen Willen und rammt das Ziel. Dieses schreckt eventuell zurück."
},
"mirrorShot": {
- name: "Mirror Shot",
- effect: "The user lets loose a flash of energy at the target from its polished body. This may also lower the target's accuracy."
+ name: "Spiegelsalve",
+ effect: "Anwender feuert Energiestrahl aus seinem Körper ab. Senkt eventuell Genauigkeit des Zieles."
},
"flashCannon": {
- name: "Flash Cannon",
- effect: "The user gathers all its light energy and releases it all at once. This may also lower the target's Sp. Def stat."
+ name: "Lichtkanone",
+ effect: "Anwender sammelt Lichtenergie und feuert sie auf einmal ab. Senkt eventuell Spezial-Verteidigung des Zieles."
},
"rockClimb": {
- name: "Rock Climb",
- effect: "The user attacks the target by smashing into it with incredible force. This may also confuse the target."
+ name: "Kraxler",
+ effect: "Eine stürmische Attacke, die das Ziel eventuell verwirrt."
},
"defog": {
- name: "Defog",
- effect: "A strong wind blows away the target's barriers such as Reflect or Light Screen. This also lowers the target's evasiveness."
+ name: "Auflockern",
+ effect: "Starker Wind hebt Attacken wie Reflektor und Lichtschild des Zieles auf. Senkt außerdem den Fluchtwert."
},
"trickRoom": {
- name: "Trick Room",
- effect: "The user creates a bizarre area in which slower Pokémon get to move first for five turns."
+ name: "Bizarroraum",
+ effect: "Anwender erzeugt einen bizarren Raum, in dem langsame Pokémon fünf Runden lang zuerst agieren."
},
"dracoMeteor": {
name: "Draco Meteor",
- effect: "Comets are summoned down from the sky onto the target. The attack's recoil harshly lowers the user's Sp. Atk stat."
+ effect: "Kometen werden heraufbeschworen. Der Rückstoß reduziert den Spezial-Angriff des Anwenders stark."
},
"discharge": {
- name: "Discharge",
- effect: "The user strikes everything around it by letting loose a flare of electricity. This may also cause paralysis."
+ name: "Ladungsstoß",
+ effect: "Anwender greift alle Pokémon im Umkreis mit Elektrizität an. Diese werden eventuell auch paralysiert."
},
"lavaPlume": {
- name: "Lava Plume",
- effect: "The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn."
+ name: "Flammensturm",
+ effect: "Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden."
},
"leafStorm": {
- name: "Leaf Storm",
- effect: "The user whips up a storm of leaves around the target. The attack's recoil harshly lowers the user's Sp. Atk stat."
+ name: "Blättersturm",
+ effect: "Anwender erzeugt einen Sturm aus scharfen Blättern. Rückstoß senkt Spezial-Angriff des Anwenders stark."
},
"powerWhip": {
- name: "Power Whip",
- effect: "The user violently whirls its vines, tentacles, or the like to harshly lash the target."
+ name: "Blattgeißel",
+ effect: "Anwender wirbelt seine Ranken oder Tentakel peitschenartig gegen das Ziel."
},
"rockWrecker": {
- name: "Rock Wrecker",
- effect: "The user launches a huge boulder at the target to attack. The user can't move on the next turn."
+ name: "Felswerfer",
+ effect: "Anwender wirft einen riesigen Felsen auf das Ziel. In der nächsten Runde muss der Anwender ruhen."
},
"crossPoison": {
- name: "Cross Poison",
- effect: "A slashing attack with a poisonous blade that may also poison the target. Critical hits land more easily."
+ name: "Giftstreich",
+ effect: "Ein schneidender Hieb, der das Ziel eventuell vergiftet. Hat eine hohe Volltrefferquote."
},
"gunkShot": {
- name: "Gunk Shot",
- effect: "The user shoots filthy garbage at the target to attack. This may also poison the target."
+ name: "Mülltreffer",
+ effect: "Anwender schießt mit Müll auf das Ziel. Vergiftet dieses eventuell."
},
"ironHead": {
- name: "Iron Head",
- effect: "The user slams the target with its steel-hard head. This may also make the target flinch."
+ name: "Eisenschädel",
+ effect: "Ziel wird durch stahlharten Kopf des Anwenders getroffen und schreckt eventuell zurück."
},
"magnetBomb": {
- name: "Magnet Bomb",
- effect: "The user launches steel bombs that stick to the target. This attack never misses."
+ name: "Magnetbombe",
+ effect: "Ziel wird durch Haftbomben getroffen. Diese Attacke trifft immer."
},
"stoneEdge": {
- name: "Stone Edge",
- effect: "The user stabs the target from below with sharpened stones. Critical hits land more easily."
+ name: "Steinkante",
+ effect: "Anwender sticht das Ziel mit spitzen Steinen. Hohe Volltrefferquote."
},
"captivate": {
- name: "Captivate",
- effect: "If any opposing Pokémon is the opposite gender of the user, it is charmed, which harshly lowers its Sp. Atk stat."
+ name: "Liebreiz",
+ effect: "Charme-Attacke, die den Spezial-Angriff des Zieles stark senkt, falls es dem anderen Geschlecht angehört."
},
"stealthRock": {
- name: "Stealth Rock",
- effect: "The user lays a trap of levitating stones around the opposing team. The trap hurts opposing Pokémon that switch into battle."
+ name: "Tarnsteine",
+ effect: "Falle mit schwebenden Steinen. In den Kampf eingewechselte Ziele nehmen Schaden."
},
"grassKnot": {
- name: "Grass Knot",
- effect: "The user snares the target with grass and trips it. The heavier the target, the greater the move's power."
+ name: "Strauchler",
+ effect: "Ziel wird durch Gras ins Straucheln gebracht. Je schwerer das Ziel, desto mehr Schaden."
},
"chatter": {
- name: "Chatter",
- effect: "The user attacks the target with sound waves of deafening chatter. This confuses the target."
+ name: "Geschwätz",
+ effect: "Attacke mit Schallwellen. Verwirrt das Ziel."
},
"judgment": {
- name: "Judgment",
- effect: "The user releases countless shots of light at the target. This move's type varies depending on the kind of Plate the user is holding."
+ name: "Urteilskraft",
+ effect: "Anwender feuert unzählige Lichtstrahlen ab. Deren Typ hängt von der gehaltenen Tafel ab."
},
"bugBite": {
- name: "Bug Bite",
- effect: "The user bites the target. If the target is holding a Berry, the user eats it and gains its effect."
+ name: "Käferbiss",
+ effect: "Anwender beißt das Ziel. Trägt dieses eine Beere, isst der Anwender sie und erhält ihren Effekt."
},
"chargeBeam": {
- name: "Charge Beam",
- effect: "The user attacks the target with an electric charge. The user may use any remaining electricity to raise its Sp. Atk stat."
+ name: "Ladestrahl",
+ effect: "Ziel wird von einem Elektrostrahl getroffen. Steigert eventuell Spezial-Angriff des Anwenders."
},
"woodHammer": {
- name: "Wood Hammer",
- effect: "The user slams its rugged body into the target to attack. This also damages the user quite a lot."
+ name: "Holzhammer",
+ effect: "Anwender attackiert mit seinem robusten Körper. Er erleidet dabei auch selbst großen Schaden."
},
"aquaJet": {
- name: "Aqua Jet",
- effect: "The user lunges at the target at a speed that makes it almost invisible. This move always goes first."
+ name: "Wasserdüse",
+ effect: "Bei dieser Erstschlag-Attacke stürzt sich der Anwender so schnell auf das Ziel, dass er quasi unsichtbar wird."
},
"attackOrder": {
- name: "Attack Order",
- effect: "The user calls out its underlings to pummel the target. Critical hits land more easily."
+ name: "Schlagbefehl",
+ effect: "Anwender ruft seine Untergebenen zum Angriff. Hat eine hohe Volltrefferquote."
},
"defendOrder": {
- name: "Defend Order",
- effect: "The user calls out its underlings to shield its body, raising its Defense and Sp. Def stats."
+ name: "Blockbefehl",
+ effect: "Untergebene bilden einen lebenden Schild um den Anwender. Steigert Verteidigung und Spezial-Verteidigung."
},
"healOrder": {
- name: "Heal Order",
- effect: "The user calls out its underlings to heal it. The user regains up to half of its max HP."
+ name: "Heilbefehl",
+ effect: "Untergebene heilen den Anwender. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt."
},
"headSmash": {
- name: "Head Smash",
- effect: "The user attacks the target with a hazardous, full-power headbutt. This also damages the user terribly."
+ name: "Kopfstoß",
+ effect: "Anwender greift unter Einsatz seines Lebens mit einem Kopfstoß an und nimmt dabei selbst jede Menge Schaden."
},
"doubleHit": {
- name: "Double Hit",
- effect: "The user slams the target with a long tail, vines, or a tentacle. The target is hit twice in a row."
+ name: "Doppelschlag",
+ effect: "Anwender trifft das Ziel mit dem Schweif oder Ähnlichem. Ziel wird doppelt getroffen."
},
"roarOfTime": {
- name: "Roar of Time",
- effect: "The user blasts the target with power that distorts even time. The user can't move on the next turn."
+ name: "Zeitenlärm",
+ effect: "Anwender attackiert mit einer Kraft, die selbst die Zeit verzerrt. In der nächsten Runde muss er ruhen."
},
"spacialRend": {
- name: "Spacial Rend",
- effect: "The user tears the target along with the space around it. Critical hits land more easily."
+ name: "Raumschlag",
+ effect: "Schwere, raumgreifende Attacke. Hohe Volltrefferquote."
},
"lunarDance": {
- name: "Lunar Dance",
- effect: "The user faints. In return, the Pokémon taking its place will have its status and HP fully restored."
+ name: "Lunartanz",
+ effect: "Anwender geht K.O. Das an seine Stelle tretende Pokémon hat dafür volle KP und AP. Statusprobleme werden geheilt."
},
"crushGrip": {
- name: "Crush Grip",
- effect: "The target is crushed with great force. The more HP the target has left, the greater this move's power."
+ name: "Quetschgriff",
+ effect: "Ziel wird mit großer Kraft getroffen. Je höher die KP des Zieles, desto stärker die Attacke."
},
"magmaStorm": {
- name: "Magma Storm",
- effect: "The target becomes trapped within a maelstrom of fire that rages for four to five turns."
+ name: "Lavasturm",
+ effect: "Das Ziel wird in einen Feuersog gezogen, der vier bis fünf Runden aktiv ist."
},
"darkVoid": {
- name: "Dark Void",
- effect: "Opposing Pokémon are dragged into a world of total darkness that makes them sleep."
+ name: "Schlummerort",
+ effect: "Das Ziel wird in eine Welt der Dunkelheit gezogen und in Schlaf versetzt."
},
"seedFlare": {
- name: "Seed Flare",
- effect: "The user emits a shock wave from its body to attack its target. This may also harshly lower the target's Sp. Def stat."
+ name: "Schocksamen",
+ effect: "Anwender erzeugt eine Schockwelle. Spezial-Verteidigung des Zieles wird stark gesenkt."
},
"ominousWind": {
- name: "Ominous Wind",
- effect: "The user blasts the target with a gust of repulsive wind. This may also raise all the user's stats at once."
+ name: "Unheilböen",
+ effect: "Das Ziel treffen abscheuliche Winde. Steigert eventuell alle Statuswerte des Anwenders."
},
"shadowForce": {
- name: "Shadow Force",
- effect: "The user disappears, then strikes the target on the next turn. This move hits even if the target protects itself."
+ name: "Schemenkraft",
+ effect: "Anwender verschwindet in Runde 1 und attackiert in Runde 2. Trifft auch, wenn sich das Ziel selbst schützt."
},
"honeClaws": {
- name: "Hone Claws",
- effect: "The user sharpens its claws to boost its Attack stat and accuracy."
+ name: "Klauenwetzer",
+ effect: "Wetzt seine Klauen, um sie zu schärfen. Erhöht Angriff und Genauigkeit des Anwenders."
},
"wideGuard": {
- name: "Wide Guard",
- effect: "The user and its allies are protected from wide-ranging attacks for one turn."
+ name: "Rundumschutz",
+ effect: "Schützt eine Runde lang vor Angriffen, die alle Pokémon auf deiner Seite treffen."
},
"guardSplit": {
- name: "Guard Split",
- effect: "The user employs its psychic power to average its Defense and Sp. Def stats with those of the target."
+ name: "Schutzteiler",
+ effect: "Durch Psycho-Kräfte werden Verteidigung und Spezial-Verteidigung des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt."
},
"powerSplit": {
- name: "Power Split",
- effect: "The user employs its psychic power to average its Attack and Sp. Atk stats with those of the target."
+ name: "Kraftteiler",
+ effect: "Durch Psycho-Kräfte werden Angriff und Spezial-Angriff des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt."
},
"wonderRoom": {
- name: "Wonder Room",
- effect: "The user creates a bizarre area in which Pokémon's Defense and Sp. Def stats are swapped for five turns."
+ name: "Wunderraum",
+ effect: "Anwender erzeugt bizarren Raum, in dem über fünf Runden die Verteidigung aller Pokémon mit ihrer Spezial-Verteidigung getauscht wird."
},
"psyshock": {
- name: "Psyshock",
- effect: "The user materializes an odd psychic wave to attack the target. This attack does physical damage."
+ name: "Psychoschock",
+ effect: "Anwender erzeugt eine seltsame Energiewelle, die dem Ziel physischen Schaden zufügt."
},
"venoshock": {
- name: "Venoshock",
- effect: "The user drenches the target in a special poisonous liquid. This move's power is doubled if the target is poisoned."
+ name: "Giftschock",
+ effect: "Überschüttet das Ziel mit einer speziellen toxischen Flüssigkeit. Doppelt so stark gegen vergiftete Ziele."
},
"autotomize": {
- name: "Autotomize",
- effect: "The user sheds part of its body to make itself lighter and sharply raise its Speed stat."
+ name: "Autotomie",
+ effect: "Anwender trennt sich von überflüssigen Körperteilen und steigert seine Initiative stark. Sein Gewicht nimmt deutlich ab."
},
"ragePowder": {
- name: "Rage Powder",
- effect: "The user scatters a cloud of irritating powder to draw attention to itself. Opposing Pokémon aim only at the user."
+ name: "Wutpulver",
+ effect: "Anwender zieht gegnerische Aufmerksamkeit und Angriffe auf sich, indem er ein Wut erzeugendes Pulver über sich streut."
},
"telekinesis": {
- name: "Telekinesis",
- effect: "The user makes the target float with its psychic power. The target is easier to hit for three turns."
+ name: "Telekinese",
+ effect: "Bringt das Ziel durch Psycho-Kräfte zum Schweben. Dieses lässt sich so über drei Runden hinweg besonders leicht treffen."
},
"magicRoom": {
- name: "Magic Room",
- effect: "The user creates a bizarre area in which Pokémon's held items lose their effects for five turns."
+ name: "Magieraum",
+ effect: "Anwender erzeugt einen bizarren Raum, in dem über fünf Runden die Wirkung aller von Pokémon getragenen Items aufgehoben ist."
},
"smackDown": {
- name: "Smack Down",
- effect: "The user throws a stone or similar projectile to attack the target. A flying Pokémon will fall to the ground when it's hit."
+ name: "Katapult",
+ effect: "Greift das Ziel mit Steinen und Wurfgeschossen an. Fliegende Ziele fallen dabei vom Himmel und landen auf dem Boden."
},
"stormThrow": {
- name: "Storm Throw",
- effect: "The user strikes the target with a fierce blow. This attack always results in a critical hit."
+ name: "Bergsturm",
+ effect: "Ein Angriff mit voller Wucht und Volltreffergarantie."
},
"flameBurst": {
- name: "Flame Burst",
- effect: "The user attacks the target with a bursting flame. The bursting flame damages Pokémon next to the target as well."
+ name: "Funkenflug",
+ effect: "Bei Erfolg greift der Anwender mit berstenden Feuerblasen an. Die Funken der geplatzten Blasen treffen auch benachbarte Ziele."
},
"sludgeWave": {
- name: "Sludge Wave",
- effect: "The user strikes everything around it by swamping the area with a giant sludge wave. This may also poison those hit."
+ name: "Schlammwoge",
+ effect: "Greift Pokémon in der Nähe des Anwenders mit einer Schlammwelle an. Diese werden eventuell vergiftet."
},
"quiverDance": {
- name: "Quiver Dance",
- effect: "The user lightly performs a beautiful, mystic dance. This boosts the user's Sp. Atk, Sp. Def, and Speed stats."
+ name: "Falterreigen",
+ effect: "Anwender legt behände einen mystischen, formvollendeten Tanz aufs Parkett. Spezial-Angriff, Spezial-Verteidigung und Initiative steigen."
},
"heavySlam": {
- name: "Heavy Slam",
- effect: "The user slams into the target with its heavy body. The more the user outweighs the target, the greater the move's power."
+ name: "Rammboss",
+ effect: "Anwender rammt das Ziel mit massivem Körper. Je schwerer er im Vergleich zum Ziel ist, desto stärker die Attacke."
},
"synchronoise": {
- name: "Synchronoise",
- effect: "Using an odd shock wave, the user inflicts damage on any Pokémon of the same type in the area around it."
+ name: "Synchrolärm",
+ effect: "Fügt Pokémon vom selben Typ, die sich in der Nähe des Anwenders aufhalten, mit seltsamen Druckwellen Schaden zu."
},
"electroBall": {
- name: "Electro Ball",
- effect: "The user hurls an electric orb at the target. The faster the user is than the target, the greater the move's power."
+ name: "Elektroball",
+ effect: "Je höher die Initiative des Anwenders im Vergleich zum Ziel ist, desto stärker trifft dieses eine geballte Ladung Strom."
},
"soak": {
- name: "Soak",
- effect: "The user shoots a torrent of water at the target and changes the target's type to Water."
+ name: "Überflutung",
+ effect: "Überschüttet das Ziel mit Unmengen an Wasser und ändert den Typ damit in Wasser um."
},
"flameCharge": {
- name: "Flame Charge",
- effect: "Cloaking itself in flame, the user attacks the target. Then, building up more power, the user raises its Speed stat."
+ name: "Nitroladung",
+ effect: "Anwender hüllt sich in Flammen und greift das Ziel an. Sammelt seine Energie und erhöht dadurch die eigene Initiative."
},
"coil": {
- name: "Coil",
- effect: "The user coils up and concentrates. This raises its Attack and Defense stats as well as its accuracy."
+ name: "Einrollen",
+ effect: "Anwender rollt sich zusammen und sammelt sich. Dabei werden Angriff, Verteidigung und Genauigkeit erhöht."
},
"lowSweep": {
- name: "Low Sweep",
- effect: "The user makes a swift attack on the target's legs, which lowers the target's Speed stat."
+ name: "Fußtritt",
+ effect: "Anwender greift mit blitzschnellen Bewegungen die Beine des Zieles an und senkt dessen Initiative."
},
"acidSpray": {
- name: "Acid Spray",
- effect: "The user spits fluid that works to melt the target. This harshly lowers the target's Sp. Def stat."
+ name: "Säurespeier",
+ effect: "Anwender greift an, indem er eine ätzende Flüssigkeit auf das Ziel speit. Senkt dessen Spezial-Verteidigung stark."
},
"foulPlay": {
- name: "Foul Play",
- effect: "The user turns the target's power against it. The higher the target's Attack stat, the greater the damage it deals."
+ name: "Schmarotzer",
+ effect: "Anwender macht sich die Kraft des Zieles zunutze. Je höher dessen Angriff, desto mehr Schaden richtet die Attacke an."
},
"simpleBeam": {
- name: "Simple Beam",
- effect: "The user's mysterious psychic wave changes the target's Ability to Simple."
+ name: "Wankelstrahl",
+ effect: "Bestrahlt das Ziel mit mysteriösen Energiewellen. Bei einem Treffer wird dessen Fähigkeit zu Wankelmut."
},
"entrainment": {
- name: "Entrainment",
- effect: "The user dances with an odd rhythm that compels the target to mimic it, making the target's Ability the same as the user's."
+ name: "Zwango",
+ effect: "Anwender tanzt zu einem seltsamem Rhythmus und zwingt das Ziel mitzumachen. Dieses nimmt dabei die Fähigkeit des Anwenders an."
},
"afterYou": {
- name: "After You",
- effect: "The user helps the target and makes it use its move right after the user."
+ name: "Galanterie",
+ effect: "Anwender ermöglicht dem Ziel direkt nach ihm zu handeln, solange der Anwender als Erstes zum Zug kommt."
},
"round": {
- name: "Round",
- effect: "The user attacks the target with a song. Others can join in the Round to increase the power of the attack."
+ name: "Kanon",
+ effect: "Angriff mit Gesang. Singt der Anwender mit allen im Kanon, steigt die Stärke."
},
"echoedVoice": {
- name: "Echoed Voice",
- effect: "The user attacks the target with an echoing voice. If this move is used every turn, its power is increased."
+ name: "Widerhall",
+ effect: "Angriff mit widerhallender Stimme. Wenn in jeder Runde ein Teilnehmer wiederholt die Attacke einsetzt, steigt die Stärke."
},
"chipAway": {
- name: "Chip Away",
- effect: "Looking for an opening, the user strikes consistently. The target's stat changes don't affect this attack's damage."
+ name: "Zermürben",
+ effect: "Eine durchdachte Attacke zu rechter Zeit. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an."
},
"clearSmog": {
- name: "Clear Smog",
- effect: "The user attacks the target by throwing a clump of special mud. All stat changes are returned to normal."
+ name: "Klärsmog",
+ effect: "Anwender greift das Ziel mit spezialgefertigten Schlammklumpen an. Setzt Statusveränderungen zurück."
},
"storedPower": {
- name: "Stored Power",
- effect: "The user attacks the target with stored power. The more the user's stats are raised, the greater the move's power."
+ name: "Kraftvorrat",
+ effect: "Angriff mit angesparter Energie. Je höher die Statuswerte des Anwenders, desto stärker fällt die Attacke aus."
},
"quickGuard": {
- name: "Quick Guard",
- effect: "The user protects itself and its allies from priority moves."
+ name: "Rapidschutz",
+ effect: "Schützt Anwender und Mitstreiter vor gegnerischen Erstschlag-Attacken."
},
"allySwitch": {
- name: "Ally Switch",
- effect: "The user teleports using a strange power and switches places with one of its allies."
+ name: "Seitentausch",
+ effect: "Wundersame Kräfte teleportieren den Anwender an den Platz eines Mitstreiters."
},
"scald": {
- name: "Scald",
- effect: "The user shoots boiling hot water at its target. This may also leave the target with a burn."
+ name: "Siedewasser",
+ effect: "Heizt dem Ziel mit einem Schwall siedend heißen Kochwassers ein. Das Ziel erleidet dabei eventuell Verbrennungen."
},
"shellSmash": {
- name: "Shell Smash",
- effect: "The user breaks its shell, which lowers Defense and Sp. Def stats but sharply raises its Attack, Sp. Atk, and Speed stats."
+ name: "Hausbruch",
+ effect: "Anwender zerbricht seine Schale und senkt seine Verteidigung und Spezial-Verteidigung, aber dafür steigen Angriff, Spezial-Angriff und Initiative stark."
},
"healPulse": {
- name: "Heal Pulse",
- effect: "The user emits a healing pulse that restores the target's HP by up to half of its max HP."
+ name: "Heilwoge",
+ effect: "Anwender löst eine Schmerzen lindernde Welle aus und heilt dabei das Ziel mit der Hälfte seiner maximalen KP."
},
"hex": {
- name: "Hex",
- effect: "This relentless attack does massive damage to a target affected by status conditions."
+ name: "Bürde",
+ effect: "Eine Attacke, bei der der Anwender das Ziel bedrängt. Fügt Zielen mit Statusproblemen hohen Schaden zu."
},
"skyDrop": {
- name: "Sky Drop",
- effect: "The user takes the target into the sky, then drops it during the next turn. The target cannot attack while in the sky."
+ name: "Freier Fall",
+ effect: "Steigt in Runde 1 mit dem Ziel in die Luft auf und lässt es in Runde 2 fallen. Das Ziel kann dabei nicht angreifen."
},
"shiftGear": {
- name: "Shift Gear",
- effect: "The user rotates its gears, raising its Attack stat and sharply raising its Speed stat."
+ name: "Gangwechsel",
+ effect: "Durch Drehen der Zahnräder erhöht sich nicht nur der Angriffs-Wert, sondern auch die Initiative des Anwenders stark."
},
"circleThrow": {
- name: "Circle Throw",
- effect: "The target is thrown, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon."
+ name: "Überkopfwurf",
+ effect: "Schleudert das Ziel davon und bewirkt damit, dass ein anderes Pokémon eingewechselt wird. Beendet Kämpfe gegen wilde Pokémon."
},
"incinerate": {
- name: "Incinerate",
- effect: "The user attacks opposing Pokémon with fire. If a Pokémon is holding a certain item, such as a Berry, the item becomes burned up and unusable."
+ name: "Einäschern",
+ effect: "Eine Feuer-Attacke. Trägt das Ziel eine Beere oder ein ähnliches Item bei sich, wird dieses von den Flammen verzehrt und geht verloren."
},
"quash": {
- name: "Quash",
- effect: "The user suppresses the target and makes its move go last."
+ name: "Verzögerung",
+ effect: "Anwender stemmt sich gegen das Ziel und bewirkt, dass dieses erst als Letztes angreift."
},
"acrobatics": {
- name: "Acrobatics",
- effect: "The user nimbly strikes the target. If the user is not holding an item, this attack inflicts massive damage."
+ name: "Akrobatik",
+ effect: "Ein graziler Angriff auf das Ziel. Trägt der Anwender kein Item bei sich, richtet die Attacke großen Schaden an."
},
"reflectType": {
- name: "Reflect Type",
- effect: "The user reflects the target's type, making the user the same type as the target."
+ name: "Typenspiegel",
+ effect: "Anwender bildet das Ziel nach und nimmt dabei dessen Typ an."
},
"retaliate": {
- name: "Retaliate",
- effect: "The user gets revenge for a fainted ally. If an ally fainted in the previous turn, this move's power is increased."
+ name: "Heimzahlung",
+ effect: "Anwender nimmt Rache für einen besiegten Mitstreiter. Wurde in der vorigen Runde ein Mitstreiter besiegt, steigt die Kraft."
},
"finalGambit": {
- name: "Final Gambit",
- effect: "The user risks everything to attack its target. The user faints but does damage equal to its HP."
+ name: "Wagemut",
+ effect: "Ein Angriff, der dem Ziel Schaden in Höhe der aktuellen KP des Anwenders zufügt. Letzterer wird dadurch selbst besiegt."
},
"bestow": {
- name: "Bestow",
- effect: "The user passes its held item to the target when the target isn't holding an item."
+ name: "Offerte",
+ effect: "Trägt das Ziel gerade kein Item bei sich, erhält es das Item, das sich aktuell im Besitz des Anwenders befindet."
},
"inferno": {
name: "Inferno",
- effect: "The user attacks by engulfing the target in an intense fire. This leaves the target with a burn."
+ effect: "Anwender greift das Ziel an, indem er es mit dichten Flammen umhüllt. Ziel erleidet Verbrennungen."
},
"waterPledge": {
- name: "Water Pledge",
- effect: "A column of water hits the target. When used with its fire equivalent, its power increases and a rainbow appears."
+ name: "Wassersäulen",
+ effect: "Ein Angriff mit Wassersäulen. Mit Feuersäulen kombiniert steigt die Wirkung und ein Regenbogen erscheint."
},
"firePledge": {
- name: "Fire Pledge",
- effect: "A column of fire hits the target. When used with its grass equivalent, its power increases and a vast sea of fire appears."
+ name: "Feuersäulen",
+ effect: "Ein Angriff mit Feuersäulen. Mit Pflanzsäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Meer aus Feuer."
},
"grassPledge": {
- name: "Grass Pledge",
- effect: "A column of grass hits the target. When used with its water equivalent, its power increases and a vast swamp appears."
+ name: "Pflanzensäulen",
+ effect: "Ein Angriff mit Pflanzsäulen. Mit Wassersäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Sumpf."
},
"voltSwitch": {
- name: "Volt Switch",
- effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting."
+ name: "Voltwechsel",
+ effect: "Anwender kehrt nach dem Angriff mit atemberaubender Geschwindigkeit zurück und tauscht Platz mit einem anderen Pokémon."
},
"struggleBug": {
- name: "Struggle Bug",
- effect: "While resisting, the user attacks opposing Pokémon. This lowers the Sp. Atk stats of those hit."
+ name: "Käfertrutz",
+ effect: "Anwender leistet Widerstand und greift an. Der Spezial-Angriff der Ziele sinkt."
},
"bulldoze": {
- name: "Bulldoze",
- effect: "The user strikes everything around it by stomping down on the ground. This lowers the Speed stats of those hit."
+ name: "Dampfwalze",
+ effect: "Anwender greift an, indem er den Boden um sich herum plattwalzt. Die Initiative aller betroffenen Pokémon sinkt."
},
"frostBreath": {
- name: "Frost Breath",
- effect: "The user blows its cold breath on the target. This attack always results in a critical hit."
+ name: "Eisesodem",
+ effect: "Anwender greift an, indem er dem Ziel eisigen Atem entgegenhaucht. Volltreffergarantie."
},
"dragonTail": {
- name: "Dragon Tail",
- effect: "The target is knocked away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon."
+ name: "Drachenrute",
+ effect: "Putzt das Ziel vom Feld und wechselt es mit einem anderen Pokémon aus. Beendet Kämpfe gegen wilde Pokémon."
},
"workUp": {
- name: "Work Up",
- effect: "The user is roused, and its Attack and Sp. Atk stats increase."
+ name: "Kraftschub",
+ effect: "Anwender erhält einen Kraftschub, der seinen Angriff und Spezial-Angriff erhöht."
},
"electroweb": {
- name: "Electroweb",
- effect: "The user attacks and captures opposing Pokémon using an electric net. This lowers their Speed stats."
+ name: "Elektronetz",
+ effect: "Fängt Ziele mit einem elektrischen Netz und senkt deren Initiative."
},
"wildCharge": {
- name: "Wild Charge",
- effect: "The user shrouds itself in electricity and smashes into its target. This also damages the user a little."
+ name: "Stromstoß",
+ effect: "Anwender erzeugt Spannung und greift an, indem er auf Kollisionskurs geht. Er selbst erleidet dabei ebenfalls leichten Schaden."
},
"drillRun": {
- name: "Drill Run",
- effect: "The user crashes into its target while rotating its body like a drill. Critical hits land more easily."
+ name: "Schlagbohrer",
+ effect: "Anwender rammt das Ziel, während er seinen Körper wie einen Bohrer dreht. Hohe Volltrefferquote."
},
"dualChop": {
- name: "Dual Chop",
- effect: "The user attacks its target by hitting it with brutal strikes. The target is hit twice in a row."
+ name: "Doppelhieb",
+ effect: "Versetzt dem Ziel mit massiven Extremitäten Hiebe. Angriff erfolgt zweimal hintereinander."
},
"heartStamp": {
- name: "Heart Stamp",
- effect: "The user unleashes a vicious blow after its cute act makes the target less wary. This may also make the target flinch."
+ name: "Herzstempel",
+ effect: "Verleitet Ziel durch Kokettieren zu Unachtsamkeit und verpasst ihm dann einen harten Schlag. Ziel schreckt eventuell zurück."
},
"hornLeech": {
- name: "Horn Leech",
- effect: "The user drains the target's energy with its horns. The user's HP is restored by half the damage taken by the target."
+ name: "Holzgeweih",
+ effect: "Greift Ziel mit Astgeweih an und zapft diesem Nährstoffe ab. Anwender wird um die Hälfte des zugefügten Schadens geheilt."
},
"sacredSword": {
- name: "Sacred Sword",
- effect: "The user attacks by slicing with a long horn. The target's stat changes don't affect this attack's damage."
+ name: "Sanctoklinge",
+ effect: "Schneideangriff mit langem Horn. Richtet Schaden unabhängig von Statusveränderungen des Zieles an."
},
"razorShell": {
- name: "Razor Shell",
- effect: "The user cuts its target with sharp shells. This may also lower the target's Defense stat."
+ name: "Kalkklinge",
+ effect: "Schneideangriff mit einer scharfen Muschelschale. Senkt eventuell die Verteidigung des Zieles."
},
"heatCrash": {
- name: "Heat Crash",
- effect: "The user slams its target with its flame-covered body. The more the user outweighs the target, the greater the move's power."
+ name: "Brandstempel",
+ effect: "Rempelattacke mit brennendem Körper. Je schwerer der Anwender im Vergleich zum Ziel ist, desto stärker die Attacke."
},
"leafTornado": {
- name: "Leaf Tornado",
- effect: "The user attacks its target by encircling it in sharp leaves. This attack may also lower the target's accuracy."
+ name: "Grasmixer",
+ effect: "Anwender greift an, indem er das Ziel in scharfes Blattwerk einwickelt. Kann die Genauigkeit senken."
},
"steamroller": {
- name: "Steamroller",
- effect: "The user crushes its target by rolling over the target with its rolled-up body. This may also make the target flinch."
+ name: "Quetschwalze",
+ effect: "Anwender rollt mit rundlichem Körper über das Ziel und drückt es platt. Ziel schreckt eventuell zurück."
},
"cottonGuard": {
- name: "Cotton Guard",
- effect: "The user protects itself by wrapping its body in soft cotton, which drastically raises the user's Defense stat."
+ name: "Watteschild",
+ effect: "Anwender schützt sich, indem er sich in einen luftigen Flaum hüllt. Erhöht die Verteidigung drastisch."
},
"nightDaze": {
- name: "Night Daze",
- effect: "The user lets loose a pitch-black shock wave at its target. This may also lower the target's accuracy."
+ name: "Nachtflut",
+ effect: "Anwender greift Ziel mit finsteren Schockwellen an. Senkt eventuell die Genauigkeit."
},
"psystrike": {
- name: "Psystrike",
- effect: "The user materializes an odd psychic wave to attack the target. This attack does physical damage."
+ name: "Psychostoß",
+ effect: "Anwender erzeugt seltsame Energiewellen, die dem Ziel physischen Schaden zufügen."
},
"tailSlap": {
- name: "Tail Slap",
- effect: "The user attacks by striking the target with its hard tail. It hits the target two to five times in a row."
+ name: "Kehrschelle",
+ effect: "Anwender greift das Ziel mit seiner schlagfesten Rute zwei- bis fünfmal hintereinander an."
},
"hurricane": {
- name: "Hurricane",
- effect: "The user attacks by wrapping its opponent in a fierce wind that flies up into the sky. This may also confuse the target."
+ name: "Orkan",
+ effect: "Anwender greift das Ziel an, indem er es mit heftigen Windböen umgibt. Ziel wird eventuell verwirrt."
},
"headCharge": {
- name: "Head Charge",
- effect: "The user charges its head into its target, using its powerful guard hair. This also damages the user a little."
+ name: "Steinschädel",
+ effect: "Rempelattacke mit ausgeflippter Retrofrisur. Anwender nimmt selbst leichten Schaden."
},
"gearGrind": {
- name: "Gear Grind",
- effect: "The user attacks by throwing steel gears at its target twice."
+ name: "Klikkdiskus",
+ effect: "Anwender greift an, indem er stählerne Zahnräder auf das Ziel schleudert. Angriff erfolgt zweimal hintereinander."
},
"searingShot": {
- name: "Searing Shot",
- effect: "The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn."
+ name: "Flammenball",
+ effect: "Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden."
},
"technoBlast": {
- name: "Techno Blast",
- effect: "The user fires a beam of light at its target. The move's type changes depending on the Drive the user holds."
+ name: "Techblaster",
+ effect: "Anwender feuert ein Lichtgeschoss auf das Ziel ab. Der Typ der Attacke hängt von dem des Moduls ab."
},
"relicSong": {
- name: "Relic Song",
- effect: "The user sings an ancient song and attacks by appealing to the hearts of the listening opposing Pokémon. This may also induce sleep."
+ name: "Urgesang",
+ effect: "Anwender greift mit Urgesang an, der Ziele in der Nähe im tiefsten Inneren anspricht. Diese schlafen eventuell ein."
},
"secretSword": {
- name: "Secret Sword",
- effect: "The user cuts with its long horn. The odd power contained in the horn does physical damage to the target."
+ name: "Mystoschwert",
+ effect: "Schneideangriff mit dem langen Schwert des Anwenders. Die mysteriöse Kraft aus dem Horn erzeugt physischen Schaden."
},
"glaciate": {
- name: "Glaciate",
- effect: "The user attacks by blowing freezing cold air at opposing Pokémon. This lowers their Speed stats."
+ name: "Eiszeit",
+ effect: "Anwender greift an, indem er dem Ziel klirrend kalte Luft entgegenbläst. Senkt die Initiative des Zieles."
},
"boltStrike": {
- name: "Bolt Strike",
- effect: "The user surrounds itself with a great amount of electricity and charges its target. This may also leave the target with paralysis."
+ name: "Blitzschlag",
+ effect: "Lädt seinen Körper mit einer gewaltigen Menge an Elektrizität auf und rammt damit das Ziel. Ziel wird eventuell paralysiert."
},
"blueFlare": {
- name: "Blue Flare",
- effect: "The user attacks by engulfing the target in an intense, yet beautiful, blue flame. This may also leave the target with a burn."
+ name: "Blauflammen",
+ effect: "Anwender greift an, indem er das Ziel in wunderschöne, intensivblaue Flammen hüllt, die es eventuell verbrennen."
},
"fieryDance": {
- name: "Fiery Dance",
- effect: "Cloaked in flames, the user attacks the target by dancing and flapping its wings. This may also raise the user's Sp. Atk stat."
+ name: "Feuerreigen",
+ effect: "Hüllt das Ziel mit einer Feuerhose in Flammen. Kann den Spezial-Angriff des Anwenders erhöhen."
},
"freezeShock": {
- name: "Freeze Shock",
- effect: "On the second turn, the user hits the target with electrically charged ice. This may also leave the target with paralysis."
+ name: "Frostvolt",
+ effect: "Feuert in der zweiten Runde elektrisch geladene Eisklumpen auf das Ziel ab. Paralysiert das Ziel eventuell."
},
"iceBurn": {
- name: "Ice Burn",
- effect: "On the second turn, an ultracold, freezing wind surrounds the target. This may leave the target with a burn."
+ name: "Frosthauch",
+ effect: "Umgibt das Ziel in der nächsten Runde mit heftigen, alles gefrierenden Eisböen. Fügt dem Ziel eventuell Verbrennungen zu."
},
"snarl": {
- name: "Snarl",
- effect: "The user yells as if it's ranting about something, which lowers the Sp. Atk stats of opposing Pokémon."
+ name: "Standpauke",
+ effect: "Wäscht Zielen in der Nähe mit einer ausführlichen Standpauke den Kopf und senkt dabei deren Spezial-Angriff."
},
"icicleCrash": {
- name: "Icicle Crash",
- effect: "The user attacks by harshly dropping large icicles onto the target. This may also make the target flinch."
+ name: "Eiszapfhagel",
+ effect: "Lässt große, schwere Eiszapfen auf das Ziel herabregnen. Ziel schreckt eventuell zurück."
},
"vCreate": {
- name: "V-create",
- effect: "With a hot flame on its forehead, the user hurls itself at its target. This lowers the user's Defense, Sp. Def, and Speed stats."
+ name: "V-Generator",
+ effect: "Eine Verzweiflungsattacke. Anwender entfacht glühend heißes Feuer. Senkt dessen Verteidigung, Spezial-Verteidigung und Initiative."
},
"fusionFlare": {
- name: "Fusion Flare",
- effect: "The user brings down a giant flame. This move's power is increased when influenced by an enormous lightning bolt."
+ name: "Kreuzflamme",
+ effect: "Feuert eine monströse Flamme ab. Wird die Attacke durch einen gigantischen Blitz modifiziert, steigt die Stärke."
},
"fusionBolt": {
- name: "Fusion Bolt",
- effect: "The user throws down a giant lightning bolt. This move's power is increased when influenced by an enormous flame."
+ name: "Kreuzdonner",
+ effect: "Feuert einen monströsen Blitz ab. Wird die Attacke durch eine gigantische Flamme modifiziert, steigt die Stärke."
},
"flyingPress": {
name: "Flying Press",
- effect: "The user dives down onto the target from the sky. This move is Fighting and Flying type simultaneously."
+ effect: "Der Anwender stürzt sich aus der Luft auf das Ziel. Die Attacke gehört sowohl dem Typ Kampf als auch dem Typ Flug an."
},
"matBlock": {
- name: "Mat Block",
- effect: "Using a pulled-up mat as a shield, the user protects itself and its allies from damaging moves. This does not stop status moves."
+ name: "Tatami-Schild",
+ effect: "Der Anwender richtet eine Tatami-Matte auf, um sich und sein Team vor Schaden zu schützen. Kein Schutz vor Status-Attacken."
},
"belch": {
- name: "Belch",
- effect: "The user lets out a damaging belch at the target. The user must eat a held Berry to use this move."
+ name: "Rülpser",
+ effect: "Der Anwender fügt dem Ziel Schaden zu, indem er es anrülpst. Diese Attacke gelingt nur nach dem Konsum einer getragenen Beere."
},
"rototiller": {
- name: "Rototiller",
- effect: "Tilling the soil, the user makes it easier for plants to grow. This raises the Attack and Sp. Atk stats of Grass-type Pokémon."
+ name: "Pflüger",
+ effect: "Der Anwender pflügt den Boden und macht die Erde fruchtbarer. Erhöht den Angriff und den Spezial-Angriff von Pflanzen-Pokémon."
},
"stickyWeb": {
- name: "Sticky Web",
- effect: "The user weaves a sticky net around the opposing team, which lowers their Speed stats upon switching into battle."
+ name: "Klebenetz",
+ effect: "Der Anwender spinnt in der Umgebung des gegnerischen Teams ein klebriges Netz und senkt so die Initiative neu eingewechselter Pokémon."
},
"fellStinger": {
- name: "Fell Stinger",
- effect: "When the user knocks out a target with this move, the user's Attack stat rises drastically."
+ name: "Stachelfinale",
+ effect: "Gelingt es dem Anwender, das Ziel mit dieser Attacke zu besiegen, steigt sein Angriffs-Wert stark."
},
"phantomForce": {
- name: "Phantom Force",
- effect: "The user vanishes somewhere, then strikes the target on the next turn. This move hits even if the target protects itself."
+ name: "Phantomkraft",
+ effect: "Der Anwender verschwindet, um eine Runde lang seine Kraft zu sammeln und in der nächsten Runde anzugreifen. Durchbricht die Defensive des Zieles."
},
"trickOrTreat": {
- name: "Trick-or-Treat",
- effect: "The user takes the target trick-or-treating. This adds Ghost type to the target's type."
+ name: "Halloween",
+ effect: "Der Anwender lehrt das Ziel das Fürchten. Dieses nimmt dadurch zusätzlich den Typ Geist an."
},
"nobleRoar": {
- name: "Noble Roar",
- effect: "Letting out a noble roar, the user intimidates the target and lowers its Attack and Sp. Atk stats."
+ name: "Kampfgebrüll",
+ effect: "Der Anwender stößt ein Kampfgebrüll aus, das das Ziel einschüchtert und zugleich seinen Angriffs- und Spezial-Angriffs-Wert senkt."
},
"ionDeluge": {
- name: "Ion Deluge",
- effect: "The user disperses electrically charged particles, which changes Normal-type moves to Electric-type moves."
+ name: "Plasmaschauer",
+ effect: "Versprüht elektrisch geladene Partikel und bewirkt, dass Normal-Attacken den Typ Elektro annehmen."
},
"parabolicCharge": {
- name: "Parabolic Charge",
- effect: "The user attacks everything around it. The user's HP is restored by half the damage taken by those hit."
+ name: "Parabolladung",
+ effect: "Fügt allen Pokémon in der Umgebung Schaden zu. Der Anwender wird um die Hälfte des insgesamt angerichteten Schadens geheilt."
},
"forestsCurse": {
- name: "Forest's Curse",
- effect: "The user puts a forest curse on the target. The target is now Grass type as well."
+ name: "Waldesfluch",
+ effect: "Der Anwender belegt das Ziel mit einem Waldesfluch, durch den dieses zusätzlich den Typ Pflanze annimmt."
},
"petalBlizzard": {
- name: "Petal Blizzard",
- effect: "The user stirs up a violent petal blizzard and attacks everything around it."
+ name: "Blütenwirbel",
+ effect: "Der Anwender erzeugt einen turbulenten Blütenwirbel, der alle Pokémon in der Nähe erfasst und ihnen Schaden zufügt."
},
"freezeDry": {
- name: "Freeze-Dry",
- effect: "The user rapidly cools the target. This may also leave the target frozen. This move is super effective on Water types."
+ name: "Gefriertrockner",
+ effect: "Das Ziel wird stark abgekühlt und manchmal sogar eingefroren. Die Attacke ist sehr effektiv gegen Wasser-Pokémon."
},
"disarmingVoice": {
- name: "Disarming Voice",
- effect: "Letting out a charming cry, the user does emotional damage to opposing Pokémon. This attack never misses."
+ name: "Säuselstimme",
+ effect: "Der Anwender stößt einen bezirzenden Ruf aus, mit dem er das Ziel in seinen Bann schlägt und ihm immer mentalen Schaden zufügt."
},
"partingShot": {
- name: "Parting Shot",
- effect: "With a parting threat, the user lowers the target's Attack and Sp. Atk stats. Then it switches with a party Pokémon."
+ name: "Abgangstirade",
+ effect: "Schüchtert das Ziel mit einer Abgangstirade ein, sodass dessen Angriffs- und Spezial-Angriffs-Wert sinken. Danach wird der Anwender ausgewechselt."
},
"topsyTurvy": {
- name: "Topsy-Turvy",
- effect: "All stat changes affecting the target turn topsy-turvy and become the opposite of what they were."
+ name: "Invertigo",
+ effect: "Invertiert alle Statusveränderungen des Zieles."
},
"drainingKiss": {
- name: "Draining Kiss",
- effect: "The user steals the target's HP with a kiss. The user's HP is restored by over half of the damage taken by the target."
+ name: "Diebeskuss",
+ effect: "Der Anwender stiehlt dem Ziel mit einem Kuss KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens."
},
"craftyShield": {
- name: "Crafty Shield",
- effect: "The user protects itself and its allies from status moves with a mysterious power. This does not stop moves that do damage."
+ name: "Trickschutz",
+ effect: "Schützt sich und Mitstreiter mit einer mysteriösen Macht vor Status-Attacken. Es werden jedoch weiterhin KP-Schäden erlitten."
},
"flowerShield": {
- name: "Flower Shield",
- effect: "The user raises the Defense stats of all Grass-type Pokémon in battle with a mysterious power."
+ name: "Floraschutz",
+ effect: "Erhöht mit einer mysteriösen Macht die Verteidigung aller am Kampf beteiligten Pflanzen-Pokémon."
},
"grassyTerrain": {
- name: "Grassy Terrain",
- effect: "The user turns the ground to grass for five turns. This restores the HP of Pokémon on the ground a little every turn and powers up Grass-type moves."
+ name: "Grasfeld",
+ effect: "Verwandelt den Untergrund fünf Runden lang in ein Grasfeld und heilt in jeder neuen Runde alle Pokémon, die den Boden berühren."
},
"mistyTerrain": {
- name: "Misty Terrain",
- effect: "This protects Pokémon on the ground from status conditions and halves damage from Dragon-type moves for five turns."
+ name: "Nebelfeld",
+ effect: "Verwandelt den Untergrund fünf Runden lang in ein Nebelfeld und schützt alle Pokémon, die den Boden berühren, vor Statusproblemen."
},
"electrify": {
- name: "Electrify",
- effect: "If the target is electrified before it uses a move during that turn, the target's move becomes Electric type."
+ name: "Elektrifizierung",
+ effect: "Kommt die Attacke zum Einsatz, bevor das Ziel seine Attacke ausführt, nimmt diese für die Dauer dieser Runde den Typ Elektro an."
},
"playRough": {
- name: "Play Rough",
- effect: "The user plays rough with the target and attacks it. This may also lower the target's Attack stat."
+ name: "Knuddler",
+ effect: "Der Anwender knuddelt das Ziel und greift es an. Gelegentlich sinkt dabei auch dessen Angriffs-Wert."
},
"fairyWind": {
- name: "Fairy Wind",
- effect: "The user stirs up a fairy wind and strikes the target with it."
+ name: "Feenbrise",
+ effect: "Lässt eine Feenbrise aufkommen, die das Ziel erfasst und ihm Schaden zufügt."
},
"moonblast": {
- name: "Moonblast",
- effect: "Borrowing the power of the moon, the user attacks the target. This may also lower the target's Sp. Atk stat."
+ name: "Mondgewalt",
+ effect: "Der Anwender macht sich die Kraft des Mondes zunutze, um anzugreifen. Gelegentlich wird dabei der Spezial-Angriff des Zieles gesenkt."
},
"boomburst": {
- name: "Boomburst",
- effect: "The user attacks everything around it with the destructive power of a terrible, explosive sound."
+ name: "Überschallknall",
+ effect: "Der Anwender greift alle Pokémon in der Umgebung mit einem gewaltigen Knall an."
},
"fairyLock": {
- name: "Fairy Lock",
- effect: "By locking down the battlefield, the user keeps all Pokémon from fleeing during the next turn."
+ name: "Feenschloss",
+ effect: "Der Anwender sperrt alle Pokémon ein und hindert sie damit in der nächsten Runde an der Flucht."
},
"kingsShield": {
- name: "King's Shield",
- effect: "The user takes a defensive stance while it protects itself from damage. It also lowers the Attack stat of any attacker that makes direct contact."
+ name: "Königsschild",
+ effect: "Der Anwender weicht dem gegnerischen Angriff aus und geht in die Defensive. Berührt ihn nun ein Pokémon, sinkt der Angriffs-Wert dieses Gegners."
},
"playNice": {
- name: "Play Nice",
- effect: "The user and the target become friends, and the target loses its will to fight. This lowers the target's Attack stat."
+ name: "Kameradschaft",
+ effect: "Der Anwender schließt mit dem Ziel Freundschaft und nimmt ihm seine Angriffslust. Der Angriffs-Wert des Zieles sinkt."
},
"confide": {
- name: "Confide",
- effect: "The user tells the target a secret, and the target loses its ability to concentrate. This lowers the target's Sp. Atk stat."
+ name: "Vertrauenssache",
+ effect: "Der Anwender vertraut dem Ziel ein Geheimnis an und stört auf diese Weise seine Konzentration. Der Spezial-Angriff des Zieles sinkt."
},
"diamondStorm": {
- name: "Diamond Storm",
- effect: "The user whips up a storm of diamonds to damage opposing Pokémon. This may also sharply raise the user's Defense stat."
+ name: "Diamantsturm",
+ effect: "Der Anwender beschwört einen zerstörerischen Diamantsturm herauf. Kann die Verteidigung des Anwenders erhöhen."
},
"steamEruption": {
- name: "Steam Eruption",
- effect: "The user immerses the target in superheated steam. This may also leave the target with a burn."
+ name: "Dampfschwall",
+ effect: "Der Anwender feuert einen siedend heißen Dampfschwall auf das Ziel ab. Dieses kann dabei Verbrennungen erleiden."
},
"hyperspaceHole": {
- name: "Hyperspace Hole",
- effect: "Using a hyperspace hole, the user appears right next to the target and strikes. This also hits a target using a move such as Protect or Detect."
+ name: "Dimensionsloch",
+ effect: "Der Anwender positioniert sich mithilfe eines Dimensionslochs direkt neben dem Ziel und durchbricht selbst Schutzschild und Scanner."
},
"waterShuriken": {
- name: "Water Shuriken",
- effect: "The user hits the target with throwing stars two to five times in a row. This move always goes first."
+ name: "Wasser-Shuriken",
+ effect: "Der Anwender schleudert dem Ziel Wurfsterne aus einem verdickten Sekret entgegen. Eine Serien-Attacke, die zwei- bis fünfmal trifft."
},
"mysticalFire": {
- name: "Mystical Fire",
- effect: "The user attacks by breathing a special, hot fire. This also lowers the target's Sp. Atk stat."
+ name: "Magieflamme",
+ effect: "Der Anwender greift das Ziel an, indem er ihm eine besondere, heiße Flamme entgegenbläst. Der Spezial-Angriff des Zieles sinkt."
},
"spikyShield": {
- name: "Spiky Shield",
- effect: "In addition to protecting the user from attacks, this move also damages any attacker that makes direct contact."
+ name: "Schutzstacheln",
+ effect: "Der Anwender weicht gegnerischen Angriffen aus. Gleichzeitig nehmen alle Pokémon, die mit ihm in Berührung kommen, Schaden."
},
"aromaticMist": {
- name: "Aromatic Mist",
- effect: "The user raises the Sp. Def stat of an ally Pokémon by using a mysterious aroma."
+ name: "Duftwolke",
+ effect: "Der Anwender erhöht mithilfe eines mysteriösen Duftes die Spezial-Verteidigung eines Mitstreiters."
},
"eerieImpulse": {
- name: "Eerie Impulse",
- effect: "The user's body generates an eerie impulse. Exposing the target to it harshly lowers the target's Sp. Atk stat."
+ name: "Mystowellen",
+ effect: "Der Körper des Anwenders erzeugt mysteriöse Wellen und senkt den Spezial-Angriff des Zieles dadurch stark."
},
"venomDrench": {
- name: "Venom Drench",
- effect: "Opposing Pokémon are drenched in an odd poisonous liquid. This lowers the Attack, Sp. Atk, and Speed stats of a poisoned target."
+ name: "Giftfalle",
+ effect: "Anwender bespritzt das Ziel mit einer speziellen Giftflüssigkeit. Senkt den Angriff, den Spezial- Angriff und die Initiative von vergifteten Zielen."
},
"powder": {
- name: "Powder",
- effect: "The user covers the target in a combustible powder. If the target uses a Fire-type move, the powder explodes and damages the target."
+ name: "Pulverschleuder",
+ effect: "Setzt das Ziel nach Einsatz von Pulverschleuder in derselben Runde eine Feuer-Attacke ein, kommt es zu einer Explosion, die ihm schadet."
},
"geomancy": {
- name: "Geomancy",
- effect: "The user absorbs energy and sharply raises its Sp. Atk, Sp. Def, and Speed stats on the next turn."
+ name: "Geokontrolle",
+ effect: "Der Anwender saugt in Runde 1 Energie auf. In Runde 2 steigen folgende Statuswerte stark: Spezial-Angriff, Spezial-Verteidigung und Initiative."
},
"magneticFlux": {
- name: "Magnetic Flux",
- effect: "The user manipulates magnetic fields, which raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability."
+ name: "Magnetregler",
+ effect: "Das Magnetfeld wird so manipuliert, dass Spezial- Verteidigung und Verteidigung von Team-Pokémon mit der Fähigkeit Plus oder Minus steigen."
},
"happyHour": {
- name: "Happy Hour",
- effect: "Using Happy Hour doubles the amount of prize money received after battle."
+ name: "Goldene Zeiten",
+ effect: "Nach Einsatz der Attacke Goldene Zeiten verdoppelt sich das Preisgeld, das du im Falle eines Sieges erhältst."
},
"electricTerrain": {
- name: "Electric Terrain",
- effect: "The user electrifies the ground for five turns, powering up Electric-type moves. Pokémon on the ground no longer fall asleep."
+ name: "Elektrofeld",
+ effect: "Verwandelt den Untergrund fünf Runden lang in ein Elektrofeld und hindert alle Pokémon, die den Boden berühren, am Einschlafen."
},
"dazzlingGleam": {
- name: "Dazzling Gleam",
- effect: "The user damages opposing Pokémon by emitting a powerful flash."
+ name: "Zauberschein",
+ effect: "Der Anwender feuert einen mächtigen Lichtblitz ab, der dem Ziel Schaden zufügt."
},
"celebrate": {
- name: "Celebrate",
- effect: "The Pokémon congratulates you on your special day!"
+ name: "Ehrentag",
+ effect: "Das Pokémon gratuliert dir zu deinem Geburtstag!"
},
"holdHands": {
- name: "Hold Hands",
- effect: "The user and an ally hold hands. This makes them very happy."
+ name: "Händchenhalten",
+ effect: "Der Anwender und ein Mitstreiter reichen einander die Hände und verfallen in einen Zustand tiefster Zufriedenheit."
},
"babyDollEyes": {
- name: "Baby-Doll Eyes",
- effect: "The user stares at the target with its baby-doll eyes, which lowers the target's Attack stat. This move always goes first."
+ name: "Kulleraugen",
+ effect: "Der Anwender erobert das Herz des Zieles, indem er es mit Kulleraugen ansieht. Senkt den Angriffs-Wert. Erstschlaggarantie."
},
"nuzzle": {
- name: "Nuzzle",
- effect: "The user attacks by nuzzling its electrified cheeks against the target. This also leaves the target with paralysis."
+ name: "Wangenrubbler",
+ effect: "Der Anwender lädt seine Wangen elektrisch auf und greift an, indem er sich damit am Ziel reibt. Das Ziel wird paralysiert."
},
"holdBack": {
- name: "Hold Back",
- effect: "The user holds back when it attacks, and the target is left with at least 1 HP."
+ name: "Zurückhaltung",
+ effect: "Der Anwender hält sich beim Angriff zurück und sorgt auf diese Weise dafür, dass dem Ziel danach mindestens 1 KP verbleibt."
},
"infestation": {
- name: "Infestation",
- effect: "The target is infested and attacked for four to five turns. The target can't flee during this time."
+ name: "Plage",
+ effect: "Der Anwender fällt vier bis fünf Runden lang wie eine Plage über das Ziel her und greift es an. In diesem Zeitraum kann es nicht fliehen."
},
"powerUpPunch": {
- name: "Power-Up Punch",
- effect: "Striking opponents over and over makes the user's fists harder. Hitting a target raises the Attack stat."
+ name: "Steigerungshieb",
+ effect: "Die Fäuste des Anwenders härten durch wiederholtes Zuschlagen ab. Mit jedem Treffer steigt sein Angriffs-Wert."
},
"oblivionWing": {
- name: "Oblivion Wing",
- effect: "The user absorbs its target's HP. The user's HP is restored by over half of the damage taken by the target."
+ name: "Unheilsschwingen",
+ effect: "Der Anwender raubt dem Ziel KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens."
},
"thousandArrows": {
- name: "Thousand Arrows",
- effect: "This move also hits opposing Pokémon that are in the air. Those Pokémon are knocked down to the ground."
+ name: "Tausend Pfeile",
+ effect: "Die Attacke erfasst auch schwebende Pokémon. Erfasst sie ein Pokémon im Schwebe-Zustand, fällt es zu Boden."
},
"thousandWaves": {
- name: "Thousand Waves",
- effect: "The user attacks with a wave that crawls along the ground. Those it hits can't flee from battle."
+ name: "Tausend Wellen",
+ effect: "Der Anwender greift mit einer Welle an, die dicht über dem Boden verläuft und alle Pokémon, die sie erfasst, an der Flucht hindert."
},
"landsWrath": {
- name: "Land's Wrath",
- effect: "The user gathers the energy of the land and focuses that power on opposing Pokémon to damage them."
+ name: "Bodengewalt",
+ effect: "Der Anwender sammelt die Kraft des weiten Landes und greift an, indem er sie gebündelt auf das Ziel lenkt."
},
"lightOfRuin": {
- name: "Light of Ruin",
- effect: "Drawing power from the Eternal Flower, the user fires a powerful beam of light. This also damages the user quite a lot."
+ name: "Lux Calamitatis",
+ effect: "Die Attacke basiert auf der Kraft des Ewigblütlers, die als mächtiger Lichtstrahl abgefeuert wird. Der Anwender nimmt dabei selbst großen Schaden."
},
"originPulse": {
- name: "Origin Pulse",
- effect: "The user attacks opposing Pokémon with countless beams of light that glow a deep and brilliant blue."
+ name: "Ursprungswoge",
+ effect: "Der Anwender greift das Ziel mit unzähligen blau leuchtenden Strahlen an."
},
"precipiceBlades": {
- name: "Precipice Blades",
- effect: "The user attacks opposing Pokémon by manifesting the power of the land in fearsome blades of stone."
+ name: "Abgrundsklinge",
+ effect: "Der Anwender wandelt die Kraft des Erdreichs in Klingen um, mit denen er das Ziel angreift."
},
"dragonAscent": {
- name: "Dragon Ascent",
- effect: "After soaring upward, the user attacks its target by dropping out of the sky at high speeds. But it lowers its own Defense and Sp. Def stats in the process."
+ name: "Zenitstürmer",
+ effect: "Der Anwender greift das Ziel aus atemberaubender Höhe im Sturzflug an. Senkt Verteidigung und Spezial-Verteidigung des Anwenders."
},
"hyperspaceFury": {
- name: "Hyperspace Fury",
- effect: "Using its many arms, the user unleashes a barrage of attacks that ignore the effects of moves like Protect and Detect. But the user's Defense stat falls."
+ name: "Dimensionswahn",
+ effect: "Eine Angriffsserie mit vielen Armen, die die Wirkung von Schutzschild und Scanner durchbricht. Dabei sinkt die Verteidigung des Anwenders."
},
"breakneckBlitzPhysical": {
- name: "Breakneck Blitz",
- effect: "The user builds up its momentum using its Z-Power and crashes into the target at full speed. The power varies, depending on the original move."
+ name: "Hyper-Sprintangriff",
+ effect: "Der durch Z-Kraft energiegeladene Anwender rennt mit ganzer Kraft gegen das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"breakneckBlitzSpecial": {
name: "Breakneck Blitz",
effect: "Dummy Data"
},
"allOutPummelingPhysical": {
- name: "All-Out Pummeling",
- effect: "The user rams an energy orb created by its Z-Power into the target with full force. The power varies, depending on the original move."
+ name: "Fulminante Faustschläge",
+ effect: "Aus Z-Kraft hergestellte Energiebälle prallen mit voller Wucht auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"allOutPummelingSpecial": {
name: "All-Out Pummeling",
effect: "Dummy Data"
},
"supersonicSkystrikePhysical": {
- name: "Supersonic Skystrike",
- effect: "The user soars up with its Z-Power and plummets toward the target at full speed. The power varies, depending on the original move."
+ name: "Finaler Steilflug",
+ effect: "Der Anwender schwingt sich durch Z-Kraft in die Lüfte und stürzt sich dann auf das Ziel hinab. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"supersonicSkystrikeSpecial": {
name: "Supersonic Skystrike",
effect: "Dummy Data"
},
"acidDownpourPhysical": {
- name: "Acid Downpour",
- effect: "The user creates a poisonous swamp using its Z-Power and sinks the target into it at full force. The power varies, depending on the original move."
+ name: "Vernichtender Säureregen",
+ effect: "Der Anwender kreiert mit Z-Kraft ein giftiges Moor, in dem das Ziel versinkt. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"acidDownpourSpecial": {
name: "Acid Downpour",
effect: "Dummy Data"
},
"tectonicRagePhysical": {
- name: "Tectonic Rage",
- effect: "The user burrows deep into the ground and slams into the target with the full force of its Z-Power. The power varies, depending on the original move."
+ name: "Seismische Eruption",
+ effect: "Der Anwender zerrt das Ziel mit Z-Kraft tief in den Boden und kollidiert dort mit ihm. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"tectonicRageSpecial": {
name: "Tectonic Rage",
effect: "Dummy Data"
},
"continentalCrushPhysical": {
- name: "Continental Crush",
- effect: "The user summons a huge rock mountain using its Z-Power and drops it onto the target with full force. The power varies, depending on the original move."
+ name: "Apokalyptische Steinpresse",
+ effect: "Der Anwender beschwört mit Z-Kraft einen großen Felsen herbei und lässt ihn auf das Ziel fallen. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"continentalCrushSpecial": {
name: "Continental Crush",
effect: "Dummy Data"
},
"savageSpinOutPhysical": {
- name: "Savage Spin-Out",
- effect: "The user binds the target with full force with threads of silk that the user spits using its Z-Power. The power varies, depending on the original move."
+ name: "Wirbelnder Insektenhieb",
+ effect: "Mithilfe von Z-Kraft umwickelt der Anwender das Ziel mit Fäden. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"savageSpinOutSpecial": {
name: "Savage Spin-Out",
effect: "Dummy Data"
},
"neverEndingNightmarePhysical": {
- name: "Never-Ending Nightmare",
- effect: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move."
+ name: "Ewige Nacht",
+ effect: "Der Anwender beschwört mit Z-Kraft tiefen Groll herbei und lässt diesen auf das Ziel los. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"neverEndingNightmareSpecial": {
name: "Never-Ending Nightmare",
effect: "Dummy Data"
},
"corkscrewCrashPhysical": {
- name: "Corkscrew Crash",
- effect: "The user spins very fast and rams into the target with the full force of its Z-Power. The power varies, depending on the original move."
+ name: "Turbo-Spiralkombo",
+ effect: "Der Anwender wirbelt durch Z-Kraft sehr schnell umher und prallt mit dem Ziel zusammen. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"corkscrewCrashSpecial": {
name: "Corkscrew Crash",
effect: "Dummy Data"
},
"infernoOverdrivePhysical": {
- name: "Inferno Overdrive",
- effect: "The user breathes a stream of intense fire toward the target with the full force of its Z-Power. The power varies depending on the original move."
+ name: "Dynamische Maxiflamme",
+ effect: "Der Anwender speit dank Z-Kraft eine gewaltige Kugel aus Flammen auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"infernoOverdriveSpecial": {
name: "Inferno Overdrive",
effect: "Dummy Data"
},
"hydroVortexPhysical": {
- name: "Hydro Vortex",
- effect: "The user creates a huge whirling current using its Z-Power to swallow the target with full force. The power varies, depending on the original move."
+ name: "Super-Wassertornado",
+ effect: "Der Anwender kreiert mit Z-Kraft einen riesigen Wasserstrudel, der das Ziel verschluckt. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"hydroVortexSpecial": {
name: "Hydro Vortex",
effect: "Dummy Data"
},
"bloomDoomPhysical": {
- name: "Bloom Doom",
- effect: "The user collects energy from plants using its Z-Power and attacks the target with full force. The power varies, depending on the original move."
+ name: "Brillante Blütenpracht",
+ effect: "Der Anwender leiht sich durch Z-Kraft die Energie von Wiesenblumen und greift das Ziel damit an. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"bloomDoomSpecial": {
name: "Bloom Doom",
effect: "Dummy Data"
},
"gigavoltHavocPhysical": {
- name: "Gigavolt Havoc",
- effect: "The user hits the target with a powerful electric current collected by its Z-Power. The power varies, depending on the original move."
+ name: "Gigavolt-Funkensalve",
+ effect: "Der Anwender greift das Ziel mit durch Z-Kraft gesammelter starker Elektrizität an. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"gigavoltHavocSpecial": {
name: "Gigavolt Havoc",
effect: "Dummy Data"
},
"shatteredPsychePhysical": {
- name: "Shattered Psyche",
- effect: "The user controls the target with its Z-Power and hurts the target with full force. The power varies, depending on the original move."
+ name: "Psycho-Schmetterschlag",
+ effect: "Der Anwender kontrolliert das Ziel mit Z-Kraft und macht ihm so das Leben schwer. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"shatteredPsycheSpecial": {
name: "Shattered Psyche",
effect: "Dummy Data"
},
"subzeroSlammerPhysical": {
- name: "Subzero Slammer",
- effect: "The user dramatically drops the temperature using its Z-Power and freezes the target with full force. The power varies, depending on the original move."
+ name: "Tobender Geofrost",
+ effect: "Der Anwender senkt mit Z-Kraft die Temperatur drastisch und lässt das Ziel einfrieren. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"subzeroSlammerSpecial": {
name: "Subzero Slammer",
effect: "Dummy Data"
},
"devastatingDrakePhysical": {
- name: "Devastating Drake",
- effect: "The user materializes its aura using its Z-Power and attacks the target with full force. The power varies, depending on the original move."
+ name: "Drastisches Drachendröhnen",
+ effect: "Der Anwender materialisiert durch Z-Kraft seine Aura und greift damit das Ziel an. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"devastatingDrakeSpecial": {
name: "Devastating Drake",
effect: "Dummy Data"
},
"blackHoleEclipsePhysical": {
- name: "Black Hole Eclipse",
- effect: "The user gathers dark energy using its Z-Power and sucks the target into it. The power varies, depending on the original move."
+ name: "Schwarzes Loch des Grauens",
+ effect: "Der Anwender sammelt mit Z-Kraft dunkle Energie an, die das Ziel verschlingt. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"blackHoleEclipseSpecial": {
name: "Black Hole Eclipse",
effect: "Dummy Data"
},
"twinkleTacklePhysical": {
- name: "Twinkle Tackle",
- effect: "The user creates a very charming space using its Z-Power and totally toys with the target. The power varies, depending on the original move."
+ name: "Entzückender Sternenstoß",
+ effect: "Der Anwender kreiert mit Z-Kraft eine zauberhafte Dimension und treibt dort sein Spiel mit dem Ziel. Die Stärke variiert je nach zugrunde liegender Attacke."
},
"twinkleTackleSpecial": {
name: "Twinkle Tackle",
effect: "Dummy Data"
},
"catastropika": {
- name: "Catastropika",
- effect: "The user, Pikachu, surrounds itself with the maximum amount of electricity using its Z-Power and pounces on its target with full force."
+ name: "Perfektes Pika-Projektil",
+ effect: "Pikachu umhüllt sich durch Z-Kraft mit gewaltiger elektrischer Energie und stürzt sich mit voller Kraft auf das Ziel."
},
"shoreUp": {
- name: "Shore Up",
- effect: "The user regains up to half of its max HP. It restores more HP in a sandstorm."
+ name: "Sandsammler",
+ effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt. Tobt ein Sandsturm, werden noch mehr KP aufgefüllt."
},
"firstImpression": {
- name: "First Impression",
- effect: "Although this move has great power, it only works the first turn each time the user enters battle."
+ name: "Überrumpler",
+ effect: "Eine sehr starke Attacke, die jedoch nur erfolgreich ist, wenn sie sofort eingesetzt wird, nachdem der Anwender das Kampffeld betreten hat."
},
"banefulBunker": {
- name: "Baneful Bunker",
- effect: "In addition to protecting the user from attacks, this move also poisons any attacker that makes direct contact."
+ name: "Bunker",
+ effect: "Der Anwender wird vor Angriffen geschützt. Gleichzeitig werden alle Pokémon, die mit ihm in Berührung kommen, vergiftet."
},
"spiritShackle": {
- name: "Spirit Shackle",
- effect: "The user attacks while simultaneously stitching the target's shadow to the ground to prevent the target from escaping."
+ name: "Schattenfessel",
+ effect: "Der Anwender greift das Ziel an und näht zugleich dessen Schatten am Boden fest, sodass es nicht entkommen kann."
},
"darkestLariat": {
- name: "Darkest Lariat",
- effect: "The user swings both arms and hits the target. The target's stat changes don't affect this attack's damage."
+ name: "Dark Lariat",
+ effect: "Der Anwender wirbelt mit beiden Armen und prallt so auf das Ziel. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an."
},
"sparklingAria": {
- name: "Sparkling Aria",
- effect: "The user bursts into song, emitting many bubbles. Any Pokémon suffering from a burn will be healed by the touch of these bubbles."
+ name: "Schaumserenade",
+ effect: "Durch Gesang erzeugte Blasen werden auf das Ziel geschleudert. Alle Pokémon, die dadurch Schaden erleiden, werden auch von Verbrennungen geheilt."
},
"iceHammer": {
- name: "Ice Hammer",
- effect: "The user swings and hits with its strong, heavy fist. It lowers the user's Speed, however."
+ name: "Eishammer",
+ effect: "Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders."
},
"floralHealing": {
- name: "Floral Healing",
- effect: "The user restores the target's HP by up to half of its max HP. It restores more HP when the terrain is grass."
+ name: "Florakur",
+ effect: "KP des Zieles werden um 50 % der maximalen KP aufgefüllt. Die Wirkung steigt, wenn der Untergrund in ein Grasfeld verwandelt wurde."
},
"highHorsepower": {
- name: "High Horsepower",
- effect: "The user fiercely attacks the target using its entire body."
+ name: "Pferdestärke",
+ effect: "Der Anwender greift das Ziel mit einer heftigen Ganzkörper-Attacke an."
},
"strengthSap": {
- name: "Strength Sap",
- effect: "The user restores its HP by the same amount as the target's Attack stat. It also lowers the target's Attack stat."
+ name: "Kraftabsorber",
+ effect: "Ein Angriff, der die KP des Anwenders um die Höhe des Angriffs-Werts des Zieles heilt. Anschließend wird der Angriff des Zieles gesenkt."
},
"solarBlade": {
- name: "Solar Blade",
- effect: "In this two-turn attack, the user gathers light and fills a blade with the light's energy, attacking the target on the next turn."
+ name: "Solarklinge",
+ effect: "Der Anwender absorbiert in der 1. Runde Licht, das er in der 2. Runde zu einem Schwert formt, mit dem er angreift."
},
"leafage": {
- name: "Leafage",
- effect: "The user attacks by pelting the target with leaves."
+ name: "Blattwerk",
+ effect: "Der Anwender greift das Ziel mit Blättern an."
},
"spotlight": {
- name: "Spotlight",
- effect: "The user shines a spotlight on the target so that only the target will be attacked during the turn."
+ name: "Rampenlicht",
+ effect: "Der Anwender lenkt die Aufmerksamkeit auf das Ziel, sodass in dieser Runde nur noch dieses Pokémon angegriffen wird."
},
"toxicThread": {
- name: "Toxic Thread",
- effect: "The user shoots poisonous threads to poison the target and lower the target's Speed stat."
+ name: "Giftfaden",
+ effect: "Der Anwender schießt giftige Fäden auf das Ziel, das dadurch vergiftet wird. Außerdem sinkt seine Initiative."
},
"laserFocus": {
- name: "Laser Focus",
- effect: "The user concentrates intensely. The attack on the next turn always results in a critical hit."
+ name: "Konzentration",
+ effect: "Der Anwender konzentriert sich, wodurch sein nächster Angriff garantiert ein Volltreffer wird."
},
"gearUp": {
- name: "Gear Up",
- effect: "The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability."
+ name: "Hilfsmechanik",
+ effect: "Der Anwender erhöht mithilfe von Zahnrädern Angriff und Spezial-Angriff von Team-Pokémon mit der Fähigkeit Plus oder Minus."
},
"throatChop": {
- name: "Throat Chop",
- effect: "The user attacks the target's throat, and the resultant suffering prevents the target from using moves that emit sound for two turns."
+ name: "Neck Strike",
+ effect: "Das Pokémon, das von dieser Attacke getroffen wird, erleidet starke Schmerzen und kann deswegen zwei Runden lang keine Lärm-Attacken mehr einsetzen."
},
"pollenPuff": {
- name: "Pollen Puff",
- effect: "The user attacks the enemy with a pollen puff that explodes. If the target is an ally, it gives the ally a pollen puff that restores its HP instead."
+ name: "Pollenknödel",
+ effect: "Der Anwender greift mit einem Ball aus Pollen an, der beim Ziel explodiert. Mitstreiter werden von einem Ball getroffen, der ihre KP auffüllt."
},
"anchorShot": {
- name: "Anchor Shot",
- effect: "The user entangles the target with its anchor chain while attacking. The target becomes unable to flee."
+ name: "Ankerschuss",
+ effect: "Der Anwender greift das Ziel an, indem er es mit einer Ankerkette umwickelt. Dadurch wird das Ziel an der Flucht gehindert."
},
"psychicTerrain": {
- name: "Psychic Terrain",
- effect: "This protects Pokémon on the ground from priority moves and powers up Psychic-type moves for five turns."
+ name: "Psychofeld",
+ effect: "Verhindert für fünf Runden, dass Pokémon am Boden von Attacken mit hoher Erstschlagquote getroffen werden. Erhöht die Stärke von Psycho-Attacken."
},
"lunge": {
- name: "Lunge",
- effect: "The user makes a lunge at the target, attacking with full force. This also lowers the target's Attack stat."
+ name: "Anfallen",
+ effect: "Der Anwender greift das Ziel mit ganzer Kraft an, wodurch auch der Angriffs-Wert des Zieles sinkt."
},
"fireLash": {
- name: "Fire Lash",
- effect: "The user strikes the target with a burning lash. This also lowers the target's Defense stat."
+ name: "Feuerpeitsche",
+ effect: "Der Anwender greift das Ziel mit einer brennenden Peitsche an und senkt dabei zusätzlich dessen Verteidigungs-Wert."
},
"powerTrip": {
- name: "Power Trip",
- effect: "The user boasts its strength and attacks the target. The more the user's stats are raised, the greater the move's power."
+ name: "Überheblichkeit",
+ effect: "Der Anwender prahlt mit seiner Stärke und greift das Ziel an. Dieser Angriff ist umso stärker, je weiter die Statuswerte des Anwenders erhöht sind."
},
"burnUp": {
- name: "Burn Up",
- effect: "To inflict massive damage, the user burns itself out. After using this move, the user will no longer be Fire type."
+ name: "Ausbrennen",
+ effect: "Der Anwender nutzt das gesamte Feuer in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Feuer an."
},
"speedSwap": {
- name: "Speed Swap",
- effect: "The user exchanges Speed stats with the target."
+ name: "Initiativetausch",
+ effect: "Der Anwender tauscht seinen Initiative-Wert mit dem des Zieles."
},
"smartStrike": {
- name: "Smart Strike",
- effect: "The user stabs the target with a sharp horn. This attack never misses."
+ name: "Schmalhorn",
+ effect: "Der Anwender durchbohrt das Ziel mit seinem spitzen Horn. Diese Attacke trifft immer."
},
"purify": {
- name: "Purify",
- effect: "The user heals the target's status condition. If the move succeeds, it also restores the user's own HP."
+ name: "Läuterung",
+ effect: "Der Anwender heilt das Statusproblem des Zieles und füllt dadurch seine eigenen KP auf."
},
"revelationDance": {
- name: "Revelation Dance",
- effect: "The user attacks the target by dancing very hard. The user's type determines the type of this move."
+ name: "Wecktanz",
+ effect: "Der Anwender tanzt und greift dabei das Ziel mit voller Kraft an. Die Attacke hat denselben Typ wie das Pokémon, das sie einsetzt."
},
"coreEnforcer": {
- name: "Core Enforcer",
- effect: "If the Pokémon the user has inflicted damage on have already used their moves, this move eliminates the effect of the target's Ability."
+ name: "Sanktionskern",
+ effect: "Hat das Pokémon, das durch diese Attacke Schaden genommen hat, in dieser Runde bereits gehandelt, verliert es seine Fähigkeit."
},
"tropKick": {
- name: "Trop Kick",
- effect: "The user lands an intense kick of tropical origins on the target. This also lowers the target's Attack stat."
+ name: "Tropenkick",
+ effect: "Der Anwender greift den Gegner mit einem heftigen Tritt tropischer Herkunft an. Dabei sinkt auch der Angriffs-Wert des Gegners."
},
"instruct": {
- name: "Instruct",
- effect: "The user instructs the target to use the target's last move again."
+ name: "Kommando",
+ effect: "Der Anwender befiehlt dem Ziel, dessen zuletzt ausgeführte Attacke sofort wieder einzusetzen."
},
"beakBlast": {
- name: "Beak Blast",
- effect: "The user first heats up its beak, and then it attacks the target. Making direct contact with the Pokémon while it's heating up its beak results in a burn."
+ name: "Schnabelkanone",
+ effect: "Der Anwender erhitzt zuerst seinen Schnabel und greift dann an. Pokémon, die ihn während des Erhitzens berühren, erleiden Verbrennungen."
},
"clangingScales": {
- name: "Clanging Scales",
- effect: "The user rubs the scales on its entire body and makes a huge noise to attack opposing Pokémon. The user's Defense stat goes down after the attack."
+ name: "Schuppenrasseln",
+ effect: "Der Anwender erzeugt durch das Rasseln mit seinen Schuppen ein lautes Geräusch und greift an. Anschließend sinkt seine Verteidigung."
},
"dragonHammer": {
- name: "Dragon Hammer",
- effect: "The user uses its body like a hammer to attack the target and inflict damage."
+ name: "Drachenhammer",
+ effect: "Der Anwender nutzt seinen Körper wie einen Hammer und stürzt sich auf das Ziel, wodurch dieses Schaden erleidet."
},
"brutalSwing": {
- name: "Brutal Swing",
- effect: "The user swings its body around violently to inflict damage on everything in its vicinity."
+ name: "Wirbler",
+ effect: "Der Anwender dreht schwungvoll seinen Körper und fügt den Pokémon in seiner Nähe dabei Schaden zu."
},
"auroraVeil": {
- name: "Aurora Veil",
- effect: "This move reduces damage from physical and special moves for five turns. This can be used only when it is snowing."
+ name: "Auroraschleier",
+ effect: "Diese Attacke schwächt fünf Runden lang den durch physische sowie durch Spezial-Attacken erhaltenen Schaden. Kann nur bei Hagel eingesetzt werden."
},
"sinisterArrowRaid": {
- name: "Sinister Arrow Raid",
- effect: "The user, Decidueye, creates countless arrows using its Z-Power and shoots the target with full force."
+ name: "Schatten-Pfeilregen",
+ effect: "Silvarro stellt mit Z-Kraft unzählige Pfeile her und lässt diese auf das Ziel niederprasseln."
},
"maliciousMoonsault": {
- name: "Malicious Moonsault",
- effect: "The user, Incineroar, strengthens its body using its Z-Power and crashes into the target with full force."
+ name: "Hyper Dark Crusher",
+ effect: "Mit seinem durch Z-Kraft gestählten Körper stürzt sich Fuegro mit ganzer Kraft auf das Ziel."
},
"oceanicOperetta": {
- name: "Oceanic Operetta",
- effect: "The user, Primarina, summons a massive amount of water using its Z-Power and attacks the target with full force."
+ name: "Grandiose Meeressymphonie",
+ effect: "Primarene ruft mit Z-Kraft große Mengen an Wasser herbei und greift damit das Ziel an."
},
"guardianOfAlola": {
- name: "Guardian of Alola",
- effect: "The user, the Land Spirit Pokémon, obtains Alola's energy using its Z-Power and attacks the target with full force. This reduces the target's HP greatly."
+ name: "Alolas Wächter",
+ effect: "Ein gewaltiger Angriff des Schutzpatrons, der durch Z-Kraft die Kraft Alolas erlangt hat. Reduziert die verbleibenden KP des Zieles stark."
},
"soulStealing7StarStrike": {
- name: "Soul-Stealing 7-Star Strike",
- effect: "After obtaining Z-Power, the user, Marshadow, punches and kicks the target consecutively with full force."
+ name: "Sternbild des Seelenraubes",
+ effect: "Marshadow schlägt mit durch Z-Kraft gestärkten Schlägen und Tritten in einer Serien-Attacke auf das Ziel ein."
},
"stokedSparksurfer": {
- name: "Stoked Sparksurfer",
- effect: "After obtaining Z-Power, the user, Alolan Raichu, attacks the target with full force. This move leaves the target with paralysis."
+ name: "Blitz-Wellenritt",
+ effect: "Das Alola-Raichu greift das Ziel mithilfe von Z-Kraft mit voller Wucht an und paralysiert es."
},
"pulverizingPancake": {
- name: "Pulverizing Pancake",
- effect: "Z-Power brings out the true capabilities of the user, Snorlax. The Pokémon moves its enormous body energetically and attacks the target with full force."
+ name: "Schluss mit lustig",
+ effect: "Relaxo wird von Z-Kraft erfüllt und macht Ernst. Es bringt seinen riesigen Körper in Schwung und stürzt sich mit ganzer Kraft auf das Ziel."
},
"extremeEvoboost": {
- name: "Extreme Evoboost",
- effect: "After obtaining Z-Power, the user, Eevee, gets energy from its evolved friends and boosts its stats sharply."
+ name: "Macht der Neun",
+ effect: "Evoli macht sich durch Z-Kraft die Stärke seiner Weiterentwicklungen zunutze und erhöht seine Statuswerte stark."
},
"genesisSupernova": {
- name: "Genesis Supernova",
- effect: "After obtaining Z-Power, the user, Mew, attacks the target with full force. The terrain will be charged with psychic energy."
+ name: "Supernova des Ursprungs",
+ effect: "Mew greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Der Untergrund wird dabei in ein Psychofeld verwandelt."
},
"shellTrap": {
- name: "Shell Trap",
- effect: "The user sets a shell trap. If the user is hit by a physical move, the trap will explode and inflict damage on opposing Pokémon."
+ name: "Panzerfalle",
+ effect: "Der Anwender legt eine Panzerfalle. Wird er von einer physischen Attacke getroffen, explodiert die Falle und fügt dem Angreifer Schaden zu."
},
"fleurCannon": {
- name: "Fleur Cannon",
- effect: "The user unleashes a strong beam. The attack's recoil harshly lowers the user's Sp. Atk stat."
+ name: "Kanonenbouquet",
+ effect: "Der Anwender greift das Ziel mit einem gewaltigen Strahl an. Sein eigener Spezial-Angriff sinkt dadurch stark."
},
"psychicFangs": {
- name: "Psychic Fangs",
- effect: "The user bites the target with its psychic capabilities. This can also destroy Light Screen and Reflect."
+ name: "Psychobeißer",
+ effect: "Der Anwender beißt das Ziel mithilfe von Psycho-Kräften. Die Attacke durchbricht auch Barrieren wie Lichtschild und Reflektor."
},
"stompingTantrum": {
- name: "Stomping Tantrum",
- effect: "Driven by frustration, the user attacks the target. If the user's previous move has failed, the power of this move doubles."
+ name: "Fruststampfer",
+ effect: "Von Frust getrieben greift der Anwender an. Wenn seine vorige Attacke fehlgeschlagen ist, verdoppelt sich die Stärke der Attacke."
},
"shadowBone": {
- name: "Shadow Bone",
- effect: "The user attacks by beating the target with a bone that contains a spirit. This may also lower the target's Defense stat."
+ name: "Schattenknochen",
+ effect: "Der Anwender greift das Ziel mit einem Knochen an, in dem eine Seele haust. Senkt eventuell die Verteidigung des Zieles."
},
"accelerock": {
- name: "Accelerock",
- effect: "The user smashes into the target at high speed. This move always goes first."
+ name: "Turbofelsen",
+ effect: "Der Anwender prallt mit großer Geschwindigkeit auf das Ziel. Hohe Erstschlagquote."
},
"liquidation": {
- name: "Liquidation",
- effect: "The user slams into the target using a full-force blast of water. This may also lower the target's Defense stat."
+ name: "Aquadurchstoß",
+ effect: "Der Anwender greift das Ziel mit der Kraft des Wassers an. Senkt eventuell die Verteidigung des Zieles."
},
"prismaticLaser": {
- name: "Prismatic Laser",
- effect: "The user shoots powerful lasers using the power of a prism. The user can't move on the next turn."
+ name: "Prisma-Laser",
+ effect: "Der Anwender feuert mithilfe von Prisma-Kraft mächtige Lichtstrahlen ab. In der nächsten Runde kann er nicht handeln."
},
"spectralThief": {
- name: "Spectral Thief",
- effect: "The user hides in the target's shadow, steals the target's stat boosts, and then attacks."
+ name: "Diebesschatten",
+ effect: "Der Anwender schleicht sich in den Schatten des Zieles, stiehlt dessen erhöhte Statuswerte und fügt ihm Schaden zu."
},
"sunsteelStrike": {
- name: "Sunsteel Strike",
- effect: "The user slams into the target with the force of a meteor. This move can be used on the target regardless of its Abilities."
+ name: "Stahlgestirn",
+ effect: "Der Anwender stürzt mit der Gewalt eines Meteors auf das Ziel. Die Fähigkeit des Zieles wird dabei ignoriert."
},
"moongeistBeam": {
- name: "Moongeist Beam",
- effect: "The user emits a sinister ray to attack the target. This move can be used on the target regardless of its Abilities."
+ name: "Schattenstrahl",
+ effect: "Der Anwender greift mit einem unheimlichen Lichtstrahl an. Diese Attacke ignoriert die Fähigkeit des Zieles."
},
"tearfulLook": {
- name: "Tearful Look",
- effect: "The user gets teary eyed to make the target lose its combative spirit. This lowers the target's Attack and Sp. Atk stats."
+ name: "Tränendrüse",
+ effect: "Dem Anwender stehen Tränen in den Augen, wodurch das Ziel seinen Kampfeswillen verliert. Angriff und Spezial-Angriff des Zieles sinken."
},
"zingZap": {
- name: "Zing Zap",
- effect: "A strong electric blast crashes down on the target, giving it an electric shock. This may also make the target flinch."
+ name: "Elektropikser",
+ effect: "Der Anwender rammt das Ziel und schockt es mit starkem Strom. Das Ziel schreckt eventuell zurück."
},
"naturesMadness": {
- name: "Nature's Madness",
- effect: "The user hits the target with the force of nature. It halves the target's HP."
+ name: "Naturzorn",
+ effect: "Das Ziel wird vom Zorn der Natur getroffen und verliert dadurch die Hälfte seiner KP."
},
"multiAttack": {
- name: "Multi-Attack",
- effect: "Cloaking itself in high energy, the user slams into the target. The memory held determines the move's type."
+ name: "Multi-Angriff",
+ effect: "Der Anwender sammelt eine große Menge Energie und greift das Ziel damit an. Der Typ der Attacke hängt von dem der Disc ab."
},
"tenMillionVoltThunderbolt": {
name: "10,000,000 Volt Thunderbolt",
effect: "The user, Pikachu wearing a cap, powers up a jolt of electricity using its Z-Power and unleashes it. Critical hits land more easily."
},
"mindBlown": {
- name: "Mind Blown",
- effect: "The user attacks everything around it by causing its own head to explode. This also damages the user."
+ name: "Knallkopf",
+ effect: "Der Anwender greift alle Pokémon in der Umgebung an, indem er seinen Kopf explodieren lässt. Dabei verletzt er sich auch selbst."
},
"plasmaFists": {
- name: "Plasma Fists",
- effect: "The user attacks with electrically charged fists. This move changes Normal-type moves to Electric-type moves."
+ name: "Plasmafäuste",
+ effect: "Ein Angriff mit elektrisch geladenen Fäusten, der bewirkt, dass Normal-Attacken den Typ Elektro annehmen."
},
"photonGeyser": {
- name: "Photon Geyser",
- effect: "The user attacks a target with a pillar of light. This move inflicts Attack or Sp. Atk damage—whichever stat is higher for the user."
+ name: "Photonen-Geysir",
+ effect: "Ein Angriff mit einer Lichtsäule. Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt."
},
"lightThatBurnsTheSky": {
- name: "Light That Burns the Sky",
- effect: "This attack inflicts Attack or Sp. Atk damage—whichever stat is higher for the user, Necrozma. This move ignores the target's Ability."
+ name: "Licht des Erlöschens",
+ effect: "Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt. Ignoriert die Fähigkeit des Zieles."
},
"searingSunrazeSmash": {
- name: "Searing Sunraze Smash",
- effect: "After obtaining Z-Power, the user, Solgaleo, attacks the target with full force. This move can ignore the effect of the target's Ability."
+ name: "Schmetternde Sonnenwalze",
+ effect: "Solgaleo greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles."
},
"menacingMoonrazeMaelstrom": {
- name: "Menacing Moonraze Maelstrom",
- effect: "After obtaining Z-Power, the user, Lunala, attacks the target with full force. This move can ignore the effect of the target's Ability."
+ name: "Geballter Mondlaser",
+ effect: "Lunala greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles."
},
"letsSnuggleForever": {
- name: "Let's Snuggle Forever",
- effect: "After obtaining Z-Power, the user, Mimikyu, punches the target with full force."
+ name: "Herzliche Knuddelkloppe",
+ effect: "Mimigma greift das Ziel mithilfe von Z-Kraft mit voller Wucht und viel Liebe an."
},
"splinteredStormshards": {
- name: "Splintered Stormshards",
- effect: "After obtaining Z-Power, the user, Lycanroc, attacks the target with full force. This move negates the effect on the battlefield."
+ name: "Fataler Steinregen",
+ effect: "Wolwerock greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Herrschen besondere Feldeffekte, werden diese zusätzlich neutralisiert."
},
"clangorousSoulblaze": {
- name: "Clangorous Soulblaze",
- effect: "After obtaining Z-Power, the user, Kommo-o, attacks the opposing Pokémon with full force. This move boosts the user's stats."
+ name: "Rasselnder Seelentanz",
+ effect: "Grandiras greift Gegner mithilfe von Z-Kraft mit voller Wucht an. Zusätzlich werden seine Statuswerte erhöht."
},
"zippyZap": {
- name: "Zippy Zap",
- effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and results in a critical hit."
+ name: "Britzelturbo",
+ effect: "Ein stürmischer Blitz-Angriff mit hoher Erstschlag- und Volltrefferquote."
},
"splishySplash": {
- name: "Splishy Splash",
- effect: "The user charges a huge wave with electricity and hits the opposing Pokémon with the wave. This may also leave the opposing Pokémon with paralysis."
+ name: "Plätschersurfer",
+ effect: "Pikachu greift das Ziel mit einer großen, elektrisch aufgeladenen Welle an. Das Ziel wird eventuell paralysiert."
},
"floatyFall": {
- name: "Floaty Fall",
- effect: "The user floats in the air, and then dives at a steep angle to attack the target. This may also make the target flinch."
+ name: "Schwebesturz",
+ effect: "Pikachu schwebt nach oben und stürzt dann unvermittelt auf das Ziel herab. Das Ziel schreckt eventuell zurück."
},
"pikaPapow": {
- name: "Pika Papow",
- effect: "The more Pikachu loves its Trainer, the greater the move's power. It never misses."
+ name: "Pika-Flash",
+ effect: "Je größer Pikachus Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer."
},
"bouncyBubble": {
- name: "Bouncy Bubble",
- effect: "The user attacks by shooting water bubbles at the target. It then absorbs water and restores its HP by half the damage taken by the target."
+ name: "Blubbsauger",
+ effect: "Evoli greift mit Wasserblasen an. Evolis KP werden um die Hälfte des vom Wasser angerichteten Schadens geheilt."
},
"buzzyBuzz": {
- name: "Buzzy Buzz",
- effect: "The user shoots a jolt of electricity to attack the target. This also leaves the target with paralysis."
+ name: "Knisterladung",
+ effect: "Evoli greift das Ziel mit Elektrizität an, wodurch dieses paralysiert wird."
},
"sizzlySlide": {
- name: "Sizzly Slide",
- effect: "The user cloaks itself in fire and charges at the target. This also leaves the target with a burn."
+ name: "Flackerbrand",
+ effect: "Evoli hüllt sich in Flammen und stürzt sich beherzt auf das Ziel, welches dadurch Verbrennungen erleidet."
},
"glitzyGlow": {
- name: "Glitzy Glow",
- effect: "The user bombards the target with telekinetic force. A wondrous wall of light is put up to weaken the power of the opposing Pokémon's special moves."
+ name: "Pulsieraura",
+ effect: "Evoli greift das Ziel gnadenlos mit telekinetischer Energie an. Dabei wird eine geheimnisvolle Wand erzeugt, die Spezial-Attacken des Ziels abschwächt."
},
"baddyBad": {
- name: "Baddy Bad",
- effect: "The user acts bad and attacks the target. A wondrous wall of light is put up to weaken the power of the opposing Pokémon's physical moves."
+ name: "Quälzone",
+ effect: "Evoli zeigt sich von seiner dunklen Seite und greift an. Dabei wird eine geheimnisvolle Wand erzeugt, die physische Attacken des Ziels abschwächt."
},
"sappySeed": {
- name: "Sappy Seed",
- effect: "The user grows a gigantic stalk that scatters seeds to attack the target. The seeds drain the target's HP every turn."
+ name: "Sprießbomben",
+ effect: "Evoli lässt eine riesige Ranke wachsen, von der Samen herabfallen, die dem Ziel schaden und ihm in jeder Runde KP absaugen."
},
"freezyFrost": {
- name: "Freezy Frost",
- effect: "The user attacks with a crystal made of cold frozen haze. It eliminates every stat change among all the Pokémon engaged in battle."
+ name: "Klirrfrost",
+ effect: "Evoli greift mit einem schwarzen Kristall aus gefrorenem Nebel an. Die Statusveränderungen aller am Kampf beteiligten Pokémon werden zurückgesetzt."
},
"sparklySwirl": {
- name: "Sparkly Swirl",
- effect: "The user attacks the target by wrapping it with a whirlwind of an overpowering scent. This also heals all status conditions of the user's party."
+ name: "Glitzersturm",
+ effect: "Evoli greift an, indem es das Ziel in einen nahezu erstickend wohlriechenden Wirbelwind hüllt. Das Team des Anwenders wird von Statusproblemen geheilt."
},
"veeveeVolley": {
- name: "Veevee Volley",
- effect: "The more Eevee loves its Trainer, the greater the move's power. It never misses."
+ name: "Evo-Crash",
+ effect: "Je größer Evolis Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer."
},
"doubleIronBash": {
- name: "Double Iron Bash",
- effect: "The user rotates, centering the hex nut in its chest, and then strikes with its arms twice in a row. This may also make the target flinch."
+ name: "Panzerfäuste",
+ effect: "Der Anwender rotiert um die Schraubenmutter in seinem Brustkorb und schlägt zweimal hintereinander mit den Armen zu. Das Ziel schreckt eventuell zurück."
},
"maxGuard": {
- name: "Max Guard",
- effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession."
+ name: "Dyna-Wall",
+ effect: "Anwender wehrt jede Attacke ab. Scheitert eventuell bei Wiederholung."
},
"dynamaxCannon": {
- name: "Dynamax Cannon",
- effect: "The user unleashes a strong beam from its core. This move deals twice the damage if the target is over level 200."
+ name: "Dynamax-Kanone",
+ effect: "Der Anwender schießt einen Strahl aus seinem Kern ab. Dynamaximierte Ziele erleiden doppelten Schaden."
},
"snipeShot": {
- name: "Snipe Shot",
- effect: "The user ignores the effects of opposing Pokémon's moves and Abilities that draw in moves, allowing this move to hit the chosen target."
+ name: "Präzisionsschuss",
+ effect: "Die Attacke richtet sich gegen das ausgewählte Ziel, unabhängig von Fähigkeiten oder Attacken, die Angriffe auf sich ziehen."
},
"jawLock": {
- name: "Jaw Lock",
- effect: "This move prevents the user and the target from switching out until either of them faints. The effect goes away if either of the Pokémon leaves the field."
+ name: "Fesselbiss",
+ effect: "Anwender und Ziel können nicht ausgetauscht werden, bis einer von ihnen kampfunfähig wird. Der Effekt endet, wenn eines der Pokémon das Kampffeld verlässt."
},
"stuffCheeks": {
- name: "Stuff Cheeks",
- effect: "The user eats its held Berry, then sharply raises its Defense stat."
+ name: "Backenstopfer",
+ effect: "Der Anwender frisst die Beere, die er trägt, wodurch seine Verteidigung stark erhöht wird."
},
"noRetreat": {
- name: "No Retreat",
- effect: "This move raises all the user's stats but prevents the user from switching out or fleeing."
+ name: "Finalformation",
+ effect: "Alle Statuswerte des Anwenders werden erhöht, aber dafür kann er weder ausgewechselt werden noch fliehen."
},
"tarShot": {
- name: "Tar Shot",
- effect: "The user pours sticky tar over the target, lowering the target's Speed stat. The target becomes weaker to Fire-type moves."
+ name: "Teerschuss",
+ effect: "Der Anwender übergießt das Ziel mit klebrigem Teer und senkt so dessen Initiative. Dadurch wird es schwach gegenüber Feuer-Attacken."
},
"magicPowder": {
- name: "Magic Powder",
- effect: "The user scatters a cloud of magic powder that changes the target to Psychic type."
+ name: "Magiepuder",
+ effect: "Das Ziel wird mit magischem Puder bestreut und nimmt den Typ Psycho an."
},
"dragonDarts": {
- name: "Dragon Darts",
- effect: "The user attacks twice using Dreepy. If there are two targets, this move hits each target once."
+ name: "Drachenpfeile",
+ effect: "Der Anwender greift zweimal mit Grolldra an. Bei zwei Zielen werden beide jeweils einmal angegriffen."
},
"teatime": {
name: "Teatime",
- effect: "The user has teatime with all the Pokémon in the battle. Each Pokémon eats its held Berry."
+ effect: "Der Anwender lädt alle am Kampf beteiligten Pokémon zu einem Teekränzchen ein, woraufhin diese die Beeren essen, die sie bei sich tragen."
},
"octolock": {
- name: "Octolock",
- effect: "The user locks the target in and prevents it from fleeing. This move also lowers the target's Defense and Sp. Def every turn."
+ name: "Octoklammer",
+ effect: "Das Ziel wird an der Flucht gehindert und seine Verteidigung und Spezial-Verteidigung sinken jede Runde."
},
"boltBeak": {
- name: "Bolt Beak",
- effect: "The user stabs the target with its electrified beak. If the user attacks before the target, the power of this move is doubled."
+ name: "Schockschnabel",
+ effect: "Der Anwender sticht mit einem elektrisch aufgeladenen Schnabel zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke."
},
"fishiousRend": {
- name: "Fishious Rend",
- effect: "The user rends the target with its hard gills. If the user attacks before the target, the power of this move is doubled."
+ name: "Kiemenbiss",
+ effect: "Der Anwender beißt mit seinen harten Kiemen zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke."
},
"courtChange": {
- name: "Court Change",
- effect: "With its mysterious power, the user swaps the effects on either side of the field."
+ name: "Seitenwechsel",
+ effect: "Durch eine mysteriöse Macht werden wirksame Effekte auf Mitstreiterseite und gegnerischer Seite getauscht."
},
"maxFlare": {
- name: "Max Flare",
- effect: "This is a Fire-type attack Dynamax Pokémon use. The user intensifies the sun for five turns."
+ name: "Dyna-Brand",
+ effect: "Eine Feuer-Attacke, die nur Dynamax-Pokémon einsetzen können. Die Sonne brennt unbarmherzig fünf Runden lang."
},
"maxFlutterby": {
- name: "Max Flutterby",
- effect: "This is a Bug-type attack Dynamax Pokémon use. This lowers the target's Sp. Atk stat."
+ name: "Dyna-Schwarm",
+ effect: "Eine Käfer-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Spezial-Angriff des Zieles."
},
"maxLightning": {
- name: "Max Lightning",
- effect: "This is an Electric-type attack Dynamax Pokémon use. The user turns the ground into Electric Terrain for five turns."
+ name: "Dyna-Gewitter",
+ effect: "Eine Elektro-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Elektrofeld."
},
"maxStrike": {
- name: "Max Strike",
- effect: "This is a Normal-type attack Dynamax Pokémon use. This lowers the target's Speed stat."
+ name: "Dyna-Angriff",
+ effect: "Eine Normal-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Initiative des Zieles."
},
"maxKnuckle": {
- name: "Max Knuckle",
- effect: "This is a Fighting-type attack Dynamax Pokémon use. This raises ally Pokémon's Attack stats."
+ name: "Dyna-Faust",
+ effect: "Eine Kampf-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Angriff der Mitstreiterseite."
},
"maxPhantasm": {
- name: "Max Phantasm",
- effect: "This is a Ghost-type attack Dynamax Pokémon use. This lowers the target's Defense stat."
+ name: "Dyna-Spuk",
+ effect: "Eine Geister-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Verteidigung des Zieles."
},
"maxHailstorm": {
- name: "Max Hailstorm",
- effect: "This is an Ice-type attack Dynamax Pokémon use. The user summons a hailstorm lasting five turns."
+ name: "Dyna-Frost",
+ effect: "Eine Eis-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Hagelsturm toben."
},
"maxOoze": {
- name: "Max Ooze",
- effect: "This is a Poison-type attack Dynamax Pokémon use. This raises ally Pokémon's Sp. Atk stats."
+ name: "Dyna-Giftschwall",
+ effect: "Eine Gift-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Spezial-Angriff der Mitstreiterseite."
},
"maxGeyser": {
- name: "Max Geyser",
- effect: "This is a Water-type attack Dynamax Pokémon use. The user summons a heavy rain that falls for five turns."
+ name: "Dyna-Flut",
+ effect: "Eine Wasser-Attacke, die nur Dynamax-Pokémon einsetzen können. Löst fünf Runden lang strömenden Regen aus."
},
"maxAirstream": {
- name: "Max Airstream",
- effect: "This is a Flying-type attack Dynamax Pokémon use. This raises ally Pokémon's Speed stats."
+ name: "Dyna-Düse",
+ effect: "Eine Flug-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Initiative der Mitstreiterseite."
},
"maxStarfall": {
- name: "Max Starfall",
- effect: "This is a Fairy-type attack Dynamax Pokémon use. The user turns the ground into Misty Terrain for five turns."
+ name: "Dyna-Zauber",
+ effect: "Eine Feen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Nebelfeld."
},
"maxWyrmwind": {
- name: "Max Wyrmwind",
- effect: "This is a Dragon-type attack Dynamax Pokémon use. This lowers the target's Attack stat."
+ name: "Dyna-Wyrm",
+ effect: "Eine Drachen-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Angriff des Zieles."
},
"maxMindstorm": {
- name: "Max Mindstorm",
- effect: "This is a Psychic-type attack Dynamax Pokémon use. The user turns the ground into Psychic Terrain for five turns."
+ name: "Dyna-Kinese",
+ effect: "Eine Psycho-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Psychofeld."
},
"maxRockfall": {
- name: "Max Rockfall",
- effect: "This is a Rock-type attack Dynamax Pokémon use. The user summons a sandstorm lasting five turns."
+ name: "Dyna-Brocken",
+ effect: "Eine Gesteins-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Sandsturm toben."
},
"maxQuake": {
- name: "Max Quake",
- effect: "This is a Ground-type attack Dynamax Pokémon use. This raises ally Pokémon's Sp. Def stats."
+ name: "Dyna-Erdstoß",
+ effect: "Eine Boden-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Spezial-Verteidigung der Mitstreiterseite."
},
"maxDarkness": {
- name: "Max Darkness",
- effect: "This is a Dark-type attack Dynamax Pokémon use. This lowers the target's Sp. Def stat."
+ name: "Dyna-Dunkel",
+ effect: "Eine Unlicht-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Spezial-Verteidigung des Zieles."
},
"maxOvergrowth": {
- name: "Max Overgrowth",
- effect: "This is a Grass-type attack Dynamax Pokémon use. The user turns the ground into Grassy Terrain for five turns."
+ name: "Dyna-Flora",
+ effect: "Eine Pflanzen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Grasfeld."
},
"maxSteelspike": {
- name: "Max Steelspike",
- effect: "This is a Steel-type attack Dynamax Pokémon use. This raises ally Pokémon's Defense stats."
+ name: "Dyna-Stahlzacken",
+ effect: "Eine Stahl-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Verteidigung der Mitstreiterseite."
},
"clangorousSoul": {
- name: "Clangorous Soul",
- effect: "The user raises all its stats by using some of its HP."
+ name: "Seelentanz",
+ effect: "Der Anwender setzt eine kleine Menge an KP ein, um alle seine Statuswerte zu erhöhen."
},
"bodyPress": {
name: "Body Press",
- effect: "The user attacks by slamming its body into the target. The higher the user's Defense, the more damage it can inflict on the target."
+ effect: "Der Anwender greift mit seinem ganzen Körper an. Je höher seine Verteidigung ist, desto mehr Schaden richtet er an."
},
"decorate": {
- name: "Decorate",
- effect: "The user sharply raises the target's Attack and Sp. Atk stats by decorating the target."
+ name: "Verzierung",
+ effect: "Durch Verzierungen werden der Angriff und Spezial-Angriff des Zieles stark erhöht."
},
"drumBeating": {
- name: "Drum Beating",
- effect: "The user plays its drum, controlling the drum's roots to attack the target. This also lowers the target's Speed stat."
+ name: "Trommelschläge",
+ effect: "Der Anwender kontrolliert durch Trommeln Wurzeln, die das Ziel angreifen und dessen Initiative senken."
},
"snapTrap": {
- name: "Snap Trap",
- effect: "The user snares the target in a snap trap for four to five turns."
+ name: "Fangeisen",
+ effect: "Das Ziel wird vier bis fünf Runden lang in einem Fangeisen festgehalten und angegriffen."
},
"pyroBall": {
- name: "Pyro Ball",
- effect: "The user attacks by igniting a small stone and launching it as a fiery ball at the target. This may also leave the target with a burn."
+ name: "Feuerball",
+ effect: "Der Anwender greift mit einem Ball aus Feuer an, den er durch Anzünden eines kleinen Steins erzeugt. Fügt dem Ziel eventuell Verbrennungen zu."
},
"behemothBlade": {
- name: "Behemoth Blade",
- effect: "The user wields a large, powerful sword using its whole body and cuts the target in a vigorous attack."
+ name: "Gigantenhieb",
+ effect: "Der Anwender wird zu einem riesigen Schwert und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden."
},
"behemothBash": {
- name: "Behemoth Bash",
- effect: "The user's body becomes a firm shield and slams into the target fiercely."
+ name: "Gigantenstoß",
+ effect: "Der Anwender wird zu einem riesigen Schild und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden."
},
"auraWheel": {
- name: "Aura Wheel",
- effect: "Morpeko attacks and raises its Speed with the energy stored in its cheeks. This move's type changes depending on the user's form."
+ name: "Aura-Rad",
+ effect: "Mithilfe der in den Backentaschen gespeicherten Energie greift der Anwender an und erhöht seine Initiative. Der Typ der Attacke hängt von Morpekos Form ab."
},
"breakingSwipe": {
- name: "Breaking Swipe",
- effect: "The user swings its tough tail wildly and attacks opposing Pokémon. This also lowers their Attack stats."
+ name: "Breitseite",
+ effect: "Der Anwender schwingt heftig seinen robusten Schweif, um damit gegnerische Pokémon anzugreifen und ihren Angriffs-Wert zu senken."
},
"branchPoke": {
- name: "Branch Poke",
- effect: "The user attacks the target by poking it with a sharply pointed branch."
+ name: "Zweigstoß",
+ effect: "Der Anwender attackiert das Ziel mit einem spitzen Zweig."
},
"overdrive": {
name: "Overdrive",
- effect: "The user attacks opposing Pokémon by twanging a guitar or bass guitar, causing a huge echo and strong vibration."
+ effect: "Der Anwender haut in die Saiten seiner Gitarre oder seines Basses und erzeugt dröhnende, kraftvolle Vibrationen, die gegnerischen Pokémon schaden."
},
"appleAcid": {
- name: "Apple Acid",
- effect: "The user attacks the target with an acidic liquid created from tart apples. This also lowers the target's Sp. Def stat."
+ name: "Apfelsäure",
+ effect: "Der Anwender greift mit einer aus einem sauren Apfel hergestellten säurehaltigen Flüssigkeit an. Dabei wird die Spezial-Verteidigung des Zieles gesenkt."
},
"gravApple": {
- name: "Grav Apple",
- effect: "The user inflicts damage by dropping an apple from high above. This also lowers the target's Defense stat."
+ name: "Gravitation",
+ effect: "Ein Apfel fällt aus großer Höhe herab und richtet Schaden an. Dabei wird die Verteidigung des Zieles gesenkt."
},
"spiritBreak": {
- name: "Spirit Break",
- effect: "The user attacks the target with so much force that it could break the target's spirit. This also lowers the target's Sp. Atk stat."
+ name: "Seelenbruch",
+ effect: "Die Attacke trifft das Ziel mit so viel Wucht, dass es den Mut verliert. Dabei wird sein Spezial-Angriff gesenkt."
},
"strangeSteam": {
- name: "Strange Steam",
- effect: "The user attacks the target by emitting steam. This may also confuse the target."
+ name: "Wunderdampf",
+ effect: "Der Anwender stößt Dampf aus, mit dem er das Ziel angreift. Dieses wird eventuell verwirrt."
},
"lifeDew": {
- name: "Life Dew",
- effect: "The user scatters mysterious water around and restores the HP of itself and its ally Pokémon in the battle."
+ name: "Lebenstropfen",
+ effect: "Wundersames Wasser heilt die KP des Anwenders und seiner am Kampf beteiligten Mitstreiter."
},
"obstruct": {
- name: "Obstruct",
- effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession. Direct contact harshly lowers the attacker's Defense stat."
+ name: "Abblocker",
+ effect: "Der Anwender wehrt jede Attacke ab. Berührt ihn währenddessen ein Pokémon, sinkt dessen Verteidigung stark. Scheitert eventuell bei Wiederholung."
},
"falseSurrender": {
- name: "False Surrender",
- effect: "The user pretends to bow its head, but then it stabs the target with its disheveled hair. This attack never misses."
+ name: "Kniefalltrick",
+ effect: "Der Anwender tut so, als würde er sich verneigen, und sticht dann mit seinem zerzausten Fell zu. Diese Attacke trifft immer."
},
"meteorAssault": {
- name: "Meteor Assault",
- effect: "The user attacks wildly with its thick leek. The user can't move on the next turn, because the force of this move makes it stagger."
+ name: "Sternensturm",
+ effect: "Der Anwender greift mit seiner Lauchstange an. Von der Wucht der Attacke wird ihm jedoch so schwindelig, dass er in der nächsten Runde nicht handeln kann."
},
"eternabeam": {
- name: "Eternabeam",
- effect: "This is Eternatus's most powerful attack in its original form. The user can't move on the next turn."
+ name: "Unendynastrahlen",
+ effect: "Der mächtigste Angriff, über den Endynalos in seiner ursprünglichen Form verfügt. In der nächsten Runde kann der Anwender nicht handeln."
},
"steelBeam": {
- name: "Steel Beam",
- effect: "The user fires a beam of steel that it collected from its entire body. This also damages the user."
+ name: "Stahlstrahl",
+ effect: "Der Anwender schießt Stahl, den er in seinem ganzen Körper angesammelt hat, in Form eines mächtigen Strahls ab. Dabei verletzt er sich auch selbst."
},
"expandingForce": {
- name: "Expanding Force",
- effect: "The user attacks the target with its psychic power. This move's power goes up and damages all opposing Pokémon on Psychic Terrain."
+ name: "Flächenmacht",
+ effect: "Der Anwender greift das Ziel mit Psycho-Kräften an. Wenn ein Psychofeld aktiv ist, steigt die Stärke und es wird allen gegnerischen Pokémon Schaden zugefügt."
},
"steelRoller": {
- name: "Steel Roller",
- effect: "The user attacks while destroying the terrain. This move fails when the ground hasn't turned into a terrain."
+ name: "Eisenwalze",
+ effect: "Der Anwender greift an und zerstört dabei etwaige Felder. Ist kein Feld aktiv, schlägt die Attacke fehl."
},
"scaleShot": {
- name: "Scale Shot",
- effect: "The user attacks by shooting scales two to five times in a row. This move boosts the user's Speed stat but lowers its Defense stat."
+ name: "Schuppenschuss",
+ effect: "Der Anwender greift das Ziel zwei- bis fünfmal hintereinander mit Schuppen-Geschossen an. Erhöht die eigene Initiative, aber senkt die Verteidigung."
},
"meteorBeam": {
- name: "Meteor Beam",
- effect: "In this two-turn attack, the user gathers space power and boosts its Sp. Atk stat, then attacks the target on the next turn."
+ name: "Meteorstrahl",
+ effect: "Der Anwender sammelt in Runde 1 kosmische Kräfte und erhöht damit seinen Spezial-Angriff, bevor er in Runde 2 das Ziel angreift."
},
"shellSideArm": {
- name: "Shell Side Arm",
- effect: "This move inflicts physical or special damage, whichever will be more effective. This may also poison the target."
+ name: "Muschelwaffe",
+ effect: "Je nachdem, was höher ausfällt, richtet diese Attacke entweder physischen oder Spezial-Schaden an. Das Ziel wird eventuell vergiftet."
},
"mistyExplosion": {
- name: "Misty Explosion",
- effect: "The user attacks everything around it and faints upon using this move. This move's power is increased on Misty Terrain."
+ name: "Nebelexplosion",
+ effect: "Der Anwender greift alle Pokémon im Umkreis an und wird danach kampfunfähig. Die Stärke dieser Attacke steigt, wenn ein Nebelfeld aktiv ist."
},
"grassyGlide": {
- name: "Grassy Glide",
- effect: "Gliding on the ground, the user attacks the target. This move always goes first on Grassy Terrain."
+ name: "Grasrutsche",
+ effect: "Der Anwender rutscht über den Boden und greift das Ziel an. Ermöglicht den Erstschlag, wenn ein Grasfeld aktiv ist."
},
"risingVoltage": {
- name: "Rising Voltage",
- effect: "The user attacks with electric voltage rising from the ground. This move's power doubles when the target is on Electric Terrain."
+ name: "Hochspannung",
+ effect: "Der Anwender greift mit aus dem Boden aufsteigender Elektrizität an. Die Stärke der Attacke wird verdoppelt, wenn beim Gegner ein Elektrofeld aktiv ist."
},
"terrainPulse": {
- name: "Terrain Pulse",
- effect: "The user utilizes the power of the terrain to attack. This move's type and power changes depending on the terrain when it's used."
+ name: "Feldimpuls",
+ effect: "Der Anwender nutzt die Kraft des aktiven Feldes für seinen Angriff. Der Typ und die Stärke der Attacke ändern sich je nach Art des aktiven Feldes."
},
"skitterSmack": {
- name: "Skitter Smack",
- effect: "The user skitters behind the target to attack. This also lowers the target's Sp. Atk stat."
+ name: "Krabbelkracher",
+ effect: "Der Anwender kriecht hinter das Ziel, greift es an und senkt dabei dessen Spezial-Angriff."
},
"burningJealousy": {
- name: "Burning Jealousy",
- effect: "The user attacks with energy from jealousy. This leaves all opposing Pokémon that have had their stats boosted during the turn with a burn."
+ name: "Neidflammen",
+ effect: "Der Anwender greift mit der Energie seines Neids an und fügt allen gegnerischen Pokémon, deren Statuswerte in dieser Runde erhöht wurden, Verbrennungen zu."
},
"lashOut": {
- name: "Lash Out",
- effect: "The user lashes out to vent its frustration toward the target. If the user's stats were lowered during this turn, the power of this move is doubled."
+ name: "Frustventil",
+ effect: "Der Anwender entlädt seinen Frust in einem Angriff. Die Stärke der Attacke wird verdoppelt, wenn seine Statuswerte in dieser Runde gesenkt wurden."
},
"poltergeist": {
name: "Poltergeist",
- effect: "The user attacks the target by controlling the target's item. The move fails if the target doesn't have an item."
+ effect: "Der Anwender greift das Ziel mit dessen getragenem Item an. Die Attacke schlägt fehl, wenn das Ziel kein Item trägt."
},
"corrosiveGas": {
- name: "Corrosive Gas",
- effect: "The user surrounds everything around it with highly acidic gas and melts away items they hold."
+ name: "Korrosionsgas",
+ effect: "Der Anwender greift alle Pokémon im Umkreis mit einem ätzenden Gas an. Getragene Items werden dadurch zersetzt."
},
"coaching": {
name: "Coaching",
- effect: "The user properly coaches its ally Pokémon, boosting their Attack and Defense stats."
+ effect: "Der Anwender sorgt durch geschickte Anweisungen dafür, dass der Angriff und die Verteidigung seiner Mitstreiter steigen."
},
"flipTurn": {
- name: "Flip Turn",
- effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting."
+ name: "Rollwende",
+ effect: "Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon."
},
"tripleAxel": {
- name: "Triple Axel",
- effect: "A consecutive three-kick attack that becomes more powerful with each successful hit."
+ name: "Dreifach-Axel",
+ effect: "Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu."
},
"dualWingbeat": {
- name: "Dual Wingbeat",
- effect: "The user slams the target with its wings. The target is hit twice in a row."
+ name: "Doppelflügel",
+ effect: "Der Anwender trifft das Ziel zweimal hintereinander mit seinen Flügeln und fügt ihm so Schaden zu."
},
"scorchingSands": {
- name: "Scorching Sands",
- effect: "The user throws scorching sand at the target to attack. This may also leave the target with a burn."
+ name: "Brandsand",
+ effect: "Der Anwender greift das Ziel mit brennend heißem Sand an und fügt ihm eventuell Verbrennungen zu."
},
"jungleHealing": {
- name: "Jungle Healing",
- effect: "The user becomes one with the jungle, restoring HP and healing any status conditions of itself and its ally Pokémon in battle."
+ name: "Dschungelheilung",
+ effect: "Der Anwender wird eins mit dem Dschungel und heilt bei sich und seinen am Kampf beteiligten Mitstreitern KP und hebt jegliche Statusprobleme auf."
},
"wickedBlow": {
- name: "Wicked Blow",
- effect: "The user, having mastered the Dark style, strikes the target with a fierce blow. This attack always results in a critical hit."
+ name: "Finstertreffer",
+ effect: "Der Anwender hat den Stil des Unlichts gemeistert und führt einen fokussierten, harten Schlag mit Volltreffergarantie aus."
},
"surgingStrikes": {
- name: "Surging Strikes",
- effect: "The user, having mastered the Water style, strikes the target with a flowing motion three times in a row. This attack always results in a critical hit."
+ name: "Trefferschwall",
+ effect: "Der Anwender hat den Stil des Wassers gemeistert und führt mit fließenden Bewegungen drei Angriffe in Folge mit Volltreffergarantie aus."
},
"thunderCage": {
- name: "Thunder Cage",
- effect: "The user traps the target in a cage of sparking electricity for four to five turns."
+ name: "Blitzgefängnis",
+ effect: "Das Ziel wird für vier bis fünf Runden in einem elektrischen Käfig gefangen."
},
"dragonEnergy": {
- name: "Dragon Energy",
- effect: "Converting its life-force into power, the user attacks opposing Pokémon. The lower the user's HP, the lower the move's power."
+ name: "Drachenkräfte",
+ effect: "Der Anwender wandelt seine Lebenskraft in Energie um und greift gegnerische Pokémon an. Je höher seine KP sind, desto mehr Schaden wird angerichtet."
},
"freezingGlare": {
- name: "Freezing Glare",
- effect: "The user shoots its psychic power from its eyes to attack. This may also leave the target frozen."
+ name: "Eisiger Blick",
+ effect: "Der Anwender greift das Ziel mit Psycho-Kräften an, die er aus seinen Augen abschießt. Das Ziel friert eventuell ein."
},
"fieryWrath": {
- name: "Fiery Wrath",
- effect: "The user transforms its wrath into a fire-like aura to attack. This may also make opposing Pokémon flinch."
+ name: "Brennender Zorn",
+ effect: "Der Anwender wandelt seinen Zorn in eine flammende Aura um und greift damit gegnerische Pokémon an. Diese schrecken eventuell zurück."
},
"thunderousKick": {
- name: "Thunderous Kick",
- effect: "The user overwhelms the target with lightning-like movement before delivering a kick. This also lowers the target's Defense stat."
+ name: "Donnernder Tritt",
+ effect: "Der Anwender bringt das Ziel mit blitzschnellen Bewegungen durcheinander und tritt dann zu. Senkt die Verteidigung des Zieles."
},
"glacialLance": {
- name: "Glacial Lance",
- effect: "The user attacks by hurling a blizzard-cloaked icicle lance at opposing Pokémon."
+ name: "Blizzardlanze",
+ effect: "Der Anwender wirft eine in einen Blizzard gehüllte Lanze aus Eis auf gegnerische Pokémon."
},
"astralBarrage": {
- name: "Astral Barrage",
- effect: "The user attacks by sending a frightful amount of small ghosts at opposing Pokémon."
+ name: "Astralfragmente",
+ effect: "Der Anwender greift gegnerische Pokémon mit vielen kleinen Spukgestalten an."
},
"eerieSpell": {
- name: "Eerie Spell",
- effect: "The user attacks with its tremendous psychic power. This also removes 3 PP from the target's last move."
+ name: "Schauderspruch",
+ effect: "Der Anwender greift mit gewaltigen Psycho-Kräften an. Die AP der letzten Attacke des Zieles werden um 3 Punkte gesenkt."
},
"direClaw": {
name: "Dire Claw",
diff --git a/src/locales/de/pokemon.ts b/src/locales/de/pokemon.ts
index 08fdbf01d..9efecb819 100644
--- a/src/locales/de/pokemon.ts
+++ b/src/locales/de/pokemon.ts
@@ -387,102 +387,102 @@ export const pokemon: SimpleTranslationEntries = {
"rayquaza": "Rayquaza",
"jirachi": "Jirachi",
"deoxys": "Deoxys",
- "turtwig": "Turtwig",
- "grotle": "Grotle",
- "torterra": "Torterra",
- "chimchar": "Chimchar",
- "monferno": "Monferno",
- "infernape": "Infernape",
- "piplup": "Piplup",
- "prinplup": "Prinplup",
- "empoleon": "Empoleon",
- "starly": "Starly",
+ "turtwig": "Chelast",
+ "grotle": "Chelcarain",
+ "torterra": "Chelterrar",
+ "chimchar": "Panflam",
+ "monferno": "Panpyro",
+ "infernape": "Panferno",
+ "piplup": "Plinfa",
+ "prinplup": "Pilprin",
+ "empoleon": "Impoleon",
+ "starly": "Staralili",
"staravia": "Staravia",
"staraptor": "Staraptor",
- "bidoof": "Bidoof",
- "bibarel": "Bibarel",
- "kricketot": "Kricketot",
- "kricketune": "Kricketune",
- "shinx": "Shinx",
+ "bidoof": "Bidiza",
+ "bibarel": "Bidifas",
+ "kricketot": "Zirpurze",
+ "kricketune": "Zirpeise",
+ "shinx": "Sheinux",
"luxio": "Luxio",
"luxray": "Luxray",
- "budew": "Budew",
+ "budew": "Knospi",
"roserade": "Roserade",
- "cranidos": "Cranidos",
- "rampardos": "Rampardos",
- "shieldon": "Shieldon",
- "bastiodon": "Bastiodon",
+ "cranidos": "Koknodon",
+ "rampardos": "Rameidon",
+ "shieldon": "Schilterus",
+ "bastiodon": "Bollterus",
"burmy": "Burmy",
- "wormadam": "Wormadam",
- "mothim": "Mothim",
- "combee": "Combee",
- "vespiquen": "Vespiquen",
+ "wormadam": "Burmadame",
+ "mothim": "Moterpel",
+ "combee": "Wadribie",
+ "vespiquen": "Hornwiesel",
"pachirisu": "Pachirisu",
- "buizel": "Buizel",
- "floatzel": "Floatzel",
- "cherubi": "Cherubi",
- "cherrim": "Cherrim",
- "shellos": "Shellos",
+ "buizel": "Bamelin",
+ "floatzel": "Bojelin",
+ "cherubi": "Kikugi",
+ "cherrim": "Kinoso",
+ "shellos": "Schalellos",
"gastrodon": "Gastrodon",
- "ambipom": "Ambipom",
- "drifloon": "Drifloon",
- "drifblim": "Drifblim",
- "buneary": "Buneary",
- "lopunny": "Lopunny",
- "mismagius": "Mismagius",
- "honchkrow": "Honchkrow",
- "glameow": "Glameow",
- "purugly": "Purugly",
- "chingling": "Chingling",
- "stunky": "Stunky",
+ "ambipom": "Ambidifel",
+ "drifloon": "Driftlon",
+ "drifblim": "Drifzepeli",
+ "buneary": "Haspiror",
+ "lopunny": "Schlapor",
+ "mismagius": "Traunmagil",
+ "honchkrow": "Kramshef",
+ "glameow": "Charmian",
+ "purugly": "Shnurgarst",
+ "chingling": "Klingplim",
+ "stunky": "Skunkapuh",
"skuntank": "Skuntank",
- "bronzor": "Bronzor",
+ "bronzor": "Bronzel",
"bronzong": "Bronzong",
- "bonsly": "Bonsly",
- "mime_jr": "Mime Jr.",
- "happiny": "Happiny",
- "chatot": "Chatot",
- "spiritomb": "Spiritomb",
- "gible": "Gible",
- "gabite": "Gabite",
- "garchomp": "Garchomp",
- "munchlax": "Munchlax",
+ "bonsly": "Mobai",
+ "mime_jr": "Pantimimi",
+ "happiny": "Wonneira",
+ "chatot": "Plaudagei",
+ "spiritomb": "Kryppuk",
+ "gible": "Kaumalat",
+ "gabite": "Knarksel",
+ "garchomp": "Knackrack",
+ "munchlax": "Mampfaxo",
"riolu": "Riolu",
"lucario": "Lucario",
"hippopotas": "Hippopotas",
- "hippowdon": "Hippowdon",
- "skorupi": "Skorupi",
- "drapion": "Drapion",
- "croagunk": "Croagunk",
- "toxicroak": "Toxicroak",
- "carnivine": "Carnivine",
+ "hippowdon": "Hippoterus",
+ "skorupi": "Pionskora",
+ "drapion": "Piondragi",
+ "croagunk": "Glibunkel",
+ "toxicroak": "Toxiquak",
+ "carnivine": "Venuflibis",
"finneon": "Finneon",
"lumineon": "Lumineon",
- "mantyke": "Mantyke",
- "snover": "Snover",
- "abomasnow": "Abomasnow",
- "weavile": "Weavile",
+ "mantyke": "Mantirps",
+ "snover": "Shnebedeck",
+ "abomasnow": "Rexblisar",
+ "weavile": "Snibunna",
"magnezone": "Magnezone",
- "lickilicky": "Lickilicky",
- "rhyperior": "Rhyperior",
- "tangrowth": "Tangrowth",
- "electivire": "Electivire",
- "magmortar": "Magmortar",
+ "lickilicky": "Schlurplek",
+ "rhyperior": "Rihornior",
+ "tangrowth": "Tangoloss",
+ "electivire": "Elevoltek",
+ "magmortar": "Magbrant",
"togekiss": "Togekiss",
"yanmega": "Yanmega",
- "leafeon": "Leafeon",
- "glaceon": "Glaceon",
- "gliscor": "Gliscor",
- "mamoswine": "Mamoswine",
+ "leafeon": "Folipurba",
+ "glaceon": "Glaziola",
+ "gliscor": "Skorgro",
+ "mamoswine": "Mamutel",
"porygon_z": "Porygon-Z",
- "gallade": "Gallade",
- "probopass": "Probopass",
- "dusknoir": "Dusknoir",
- "froslass": "Froslass",
+ "gallade": "Galagladi",
+ "probopass": "Voluminas",
+ "dusknoir": "Zwirrfinst",
+ "froslass": "Frosdedje",
"rotom": "Rotom",
- "uxie": "Uxie",
- "mesprit": "Mesprit",
- "azelf": "Azelf",
+ "uxie": "Selfe",
+ "mesprit": "Vesprit",
+ "azelf": "Tobutz",
"dialga": "Dialga",
"palkia": "Palkia",
"heatran": "Heatran",
@@ -495,318 +495,318 @@ export const pokemon: SimpleTranslationEntries = {
"shaymin": "Shaymin",
"arceus": "Arceus",
"victini": "Victini",
- "snivy": "Snivy",
- "servine": "Servine",
- "serperior": "Serperior",
- "tepig": "Tepig",
- "pignite": "Pignite",
- "emboar": "Emboar",
- "oshawott": "Oshawott",
- "dewott": "Dewott",
- "samurott": "Samurott",
- "patrat": "Patrat",
- "watchog": "Watchog",
- "lillipup": "Lillipup",
- "herdier": "Herdier",
- "stoutland": "Stoutland",
- "purrloin": "Purrloin",
- "liepard": "Liepard",
- "pansage": "Pansage",
- "simisage": "Simisage",
- "pansear": "Pansear",
- "simisear": "Simisear",
- "panpour": "Panpour",
- "simipour": "Simipour",
- "munna": "Munna",
- "musharna": "Musharna",
- "pidove": "Pidove",
- "tranquill": "Tranquill",
- "unfezant": "Unfezant",
- "blitzle": "Blitzle",
- "zebstrika": "Zebstrika",
- "roggenrola": "Roggenrola",
- "boldore": "Boldore",
- "gigalith": "Gigalith",
- "woobat": "Woobat",
- "swoobat": "Swoobat",
- "drilbur": "Drilbur",
- "excadrill": "Excadrill",
- "audino": "Audino",
- "timburr": "Timburr",
- "gurdurr": "Gurdurr",
- "conkeldurr": "Conkeldurr",
- "tympole": "Tympole",
- "palpitoad": "Palpitoad",
- "seismitoad": "Seismitoad",
- "throh": "Throh",
- "sawk": "Sawk",
- "sewaddle": "Sewaddle",
- "swadloon": "Swadloon",
- "leavanny": "Leavanny",
- "venipede": "Venipede",
- "whirlipede": "Whirlipede",
- "scolipede": "Scolipede",
- "cottonee": "Cottonee",
- "whimsicott": "Whimsicott",
- "petilil": "Petilil",
- "lilligant": "Lilligant",
- "basculin": "Basculin",
- "sandile": "Sandile",
- "krokorok": "Krokorok",
- "krookodile": "Krookodile",
- "darumaka": "Darumaka",
- "darmanitan": "Darmanitan",
- "maractus": "Maractus",
- "dwebble": "Dwebble",
- "crustle": "Crustle",
- "scraggy": "Scraggy",
- "scrafty": "Scrafty",
- "sigilyph": "Sigilyph",
- "yamask": "Yamask",
- "cofagrigus": "Cofagrigus",
- "tirtouga": "Tirtouga",
- "carracosta": "Carracosta",
- "archen": "Archen",
- "archeops": "Archeops",
- "trubbish": "Trubbish",
- "garbodor": "Garbodor",
+ "snivy": "Serpifeu",
+ "servine": "Efoserp",
+ "serperior": "Serpiroyal",
+ "tepig": "Floink",
+ "pignite": "Ferkokel",
+ "emboar": "Flambirex",
+ "oshawott": "Ottaro",
+ "dewott": "Zwottronin",
+ "samurott": "Admurai",
+ "patrat": "Nagelotz",
+ "watchog": "Kukmarda",
+ "lillipup": "Yorkleff",
+ "herdier": "Terribark",
+ "stoutland": "Bissbark",
+ "purrloin": "Felilou",
+ "liepard": "Kleoparda",
+ "pansage": "Vegimak",
+ "simisage": "Vegichita",
+ "pansear": "Grillmak",
+ "simisear": "Grillchita",
+ "panpour": "Sodamak",
+ "simipour": "Sodachita",
+ "munna": "Somniam",
+ "musharna": "Somnivora",
+ "pidove": "Dusslgurr",
+ "tranquill": "Navitaub",
+ "unfezant": "Fasasnob",
+ "blitzle": "Elezeba",
+ "zebstrika": "Zebritz",
+ "roggenrola": "Kiesling",
+ "boldore": "Sedimantur",
+ "gigalith": "Brockoloss",
+ "woobat": "Fleknoil",
+ "swoobat": "Fletiamo",
+ "drilbur": "Rotomurf",
+ "excadrill": "Stalobor",
+ "audino": "Ohrdoch",
+ "timburr": "Praktibalk",
+ "gurdurr": "Strepoli",
+ "conkeldurr": "Meistagriff",
+ "tympole": "Schallquap",
+ "palpitoad": "Membrana",
+ "seismitoad": "Branawarz",
+ "throh": "Juitesto",
+ "sawk": "Karadonis",
+ "sewaddle": "Strawickl",
+ "swadloon": "Folikon",
+ "leavanny": "Matrifol",
+ "venipede": "Toxiped",
+ "whirlipede": "Rollum",
+ "scolipede": "Cerapendra",
+ "cottonee": "Waumboll",
+ "whimsicott": "Elfun",
+ "petilil": "Lilminip",
+ "lilligant": "Dressella",
+ "basculin": "Barschuft",
+ "sandile": "Ganovil",
+ "krokorok": "Rokkaiman",
+ "krookodile": "Rabigator",
+ "darumaka": "Flampion",
+ "darmanitan": "Flampavian",
+ "maractus": "Maracamba",
+ "dwebble": "Lithomith",
+ "crustle": "Castellith",
+ "scraggy": "Zurrokex",
+ "scrafty": "Irokex",
+ "sigilyph": "Symvolara",
+ "yamask": "Makabaja",
+ "cofagrigus": "Echnatoll",
+ "tirtouga": "Galapaflos",
+ "carracosta": "Karippas",
+ "archen": "Flapteryx",
+ "archeops": "Aeropteryx",
+ "trubbish": "Unratütox",
+ "garbodor": "Deponitox",
"zorua": "Zorua",
"zoroark": "Zoroark",
- "minccino": "Minccino",
- "cinccino": "Cinccino",
- "gothita": "Gothita",
- "gothorita": "Gothorita",
- "gothitelle": "Gothitelle",
- "solosis": "Solosis",
- "duosion": "Duosion",
- "reuniclus": "Reuniclus",
- "ducklett": "Ducklett",
- "swanna": "Swanna",
- "vanillite": "Vanillite",
- "vanillish": "Vanillish",
- "vanilluxe": "Vanilluxe",
- "deerling": "Deerling",
- "sawsbuck": "Sawsbuck",
+ "minccino": "Picochilla",
+ "cinccino": "Chillabell",
+ "gothita": "Mollimorba",
+ "gothorita": "Hypnomorba",
+ "gothitelle": "Morbitesse",
+ "solosis": "Monozyto",
+ "duosion": "Mitodos",
+ "reuniclus": "Zytomega",
+ "ducklett": "Piccolente",
+ "swanna": "Swaroness",
+ "vanillite": "Gelatini",
+ "vanillish": "Gelatroppo",
+ "vanilluxe": "Gelatwino",
+ "deerling": "Sesokitz",
+ "sawsbuck": "Kronjuwild",
"emolga": "Emolga",
- "karrablast": "Karrablast",
- "escavalier": "Escavalier",
- "foongus": "Foongus",
- "amoonguss": "Amoonguss",
- "frillish": "Frillish",
- "jellicent": "Jellicent",
- "alomomola": "Alomomola",
- "joltik": "Joltik",
- "galvantula": "Galvantula",
- "ferroseed": "Ferroseed",
- "ferrothorn": "Ferrothorn",
- "klink": "Klink",
- "klang": "Klang",
- "klinklang": "Klinklang",
- "tynamo": "Tynamo",
- "eelektrik": "Eelektrik",
- "eelektross": "Eelektross",
- "elgyem": "Elgyem",
- "beheeyem": "Beheeyem",
- "litwick": "Litwick",
- "lampent": "Lampent",
- "chandelure": "Chandelure",
- "axew": "Axew",
- "fraxure": "Fraxure",
- "haxorus": "Haxorus",
- "cubchoo": "Cubchoo",
- "beartic": "Beartic",
- "cryogonal": "Cryogonal",
- "shelmet": "Shelmet",
- "accelgor": "Accelgor",
- "stunfisk": "Stunfisk",
- "mienfoo": "Mienfoo",
- "mienshao": "Mienshao",
- "druddigon": "Druddigon",
- "golett": "Golett",
- "golurk": "Golurk",
- "pawniard": "Pawniard",
- "bisharp": "Bisharp",
- "bouffalant": "Bouffalant",
- "rufflet": "Rufflet",
- "braviary": "Braviary",
- "vullaby": "Vullaby",
- "mandibuzz": "Mandibuzz",
- "heatmor": "Heatmor",
- "durant": "Durant",
- "deino": "Deino",
- "zweilous": "Zweilous",
- "hydreigon": "Hydreigon",
- "larvesta": "Larvesta",
- "volcarona": "Volcarona",
- "cobalion": "Cobalion",
- "terrakion": "Terrakion",
- "virizion": "Virizion",
- "tornadus": "Tornadus",
- "thundurus": "Thundurus",
+ "karrablast": "Laukaps",
+ "escavalier": "Cavalanzas",
+ "foongus": "Tarnpignon",
+ "amoonguss": "Hutsassa",
+ "frillish": "Quabbel",
+ "jellicent": "Apoquallyp",
+ "alomomola": "Mamolida",
+ "joltik": "Wattzapf",
+ "galvantula": "Voltula",
+ "ferroseed": "Kastadur",
+ "ferrothorn": "Tentantel",
+ "klink": "Klikk",
+ "klang": "Kliklak",
+ "klinklang": "Klikdiklak",
+ "tynamo": "Zapplardin",
+ "eelektrik": "Zapplalek",
+ "eelektross": "Zapplarang",
+ "elgyem": "Pygraulon",
+ "beheeyem": "Megalon",
+ "litwick": "Lichtel",
+ "lampent": "Laternecto",
+ "chandelure": "Skelabra",
+ "axew": "Milza",
+ "fraxure": "Scharfax",
+ "haxorus": "Maxax",
+ "cubchoo": "Petznief",
+ "beartic": "Siberio",
+ "cryogonal": "Frigometri",
+ "shelmet": "Schnuthelm",
+ "accelgor": "Hydragil",
+ "stunfisk": "Flunschlik",
+ "mienfoo": "Lin-Fu",
+ "mienshao": "Wie-Shu",
+ "druddigon": "Shardrago",
+ "golett": "Golbit",
+ "golurk": "Golgantes",
+ "pawniard": "Gladiantri",
+ "bisharp": "Ceasurio",
+ "bouffalant": "Bisofank",
+ "rufflet": "Geronimatz",
+ "braviary": "Washakwil",
+ "vullaby": "Skallyk",
+ "mandibuzz": "Grypheldis",
+ "heatmor": "Furnifraß",
+ "durant": "Fermicula",
+ "deino": "Kapuno",
+ "zweilous": "Duodino",
+ "hydreigon": "Trikephalo",
+ "larvesta": "Ignivor",
+ "volcarona": "Ramoth",
+ "cobalion": "Kobalium",
+ "terrakion": "Terrakium",
+ "virizion": "Viridium",
+ "tornadus": "Boreos",
+ "thundurus": "Voltolos",
"reshiram": "Reshiram",
"zekrom": "Zekrom",
- "landorus": "Landorus",
+ "landorus": "Dementeros",
"kyurem": "Kyurem",
"keldeo": "Keldeo",
"meloetta": "Meloetta",
"genesect": "Genesect",
- "chespin": "Chespin",
- "quilladin": "Quilladin",
- "chesnaught": "Chesnaught",
- "fennekin": "Fennekin",
- "braixen": "Braixen",
- "delphox": "Delphox",
- "froakie": "Froakie",
- "frogadier": "Frogadier",
- "greninja": "Greninja",
- "bunnelby": "Bunnelby",
- "diggersby": "Diggersby",
- "fletchling": "Fletchling",
- "fletchinder": "Fletchinder",
- "talonflame": "Talonflame",
- "scatterbug": "Scatterbug",
- "spewpa": "Spewpa",
+ "chespin": "Igamaro",
+ "quilladin": "Igastarnish",
+ "chesnaught": "Brigaron",
+ "fennekin": "Fynx",
+ "braixen": "Rutena",
+ "delphox": "Fennexis",
+ "froakie": "Froxy",
+ "frogadier": "Amphizel",
+ "greninja": "Quajutsu",
+ "bunnelby": "Scoppel",
+ "diggersby": "Grebbit",
+ "fletchling": "Dartiri",
+ "fletchinder": "Dartignis",
+ "talonflame": "Fiaro",
+ "scatterbug": "Purmel",
+ "spewpa": "Puponcho",
"vivillon": "Vivillon",
- "litleo": "Litleo",
- "pyroar": "Pyroar",
+ "litleo": "Leufeo",
+ "pyroar": "Pyroleo",
"flabebe": "Flabébé",
"floette": "Floette",
"florges": "Florges",
- "skiddo": "Skiddo",
- "gogoat": "Gogoat",
- "pancham": "Pancham",
- "pangoro": "Pangoro",
- "furfrou": "Furfrou",
- "espurr": "Espurr",
- "meowstic": "Meowstic",
- "honedge": "Honedge",
- "doublade": "Doublade",
- "aegislash": "Aegislash",
- "spritzee": "Spritzee",
- "aromatisse": "Aromatisse",
- "swirlix": "Swirlix",
- "slurpuff": "Slurpuff",
- "inkay": "Inkay",
- "malamar": "Malamar",
- "binacle": "Binacle",
- "barbaracle": "Barbaracle",
- "skrelp": "Skrelp",
- "dragalge": "Dragalge",
- "clauncher": "Clauncher",
- "clawitzer": "Clawitzer",
- "helioptile": "Helioptile",
- "heliolisk": "Heliolisk",
- "tyrunt": "Tyrunt",
- "tyrantrum": "Tyrantrum",
- "amaura": "Amaura",
- "aurorus": "Aurorus",
- "sylveon": "Sylveon",
- "hawlucha": "Hawlucha",
+ "skiddo": "Mähikel",
+ "gogoat": "Chevrumm",
+ "pancham": "Pam-Pam",
+ "pangoro": "Pandrago",
+ "furfrou": "Coiffwaff",
+ "espurr": "Psiau",
+ "meowstic": "Psiaugon",
+ "honedge": "Gramokles",
+ "doublade": "Duokles",
+ "aegislash": "Durengard",
+ "spritzee": "Parfi",
+ "aromatisse": "Parfinesse",
+ "swirlix": "Flauschling",
+ "slurpuff": "Sabbaione",
+ "inkay": "Iscalar",
+ "malamar": "Calamanero",
+ "binacle": "Bithora",
+ "barbaracle": "Thanathora",
+ "skrelp": "Algitt",
+ "dragalge": "Tandrak",
+ "clauncher": "Scampisto",
+ "clawitzer": "Wummer",
+ "helioptile": "Eguana",
+ "heliolisk": "Elezard",
+ "tyrunt": "Balgoras",
+ "tyrantrum": "Monargoras",
+ "amaura": "Amarino",
+ "aurorus": "Amagarga",
+ "sylveon": "Feelinara",
+ "hawlucha": "Resladero",
"dedenne": "Dedenne",
- "carbink": "Carbink",
- "goomy": "Goomy",
- "sliggoo": "Sliggoo",
- "goodra": "Goodra",
- "klefki": "Klefki",
- "phantump": "Phantump",
- "trevenant": "Trevenant",
- "pumpkaboo": "Pumpkaboo",
- "gourgeist": "Gourgeist",
- "bergmite": "Bergmite",
- "avalugg": "Avalugg",
- "noibat": "Noibat",
- "noivern": "Noivern",
+ "carbink": "Rocara",
+ "goomy": "Viscora",
+ "sliggoo": "Viscargot",
+ "goodra": "Viscogon",
+ "klefki": "Clavion",
+ "phantump": "Paragoni",
+ "trevenant": "Trombork",
+ "pumpkaboo": "Irrbis",
+ "gourgeist": "Pumpdjinn",
+ "bergmite": "Arktip",
+ "avalugg": "Arktilas",
+ "noibat": "eF-eM",
+ "noivern": "UHaFnir",
"xerneas": "Xerneas",
"yveltal": "Yveltal",
"zygarde": "Zygarde",
"diancie": "Diancie",
"hoopa": "Hoopa",
"volcanion": "Volcanion",
- "rowlet": "Rowlet",
- "dartrix": "Dartrix",
- "decidueye": "Decidueye",
- "litten": "Litten",
- "torracat": "Torracat",
- "incineroar": "Incineroar",
- "popplio": "Popplio",
- "brionne": "Brionne",
- "primarina": "Primarina",
- "pikipek": "Pikipek",
- "trumbeak": "Trumbeak",
- "toucannon": "Toucannon",
- "yungoos": "Yungoos",
- "gumshoos": "Gumshoos",
- "grubbin": "Grubbin",
- "charjabug": "Charjabug",
- "vikavolt": "Vikavolt",
- "crabrawler": "Crabrawler",
- "crabominable": "Crabominable",
- "oricorio": "Oricorio",
- "cutiefly": "Cutiefly",
- "ribombee": "Ribombee",
- "rockruff": "Rockruff",
- "lycanroc": "Lycanroc",
- "wishiwashi": "Wishiwashi",
- "mareanie": "Mareanie",
- "toxapex": "Toxapex",
- "mudbray": "Mudbray",
- "mudsdale": "Mudsdale",
- "dewpider": "Dewpider",
- "araquanid": "Araquanid",
- "fomantis": "Fomantis",
- "lurantis": "Lurantis",
- "morelull": "Morelull",
- "shiinotic": "Shiinotic",
- "salandit": "Salandit",
- "salazzle": "Salazzle",
- "stufful": "Stufful",
- "bewear": "Bewear",
- "bounsweet": "Bounsweet",
- "steenee": "Steenee",
- "tsareena": "Tsareena",
- "comfey": "Comfey",
- "oranguru": "Oranguru",
- "passimian": "Passimian",
- "wimpod": "Wimpod",
- "golisopod": "Golisopod",
- "sandygast": "Sandygast",
- "palossand": "Palossand",
- "pyukumuku": "Pyukumuku",
- "type_null": "Type: Null",
- "silvally": "Silvally",
- "minior": "Minior",
- "komala": "Komala",
+ "rowlet": "Bauz",
+ "dartrix": "Arboretoss",
+ "decidueye": "Silvarro",
+ "litten": "Flamiau",
+ "torracat": "Miezunder",
+ "incineroar": "Fuegro",
+ "popplio": "Robball",
+ "brionne": "Marikeck",
+ "primarina": "Primarene",
+ "pikipek": "Peppeck",
+ "trumbeak": "Trompeck",
+ "toucannon": "Tukanon",
+ "yungoos": "Mangunior",
+ "gumshoos": "Manguspektor",
+ "grubbin": "Mabula",
+ "charjabug": "Akkup",
+ "vikavolt": "Donarion",
+ "crabrawler": "Krabbox",
+ "crabominable": "Krawell",
+ "oricorio": "Choreogel",
+ "cutiefly": "Wommel",
+ "ribombee": "Bandelby",
+ "rockruff": "Wuffels",
+ "lycanroc": "Wolwerock",
+ "wishiwashi": "Lusardin",
+ "mareanie": "Garstella",
+ "toxapex": "Aggrostella",
+ "mudbray": "Pampuli",
+ "mudsdale": "Pampross",
+ "dewpider": "Araqua",
+ "araquanid": "Aranestro",
+ "fomantis": "Imantis",
+ "lurantis": "Mantidea",
+ "morelull": "Bubungus",
+ "shiinotic": "Lamellus",
+ "salandit": "Molunk",
+ "salazzle": "Amfira",
+ "stufful": "Velursi",
+ "bewear": "Kosturso",
+ "bounsweet": "Frubberl",
+ "steenee": "Frubaila",
+ "tsareena": "Fruyal",
+ "comfey": "Curelei",
+ "oranguru": "Kommandutan",
+ "passimian": "Quartermak",
+ "wimpod": "Reißlaus",
+ "golisopod": "Tectass",
+ "sandygast": "Sankabuh",
+ "palossand": "Colossand",
+ "pyukumuku": "Gufa",
+ "type_null": "Typ:Null",
+ "silvally": "Amigento",
+ "minior": "Meteno",
+ "komala": "Koalelu",
"turtonator": "Turtonator",
"togedemaru": "Togedemaru",
- "mimikyu": "Mimikyu",
- "bruxish": "Bruxish",
- "drampa": "Drampa",
- "dhelmise": "Dhelmise",
- "jangmo_o": "Jangmo-o",
- "hakamo_o": "Hakamo-o",
- "kommo_o": "Kommo-o",
- "tapu_koko": "Tapu Koko",
- "tapu_lele": "Tapu Lele",
- "tapu_bulu": "Tapu Bulu",
- "tapu_fini": "Tapu Fini",
+ "mimikyu": "Mimigma",
+ "bruxish": "Knirfish",
+ "drampa": "Sen-Long",
+ "dhelmise": "Moruda",
+ "jangmo_o": "Miniras",
+ "hakamo_o": "Mediras",
+ "kommo_o": "Grandiras",
+ "tapu_koko": "Kapu-Riki",
+ "tapu_lele": "Kapu-Fala",
+ "tapu_bulu": "Kapu-Toro",
+ "tapu_fini": "Kapu-Kime",
"cosmog": "Cosmog",
- "cosmoem": "Cosmoem",
+ "cosmoem": "Cosmovum",
"solgaleo": "Solgaleo",
"lunala": "Lunala",
- "nihilego": "Nihilego",
- "buzzwole": "Buzzwole",
- "pheromosa": "Pheromosa",
- "xurkitree": "Xurkitree",
- "celesteela": "Celesteela",
- "kartana": "Kartana",
- "guzzlord": "Guzzlord",
+ "nihilego": "Anego",
+ "buzzwole": "Masskito",
+ "pheromosa": "Schabelle",
+ "xurkitree": "Voltriant",
+ "celesteela": "Kaguron",
+ "kartana": "Katagami",
+ "guzzlord": "Schlingking",
"necrozma": "Necrozma",
"magearna": "Magearna",
"marshadow": "Marshadow",
- "poipole": "Poipole",
- "naganadel": "Naganadel",
- "stakataka": "Stakataka",
- "blacephalon": "Blacephalon",
+ "poipole": "Venicro",
+ "naganadel": "Agoyon",
+ "stakataka": "Muramura",
+ "blacephalon": "Kopplosio",
"zeraora": "Zeraora",
"meltan": "Meltan",
"melmetal": "Melmetal",
diff --git a/src/locales/de/starter-select-ui-handler.ts b/src/locales/de/starter-select-ui-handler.ts
new file mode 100644
index 000000000..c7595cb2f
--- /dev/null
+++ b/src/locales/de/starter-select-ui-handler.ts
@@ -0,0 +1,32 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+/**
+ * The menu namespace holds most miscellaneous text that isn't directly part of the game's
+ * contents or directly related to Pokemon data. This includes menu navigation, settings,
+ * account interactions, descriptive text, etc.
+ */
+export const starterSelectUiHandler: SimpleTranslationEntries = {
+ "confirmStartTeam":'Begin with these Pokémon?',
+ "growthRate": "Growth Rate:",
+ "ability": "Ability:",
+ "passive": "Passive:",
+ "nature": "Nature:",
+ "eggMoves": 'Egg Moves',
+ "start": "Start",
+ "addToParty": "Add to Party",
+ "toggleIVs": 'Toggle IVs',
+ "manageMoves": 'Manage Moves',
+ "useCandies": 'Use Candies',
+ "selectMoveSwapOut": "Select a move to swap out.",
+ "selectMoveSwapWith": "Select a move to swap with",
+ "unlockPassive": "Unlock Passive",
+ "reduceCost": "Reduce Cost",
+ "cycleShiny": "R: Cycle Shiny",
+ "cycleForm": 'F: Cycle Form',
+ "cycleGender": 'G: Cycle Gender',
+ "cycleAbility": 'E: Cycle Ability',
+ "cycleNature": 'N: Cycle Nature',
+ "cycleVariant": 'V: Cycle Variant',
+ "enablePassive": "Enable Passive",
+ "disablePassive": "Disable Passive"
+}
\ No newline at end of file
diff --git a/src/locales/de/tutorial.ts b/src/locales/de/tutorial.ts
index 2722c02ad..2773b6710 100644
--- a/src/locales/de/tutorial.ts
+++ b/src/locales/de/tutorial.ts
@@ -20,6 +20,10 @@ export const tutorial: SimpleTranslationEntries = {
"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.
diff --git a/src/locales/en/battle.ts b/src/locales/en/battle.ts
new file mode 100644
index 000000000..e307a3a52
--- /dev/null
+++ b/src/locales/en/battle.ts
@@ -0,0 +1,53 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const battle: SimpleTranslationEntries = {
+ "bossAppeared": "{{bossName}} appeared.",
+ "trainerAppeared": "{{trainerName}}\nwould like to battle!",
+ "singleWildAppeared": "A wild {{pokemonName}} appeared!",
+ "multiWildAppeared": "A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!",
+ "playerComeBack": "Come back, {{pokemonName}}!",
+ "trainerComeBack": "{{trainerName}} withdrew {{pokemonName}}!",
+ "playerGo": "Go! {{pokemonName}}!",
+ "trainerGo": "{{trainerName}} sent out {{pokemonName}}!",
+ "switchQuestion": "Will you switch\n{{pokemonName}}?",
+ "trainerDefeated": `You defeated\n{{trainerName}}!`,
+ "pokemonCaught": "{{pokemonName}} was caught!",
+ "pokemon": "Pokémon",
+ "sendOutPokemon": "Go! {{pokemonName}}!",
+ "hitResultCriticalHit": "A critical hit!",
+ "hitResultSuperEffective": "It's super effective!",
+ "hitResultNotVeryEffective": "It's not very effective…",
+ "hitResultNoEffect": "It doesn't affect {{pokemonName}}!",
+ "hitResultOneHitKO": "It's a one-hit KO!",
+ "attackFailed": "But it failed!",
+ "attackHitsCount": `Hit {{count}} time(s)!`,
+ "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!",
+ "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!",
+ "learnMove": "{{pokemonName}} learned\n{{moveName}}!",
+ "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.",
+ "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.",
+ "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?",
+ "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?",
+ "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.",
+ "learnMoveForgetQuestion": "Which move should be forgotten?",
+ "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.",
+ "levelCapUp": "The level cap\nhas increased to {{levelCap}}!",
+ "moveNotImplemented": "{{moveName}} is not yet implemented and cannot be selected.",
+ "moveNoPP": "There's no PP left for\nthis move!",
+ "moveDisabled": "{{moveName}} is disabled!",
+ "noPokeballForce": "An unseen force\nprevents using Poké Balls.",
+ "noPokeballTrainer": "You can't catch\nanother trainer's Pokémon!",
+ "noPokeballMulti": "You can only throw a Poké Ball\nwhen there is one Pokémon remaining!",
+ "noPokeballStrong": "The target Pokémon is too strong to be caught!\nYou need to weaken it first!",
+ "noEscapeForce": "An unseen force\nprevents escape.",
+ "noEscapeTrainer": "You can't run\nfrom a trainer battle!",
+ "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nprevents {{escapeVerb}}!",
+ "runAwaySuccess": "You got away safely!",
+ "runAwayCannotEscape": 'You can\'t escape!',
+ "escapeVerbSwitch": "switching",
+ "escapeVerbFlee": "fleeing",
+ "notDisabled": "{{moveName}} is disabled\nno more!",
+ "skipItemQuestion": "Are you sure you want to skip taking an item?",
+ "eggHatching": "Oh?",
+ "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?"
+} as const;
\ No newline at end of file
diff --git a/src/locales/en/config.ts b/src/locales/en/config.ts
new file mode 100644
index 000000000..11cbc42d9
--- /dev/null
+++ b/src/locales/en/config.ts
@@ -0,0 +1,28 @@
+import { ability } from "./ability";
+import { battle } from "./battle";
+import { commandUiHandler } from "./command-ui-handler";
+import { fightUiHandler } from "./fight-ui-handler";
+import { menu } from "./menu";
+import { menuUiHandler } from "./menu-ui-handler";
+import { move } from "./move";
+import { pokeball } from "./pokeball";
+import { pokemon } from "./pokemon";
+import { pokemonStat } from "./pokemon-stat";
+import { starterSelectUiHandler } from "./starter-select-ui-handler";
+import { tutorial } from "./tutorial";
+
+
+export const enConfig = {
+ ability: ability,
+ battle: battle,
+ commandUiHandler: commandUiHandler,
+ fightUiHandler: fightUiHandler,
+ menuUiHandler: menuUiHandler,
+ menu: menu,
+ move: move,
+ pokeball: pokeball,
+ pokemonStat: pokemonStat,
+ pokemon: pokemon,
+ starterSelectUiHandler: starterSelectUiHandler,
+ tutorial: tutorial
+}
\ No newline at end of file
diff --git a/src/locales/en/menu.ts b/src/locales/en/menu.ts
index bce59c02c..7a5043a98 100644
--- a/src/locales/en/menu.ts
+++ b/src/locales/en/menu.ts
@@ -35,47 +35,12 @@ export const menu: SimpleTranslationEntries = {
"boyOrGirl": "Are you a boy or a girl?",
"boy": "Boy",
"girl": "Girl",
- "bossAppeared": "{{bossName}} appeared.",
- "trainerAppeared": "{{trainerName}}\nwould like to battle!",
- "singleWildAppeared": "A wild {{pokemonName}} appeared!",
- "multiWildAppeared": "A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!",
- "playerComeBack": "Come back, {{pokemonName}}!",
- "trainerComeBack": "{{trainerName}} withdrew {{pokemonName}}!",
- "playerGo": "Go! {{pokemonName}}!",
- "trainerGo": "{{trainerName}} sent out {{pokemonName}}!",
- "switchQuestion": "Will you switch\n{{pokemonName}}?",
- "trainerDefeated": `You defeated\n{{trainerName}}!`,
- "pokemonCaught": "{{pokemonName}} was caught!",
- "pokemon": "Pokémon",
- "sendOutPokemon": "Go! {{pokemonName}}!",
- "attackFailed": "But it failed!",
- "attackHitsCount": `Hit {{count}} time(s)!`,
- "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!",
- "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!",
- "learnMove": "{{pokemonName}} learned\n{{moveName}}!",
- "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.",
- "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.",
- "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?",
- "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?",
- "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.",
- "learnMoveForgetQuestion": "Which move should be forgotten?",
- "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.",
- "levelCapUp": "The level cap\nhas increased to {{levelCap}}!",
- "moveNotImplemented": "{{moveName}} is not yet implemented and cannot be selected.",
- "moveDisabled": "{{moveName}} is disabled!",
- "noPokeballForce": "An unseen force\nprevents using Poké Balls.",
- "noPokeballTrainer": "You can't catch\nanother trainer's Pokémon!",
- "noPokeballMulti": "You can only throw a Poké Ball\nwhen there is one Pokémon remaining!",
- "noPokeballStrong": "The target Pokémon is too strong to be caught!\nYou need to weaken it first!",
- "noEscapeForce": "An unseen force\nprevents escape.",
- "noEscapeTrainer": "You can't run\nfrom a trainer battle!",
- "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nprevents {{escapeVerb}}!",
- "runAwaySuccess": "You got away safely!",
- "runAwayCannotEscape": 'You can\'t escape!',
- "escapeVerbSwitch": "switching",
- "escapeVerbFlee": "fleeing",
- "notDisabled": "{{moveName}} is disabled\nno more!",
- "skipItemQuestion": "Are you sure you want to skip taking an item?",
- "eggHatching": "Oh?",
- "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?",
+ "dailyRankings": "Daily Rankings",
+ "weeklyRankings": "Weekly Rankings",
+ "noRankings": "No Rankings",
+ "loading": "Loading…",
+ "playersOnline": "Players Online",
+ "empty":"Empty",
+ "yes":"Yes",
+ "no":"No",
} as const;
\ No newline at end of file
diff --git a/src/locales/en/starter-select-ui-handler.ts b/src/locales/en/starter-select-ui-handler.ts
new file mode 100644
index 000000000..c7595cb2f
--- /dev/null
+++ b/src/locales/en/starter-select-ui-handler.ts
@@ -0,0 +1,32 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+/**
+ * The menu namespace holds most miscellaneous text that isn't directly part of the game's
+ * contents or directly related to Pokemon data. This includes menu navigation, settings,
+ * account interactions, descriptive text, etc.
+ */
+export const starterSelectUiHandler: SimpleTranslationEntries = {
+ "confirmStartTeam":'Begin with these Pokémon?',
+ "growthRate": "Growth Rate:",
+ "ability": "Ability:",
+ "passive": "Passive:",
+ "nature": "Nature:",
+ "eggMoves": 'Egg Moves',
+ "start": "Start",
+ "addToParty": "Add to Party",
+ "toggleIVs": 'Toggle IVs',
+ "manageMoves": 'Manage Moves',
+ "useCandies": 'Use Candies',
+ "selectMoveSwapOut": "Select a move to swap out.",
+ "selectMoveSwapWith": "Select a move to swap with",
+ "unlockPassive": "Unlock Passive",
+ "reduceCost": "Reduce Cost",
+ "cycleShiny": "R: Cycle Shiny",
+ "cycleForm": 'F: Cycle Form',
+ "cycleGender": 'G: Cycle Gender',
+ "cycleAbility": 'E: Cycle Ability',
+ "cycleNature": 'N: Cycle Nature',
+ "cycleVariant": 'V: Cycle Variant',
+ "enablePassive": "Enable Passive",
+ "disablePassive": "Disable Passive"
+}
\ No newline at end of file
diff --git a/src/locales/en/tutorial.ts b/src/locales/en/tutorial.ts
index 2722c02ad..2773b6710 100644
--- a/src/locales/en/tutorial.ts
+++ b/src/locales/en/tutorial.ts
@@ -20,6 +20,10 @@ export const tutorial: SimpleTranslationEntries = {
"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.
diff --git a/src/locales/es/battle.ts b/src/locales/es/battle.ts
new file mode 100644
index 000000000..f4bf22bb9
--- /dev/null
+++ b/src/locales/es/battle.ts
@@ -0,0 +1,53 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const battle: SimpleTranslationEntries = {
+ "bossAppeared": "¡{{bossName}} te corta el paso!",
+ "trainerAppeared": "¡{{trainerName}}\nte desafía!",
+ "singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!",
+ "multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!",
+ "playerComeBack": "¡{{pokemonName}}, ven aquí!",
+ "trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!",
+ "playerGo": "¡Adelante, {{pokemonName}}!",
+ "trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!",
+ "switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?",
+ "trainerDefeated": "¡Has derrotado a\n{{trainerName}}!",
+ "pokemonCaught": "¡{{pokemonName}} atrapado!",
+ "pokemon": "Pokémon",
+ "sendOutPokemon": "¡Adelante, {{pokemonName}}!",
+ "hitResultCriticalHit": "A critical hit!",
+ "hitResultSuperEffective": "It's super effective!",
+ "hitResultNotVeryEffective": "It's not very effective…",
+ "hitResultNoEffect": "It doesn't affect {{pokemonName}}!",
+ "hitResultOneHitKO": "It's a one-hit KO!",
+ "attackFailed": "¡Pero ha fallado!",
+ "attackHitsCount": `N.º de golpes: {{count}}.`,
+ "expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.",
+ "levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!",
+ "learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!",
+ "learnMovePrompt": "{{pokemonName}} quiere aprender\n{{moveName}}.",
+ "learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.",
+ "learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?",
+ "learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?",
+ "learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.",
+ "learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?",
+ "learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.",
+ "levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!",
+ "moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.",
+ "moveNoPP": "There's no PP left for\nthis move!",
+ "moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!",
+ "noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.",
+ "noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!",
+ "noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!",
+ "noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!",
+ "noEscapeForce": "Una fuerza misteriosa\nte impide huir.",
+ "noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!",
+ "noEscapePokemon": "¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!",
+ "runAwaySuccess": "¡Escapas sin problemas!",
+ "runAwayCannotEscape": "¡No has podido escapar!",
+ "escapeVerbSwitch": "cambiar",
+ "escapeVerbFlee": "huir",
+ "notDisabled": "¡El movimiento {{moveName}}\nya no está anulado!",
+ "skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?",
+ "eggHatching": "¿Y esto?",
+ "ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?"
+} as const;
\ No newline at end of file
diff --git a/src/locales/es/command-ui-handler.ts b/src/locales/es/command-ui-handler.ts
index 237e779db..66a892f8f 100644
--- a/src/locales/es/command-ui-handler.ts
+++ b/src/locales/es/command-ui-handler.ts
@@ -2,7 +2,7 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const commandUiHandler: SimpleTranslationEntries = {
"fight": "Luchar",
- "ball": "Ball",
+ "ball": "Balls",
"pokemon": "Pokémon",
"run": "Huir",
"actionMessage": "¿Qué debería\nhacer {{pokemonName}}?",
diff --git a/src/locales/es/config.ts b/src/locales/es/config.ts
new file mode 100644
index 000000000..093a4b393
--- /dev/null
+++ b/src/locales/es/config.ts
@@ -0,0 +1,28 @@
+import { ability } from "./ability";
+import { battle } from "./battle";
+import { commandUiHandler } from "./command-ui-handler";
+import { fightUiHandler } from "./fight-ui-handler";
+import { menu } from "./menu";
+import { menuUiHandler } from "./menu-ui-handler";
+import { move } from "./move";
+import { pokeball } from "./pokeball";
+import { pokemon } from "./pokemon";
+import { pokemonStat } from "./pokemon-stat";
+import { starterSelectUiHandler } from "./starter-select-ui-handler";
+import { tutorial } from "./tutorial";
+
+
+export const esConfig = {
+ ability: ability,
+ battle: battle,
+ commandUiHandler: commandUiHandler,
+ fightUiHandler: fightUiHandler,
+ menuUiHandler: menuUiHandler,
+ menu: menu,
+ move: move,
+ pokeball: pokeball,
+ pokemonStat: pokemonStat,
+ pokemon: pokemon,
+ starterSelectUiHandler: starterSelectUiHandler,
+ tutorial: tutorial
+}
\ No newline at end of file
diff --git a/src/locales/es/fight-ui-handler.ts b/src/locales/es/fight-ui-handler.ts
new file mode 100644
index 000000000..b431e3b70
--- /dev/null
+++ b/src/locales/es/fight-ui-handler.ts
@@ -0,0 +1,6 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const fightUiHandler: SimpleTranslationEntries = {
+ "pp": "PP",
+ "power": "POTENCIA",
+} as const;
diff --git a/src/locales/es/menu.ts b/src/locales/es/menu.ts
index dc1c50b38..4839630bc 100644
--- a/src/locales/es/menu.ts
+++ b/src/locales/es/menu.ts
@@ -13,53 +13,34 @@ export const menu: SimpleTranslationEntries = {
"newGame": "Nueva partida",
"selectGameMode": "Elige un modo de juego.",
"logInOrCreateAccount": "Inicia sesión o crea una cuenta para empezar. ¡No se requiere correo electrónico!",
+ "username": "Usuario",
+ "password": "Contraseña",
+ "login": "Iniciar Sesión",
+ "register": "Registrarse",
+ "emptyUsername": "El usuario no puede estar vacío",
+ "invalidLoginUsername": "El usuario no es válido",
+ "invalidRegisterUsername": "El usuario solo puede contener letras, números y guiones bajos",
+ "invalidLoginPassword": "La contraseña no es válida",
+ "invalidRegisterPassword": "Contraseña debe tener 6 o más caracter.",
+ "usernameAlreadyUsed": "El usuario ya está en uso",
+ "accountNonExistent": "El usuario no existe",
+ "unmatchingPassword": "La contraseña no coincide",
+ "passwordNotMatchingConfirmPassword": "Las contraseñas deben coincidir",
+ "confirmPassword": "Confirmar Contra.",
+ "registrationAgeWarning": "Al registrarte, confirmas tener 13 o más años de edad.",
+ "backToLogin": "Volver al Login",
"failedToLoadSaveData": "No se ha podido cargar los datos guardados. Por favor, recarga la página.\nSi el fallo continúa, por favor contacta al administrador.",
"sessionSuccess": "Sesión cargada con éxito.",
"failedToLoadSession": "No se ha podido cargar los datos de tu sesión.\nPuede que estén corruptos.",
"boyOrGirl": "¿Eres un chico o una chica?",
"boy": "Chico",
"girl": "Chica",
- "bossAppeared": "¡{{bossName}} te corta el paso!",
- "trainerAppeared": "¡{{trainerName}}\nte desafía!",
- "singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!",
- "multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!",
- "playerComeBack": "¡{{pokemonName}}, ven aquí!",
- "trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!",
- "playerGo": "¡Adelante, {{pokemonName}}!",
- "trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!",
- "switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?",
- "trainerDefeated": "¡Has derrotado a\n{{trainerName}}!",
- "pokemonCaught": "¡{{pokemonName}} atrapado!",
- "pokemon": "Pokémon",
- "sendOutPokemon": "¡Adelante, {{pokemonName}}!",
- "attackFailed": "¡Pero ha fallado!",
- "attackHitsCount": `N.º de golpes: {{count}}.`,
- "expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.",
- "levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!",
- "learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!",
- "learnMovePrompt": "{{pokemonName}} quiere aprender {{moveName}}.",
- "learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.",
- "learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?",
- "learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?",
- "learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.",
- "learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?",
- "learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.",
- "levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!",
- "moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.",
- "moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!",
- "noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.",
- "noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!",
- "noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!",
- "noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!",
- "noEscapeForce": "Una fuerza misteriosa\nte impide huir.",
- "noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!",
- "noEscapePokemon": "¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!",
- "runAwaySuccess": "¡Escapas sin problemas!",
- "runAwayCannotEscape": "¡No has podido escapar!",
- "escapeVerbSwitch": "cambiar",
- "escapeVerbFlee": "huir",
- "notDisabled": "¡El movimiento {{moveName}}\nya no está anulado!",
- "skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?",
- "eggHatching": "¿Y esto?",
- "ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?"
+ "dailyRankings": "Rankings Diarios",
+ "weeklyRankings": "Rankings Semanales",
+ "noRankings": "Sin Rankings",
+ "loading": "Cargando…",
+ "playersOnline": "Jugadores en Línea",
+ "empty":"Vacío",
+ "yes":"Sí",
+ "no":"No",
} as const;
\ No newline at end of file
diff --git a/src/locales/es/pokemon-stat.ts b/src/locales/es/pokemon-stat.ts
index 276b099bf..514ef1989 100644
--- a/src/locales/es/pokemon-stat.ts
+++ b/src/locales/es/pokemon-stat.ts
@@ -4,13 +4,13 @@ export const pokemonStat: SimpleTranslationEntries = {
"HP": "PV",
"HPshortened": "PV",
"ATK": "Ataque",
- "ATKshortened": "Ataque",
+ "ATKshortened": "Ata",
"DEF": "Defensa",
- "DEFshortened": "Defensa",
+ "DEFshortened": "Def",
"SPATK": "At. Esp.",
- "SPATKshortened": "At. Esp.",
+ "SPATKshortened": "AtEsp",
"SPDEF": "Def. Esp.",
- "SPDEFshortened": "Def. Esp.",
+ "SPDEFshortened": "DefEsp",
"SPD": "Velocidad",
"SPDshortened": "Veloc."
} as const;
\ No newline at end of file
diff --git a/src/locales/es/starter-select-ui-handler.ts b/src/locales/es/starter-select-ui-handler.ts
new file mode 100644
index 000000000..629e25632
--- /dev/null
+++ b/src/locales/es/starter-select-ui-handler.ts
@@ -0,0 +1,32 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+/**
+ * The menu namespace holds most miscellaneous text that isn't directly part of the game's
+ * contents or directly related to Pokemon data. This includes menu navigation, settings,
+ * account interactions, descriptive text, etc.
+ */
+export const starterSelectUiHandler: SimpleTranslationEntries = {
+ "confirmStartTeam":'¿Comenzar con estos Pokémon?',
+ "growthRate": "Crecimiento:",
+ "ability": "Habilid:",
+ "passive": "Pasiva:",
+ "nature": "Natur:",
+ "eggMoves": "Mov. Huevo",
+ "start": "Iniciar",
+ "addToParty": "Añadir a Equipo",
+ "toggleIVs": "Mostrar IVs",
+ "manageMoves": "Gestionar Movs.",
+ "useCandies": "Usar Caramelos",
+ "selectMoveSwapOut": "Elige el movimiento que sustituir.",
+ "selectMoveSwapWith": "Elige el movimiento que sustituirá a",
+ "unlockPassive": "Añadir Pasiva",
+ "reduceCost": "Reducir Coste",
+ "cycleShiny": "R: Cambiar Shiny",
+ "cycleForm": 'F: Cambiar Forma',
+ "cycleGender": 'G: Cambiar Género',
+ "cycleAbility": 'E: Cambiar Habilidad',
+ "cycleNature": 'N: Cambiar Naturaleza',
+ "cycleVariant": 'V: Cambiar Variante',
+ "enablePassive": "Activar Pasiva",
+ "disablePassive": "Desactivar Pasiva"
+}
\ No newline at end of file
diff --git a/src/locales/es/tutorial.ts b/src/locales/es/tutorial.ts
index 2722c02ad..6e131f9b0 100644
--- a/src/locales/es/tutorial.ts
+++ b/src/locales/es/tutorial.ts
@@ -1,38 +1,49 @@
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.`,
+ "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": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
+ "accessMenu": `Para acceder al menú, pulsa M o Escape cuando\ntengas el control.
+ $El menú contiene los ajustes y otras funciones.`,
- "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!`,
+ "menu": `Desde este menú podrás acceder a los ajustes.
+ $Podrás cambiar la velocidad del juego, el estilo de la ventana y demás.
+ $Hay más opciones, ¡así que pruébalas todas!`,
- "starterSelect": `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!`,
+ "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": `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!`,
+ "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!`,
- "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.`,
+ "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.`,
- "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!`,
+ "selectItem": `Tras cada combate, tendrás la opción de elegir entre tres objetos aleatorios. Solo podrás escoger uno.
+ $Estos objetos pueden ser consumibles, objetos equipables u objetos pasivos permanentes (hasta acabar la partida).
+ $La mayoría de los efectos de objetos no consumibles se acumularán de varias maneras.
+ $Algunos objetos solo aparecerán si pueden ser utilizados, como las piedras evolutivas.
+ $También puedes transferir objetos equipados entre Pokémon utilizando la opción de transferir.
+ $La opción de transferir aparecerá en la parte inferior derecha una vez hayas obtenido un objeto equipable.
+ $También puedes comprar objetos consumibles con dinero y su variedad irá aumentando según tu avance.
+ $Asegúrate de comprar antes de escoger un objeto aleatorio, ya que se avanzará al siguiente combate.`,
+
+ "eggGacha": `En esta pantalla podrás canjear tus vales por huevos\nde Pokémon.
+ $Los huevos deben eclosionar y estarán más cerca de\nhacerlo tras cada combate.
+ $Los huevos más raros tardarán más en eclosionar.
+ $Los Pokémon que hayan salido del huevo no se\nañadirán a tu equipo, pero sí a tus iniciales.
+ $Los Pokémon salidos de un huevo suelen tener mejores\nIVs que los Pokémon salvajes.
+ $Algunos Pokémon solo pueden ser obtenidos de huevos.
+ $Hay 3 máquinas diferentes entre las que elegir, cada\nuna con zdiferentes bonificaciones.
+ $¡Así que escoge la que más te interese!`,
} as const;
\ No newline at end of file
diff --git a/src/locales/fr/battle.ts b/src/locales/fr/battle.ts
new file mode 100644
index 000000000..56ab69215
--- /dev/null
+++ b/src/locales/fr/battle.ts
@@ -0,0 +1,53 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const battle: SimpleTranslationEntries = {
+ "bossAppeared": "Un {{bossName}} apparaît.",
+ "trainerAppeared": "Un combat est lancé\npar {{trainerName}} !",
+ "singleWildAppeared": "Un {{pokemonName}} sauvage apparaît !",
+ "multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !",
+ "playerComeBack": "{{pokemonName}}, on change !\nReviens !",
+ "trainerComeBack": "{{trainerName}} retire {{pokemonName}} !",
+ "playerGo": "{{pokemonName}} ! Go !",
+ "trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !",
+ "switchQuestion": "Voulez-vous changer\nvotre {{pokemonName}} ?",
+ "trainerDefeated": `Vous avez battu\n{{trainerName}} !`,
+ "pokemonCaught": "Vous avez attrapé {{pokemonName}} !",
+ "pokemon": "Pokémon",
+ "sendOutPokemon": "{{pokemonName}} ! Go !",
+ "hitResultCriticalHit": "Coup critique !",
+ "hitResultSuperEffective": "C’est super efficace !",
+ "hitResultNotVeryEffective": "Ce n’est pas très efficace…",
+ "hitResultNoEffect": "Ça n’affecte pas {{pokemonName}}…",
+ "hitResultOneHitKO": "K.O. en un coup !",
+ "attackFailed": "Mais cela échoue !",
+ "attackHitsCount": `Touché {{count}} fois !`,
+ "expGain": "{{pokemonName}} gagne\n{{exp}} Points d’Exp !",
+ "levelUp": "{{pokemonName}} monte au\nN. {{level}} !",
+ "learnMove": "{{pokemonName}} apprend\n{{moveName}} !",
+ "learnMovePrompt": "{{pokemonName}} veut apprendre\n{{moveName}}.",
+ "learnMoveLimitReached": "Cependant, {{pokemonName}} connait\ndéjà quatre capacités.",
+ "learnMoveReplaceQuestion": "Voulez-vous oublier une capacité\net la remplacer par {{moveName}} ?",
+ "learnMoveStopTeaching": "Arrêter d’apprendre\n{{moveName}} ?",
+ "learnMoveNotLearned": "{{pokemonName}} n’a pas appris\n{{moveName}}.",
+ "learnMoveForgetQuestion": "Quelle capacité doit être oubliée ?",
+ "learnMoveForgetSuccess": "{{pokemonName}} oublie comment\nutiliser {{moveName}}.",
+ "levelCapUp": "La limite de niveau\na été augmentée à {{levelCap}} !",
+ "moveNotImplemented": "{{moveName}} n’est pas encore implémenté et ne peut pas être sélectionné.",
+ "moveNoPP": "Il n’y a plus de PP pour\ncette capacité !",
+ "moveDisabled": "{{moveName}} est sous entrave !",
+ "noPokeballForce": "Une force mystérieuse\nempêche l’utilisation des Poké Balls.",
+ "noPokeballTrainer": "Le Dresseur détourne la Ball\nVoler, c’est mal !",
+ "noPokeballMulti": "Impossible ! On ne peut pas viser\nquand il y a deux Pokémon !",
+ "noPokeballStrong": "Le Pokémon est trop fort pour être capturé !\nVous devez d’abord l’affaiblir !",
+ "noEscapeForce": "Une force mystérieuse\nempêche la fuite.",
+ "noEscapeTrainer": "On ne s’enfuit pas d’un\ncombat de Dresseurs !",
+ "noEscapePokemon": "{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !",
+ "runAwaySuccess": "Vous prenez la fuite !",
+ "runAwayCannotEscape": "Fuite impossible !",
+ "escapeVerbSwitch": "le changement",
+ "escapeVerbFlee": "la fuite",
+ "notDisabled": "{{moveName}} n’est plus sous entrave !",
+ "skipItemQuestion": "Êtes-vous sûr·e de ne pas vouloir prendre d’objet ?",
+ "eggHatching": "Oh ?",
+ "ivScannerUseQuestion": "Utiliser le Scanner d’IV sur {{pokemonName}} ?"
+} as const;
diff --git a/src/locales/fr/config.ts b/src/locales/fr/config.ts
new file mode 100644
index 000000000..a2e678ca6
--- /dev/null
+++ b/src/locales/fr/config.ts
@@ -0,0 +1,28 @@
+import { ability } from "./ability";
+import { battle } from "./battle";
+import { commandUiHandler } from "./command-ui-handler";
+import { fightUiHandler } from "./fight-ui-handler";
+import { menu } from "./menu";
+import { menuUiHandler } from "./menu-ui-handler";
+import { move } from "./move";
+import { pokeball } from "./pokeball";
+import { pokemon } from "./pokemon";
+import { pokemonStat } from "./pokemon-stat";
+import { starterSelectUiHandler } from "./starter-select-ui-handler";
+import { tutorial } from "./tutorial";
+
+
+export const frConfig = {
+ ability: ability,
+ battle: battle,
+ commandUiHandler: commandUiHandler,
+ fightUiHandler: fightUiHandler,
+ menuUiHandler: menuUiHandler,
+ menu: menu,
+ move: move,
+ pokeball: pokeball,
+ pokemonStat: pokemonStat,
+ pokemon: pokemon,
+ starterSelectUiHandler: starterSelectUiHandler,
+ tutorial: tutorial
+}
\ No newline at end of file
diff --git a/src/locales/fr/menu-ui-handler.ts b/src/locales/fr/menu-ui-handler.ts
index 684a8cc07..54328a05e 100644
--- a/src/locales/fr/menu-ui-handler.ts
+++ b/src/locales/fr/menu-ui-handler.ts
@@ -13,9 +13,9 @@ export const menuUiHandler: SimpleTranslationEntries = {
"LOG_OUT": "Déconnexion",
"slot": "Emplacement {{slotNumber}}",
"importSession": "Importer session",
- "importSlotSelect": "Sélectionnez l'emplacement vers lequel importer les données.",
+ "importSlotSelect": "Sélectionnez l’emplacement vers lequel importer les données.",
"exportSession": "Exporter session",
- "exportSlotSelect": "Sélectionnez l'emplacement depuis lequel exporter les données.",
+ "exportSlotSelect": "Sélectionnez l’emplacement depuis lequel exporter les données.",
"importData": "Importer données",
"exportData": "Exporter données",
"cancel": "Retour",
diff --git a/src/locales/fr/menu.ts b/src/locales/fr/menu.ts
index 015132bc6..b073bbbfb 100644
--- a/src/locales/fr/menu.ts
+++ b/src/locales/fr/menu.ts
@@ -30,47 +30,12 @@ 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",
} as const;
diff --git a/src/locales/fr/starter-select-ui-handler.ts b/src/locales/fr/starter-select-ui-handler.ts
new file mode 100644
index 000000000..77a79387a
--- /dev/null
+++ b/src/locales/fr/starter-select-ui-handler.ts
@@ -0,0 +1,32 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+/**
+ * The menu namespace holds most miscellaneous text that isn't directly part of the game's
+ * contents or directly related to Pokemon data. This includes menu navigation, settings,
+ * account interactions, descriptive text, etc.
+ */
+export const starterSelectUiHandler: SimpleTranslationEntries = {
+ "confirmStartTeam":'Commencer avec ces Pokémon ?',
+ "growthRate": "Croissance :",
+ "ability": "Talent :",
+ "passive": "Passif :",
+ "nature": "Nature :",
+ "eggMoves": "Capacités Œuf",
+ "start": "Lancer",
+ "addToParty": "Ajouter à l’équipe",
+ "toggleIVs": "Voir IVs",
+ "manageMoves": "Gérer Capacités",
+ "useCandies": "Utiliser Bonbons",
+ "selectMoveSwapOut": "Sélectionnez la capacité à échanger.",
+ "selectMoveSwapWith": "Sélectionnez laquelle échanger avec",
+ "unlockPassive": "Débloquer Passif",
+ "reduceCost": "Diminuer le cout",
+ "cycleShiny": "R: » Chromatiques",
+ "cycleForm": "F: » Formes",
+ "cycleGender": "G: » Sexes",
+ "cycleAbility": "E: » Talents",
+ "cycleNature": "N: » Natures",
+ "cycleVariant": "V: » Variants",
+ "enablePassive": "Activer Passif",
+ "disablePassive": "Désactiver Passif"
+}
diff --git a/src/locales/fr/tutorial.ts b/src/locales/fr/tutorial.ts
index 2722c02ad..bcd76d61d 100644
--- a/src/locales/fr/tutorial.ts
+++ b/src/locales/fr/tutorial.ts
@@ -1,38 +1,47 @@
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!`,
+ "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.`,
- "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!`,
+ "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`,
- "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!`,
+ "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 !`,
- "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.`,
+ "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 !`,
- "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
+ "pokerus": `Chaque jour, 3 starters tirés aléatoirement ont un contour
+ $violet. Si un starter que vous possédez l’a, essayez de
+ $l’ajouter à votre équipe. Vérifiez bien son résumé !`,
+
+ "statChange": `Les changements de stats restent à travers les combats tant que le Pokémon n’est pas rappelé.
+ $Vos Pokémon sont rappelés avant un combat de Dresseur et avant d’entrer dans un nouveau biome.
+ $Vous pouvez également voir en combat les changements de stats d’un Pokémon en maintenant C ou Maj.`,
+
+ "selectItem": `Après chaque combat, vous avez le choix entre 3 objets\ntirés au sort. Vous ne pouvez en prendre qu’un.
+ $Cela peut être des objets consommables, des objets à\nfaire tenir, ou des objets passifs aux effets permanents.
+ $La plupart des effets des objets non-consommables se cumuleront de diverses manières.
+ $Certains objets apparaîtront s’ils peuvent être utilisés, comme les objets d’évolution.
+ $Vous pouvez aussi transférer des objets tenus entre Pokémon en utilisant l’option de transfert.
+ $L’option de transfert apparaît en bas à droite dès que vous avez obtenu un objet à faire tenir.
+ $Vous pouvez acheter des consommables avec de l’argent.\nPlus vous progressez, plus le choix sera varié.
+ $Choisir un des objets gratuits déclenchera le prochain combat, donc faites bien tous vos achats avant.`,
+
+ "eggGacha": `Depuis cet écran, vous pouvez échanger vos coupons\ncontre des Œufs de Pokémon.
+ $Les Œufs éclosent après avoir remporté un certain nombre\nde combats. Les plus rares mettent plus de temps.
+ $Les Pokémon éclos ne rejoindront pas votre équipe,\nmais seront ajoutés à vos starters.
+ $Les Pokémon issus d’Œufs ont généralement de\nmeilleurs IVs que les Pokémon sauvages.
+ $Certains Pokémon ne peuvent être obtenus\nque dans des Œufs.
+ $Il y a 3 différentes machines à actionner avec différents\nbonus, prenez celle qui vous convient le mieux !`,
+} as const;
diff --git a/src/locales/it/ability.ts b/src/locales/it/ability.ts
new file mode 100644
index 000000000..4955813c4
--- /dev/null
+++ b/src/locales/it/ability.ts
@@ -0,0 +1,1244 @@
+import { AbilityTranslationEntries } from "#app/plugins/i18n.js";
+
+export const ability: AbilityTranslationEntries = {
+ stench: {
+ name: "Tanfo",
+ description: "Quando il Pokémon attacca il bersaglio, può farlo tentennare grazie al cattivo odore che emana.",
+ },
+ drizzle: {
+ name: "Piovischio",
+ description: "Quando il Pokémon entra in campo, attira la pioggia.",
+ },
+ speedBoost: {
+ name: "Acceleratore",
+ description: "La Velocità aumenta a ogni turno.",
+ },
+ battleArmor: {
+ name: "Lottascudo",
+ description: "Il Pokémon è protetto da una dura corazza che gli evita di subire brutti colpi.",
+ },
+ sturdy: {
+ name: "Vigore",
+ description: "Evita che il Pokémon vada KO in un sol colpo se ha tutti i PS, e lo rende immune alle mosse che causano KO immediato.",
+ },
+ damp: {
+ name: "Umidità",
+ description: "Aumenta l'umidità circostante, impedendo l'uso di Autodistruzione e di altre mosse esplosive.",
+ },
+ limber: {
+ name: "Scioltezza",
+ description: "Il corpo flessibile del Pokémon gli impedisce di subire gli effetti della paralisi.",
+ },
+ sandVeil: {
+ name: "Sabbiavelo",
+ description: "L'elusione aumenta durante le tempeste di sabbia.",
+ },
+ static: {
+ name: "Statico",
+ description: "Il Pokémon si ricopre di elettricità statica e può causare paralisi a chi è entrato in contatto con lui.",
+ },
+ voltAbsorb: {
+ name: "Assorbivolt",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Elettro, recupera PS anziché subire danni.",
+ },
+ waterAbsorb: {
+ name: "Assorbacqua",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Acqua, recupera PS anziché subire danni.",
+ },
+ oblivious: {
+ name: "Indifferenza",
+ description: "L'imperturbabilità del Pokémon lo protegge da infatuazioni, provocazioni e dall'effetto di Prepotenza.",
+ },
+ cloudNine: {
+ name: "Antimeteo",
+ description: "Neutralizza gli effetti di tutte le condizioni atmosferiche.",
+ },
+ compoundEyes: {
+ name: "Insettocchi",
+ description: "La precisione del Pokémon aumenta grazie ai suoi occhi composti.",
+ },
+ insomnia: {
+ name: "Insonnia",
+ description: "Il Pokémon soffre d'insonnia e non può addormentarsi.",
+ },
+ colorChange: {
+ name: "Cambiacolore",
+ description: "Il Pokémon acquisisce il tipo della mossa subita.",
+ },
+ immunity: {
+ name: "Immunità",
+ description: "L'immunità naturale del Pokémon gli impedisce di essere avvelenato.",
+ },
+ flashFire: {
+ name: "Fuocardore",
+ description: "Se il Pokémon subisce una mossa di tipo Fuoco, ne sfrutta il calore per potenziare le proprie mosse di tipo Fuoco.",
+ },
+ shieldDust: {
+ name: "Polvoscudo",
+ description: "Il Pokémon è protetto da uno strato di scaglie che annulla gli effetti aggiuntivi delle mosse subite.",
+ },
+ ownTempo: {
+ name: "Mente Locale",
+ description: "Il Pokémon affronta la vita al proprio ritmo e per questo non può essere confuso o subire l'effetto di Prepotenza.",
+ },
+ suctionCups: {
+ name: "Ventose",
+ description: "Il Pokémon resiste a strumenti e mosse che causano la sostituzione appiccicandosi al terreno con le ventose.",
+ },
+ intimidate: {
+ name: "Prepotenza",
+ description: "Quando il Pokémon entra in campo, la sua prepotenza crea soggezione, riducendo l'Attacco degli avversari intimiditi.",
+ },
+ shadowTag: {
+ name: "Pedinombra",
+ description: "Il Pokémon impedisce la fuga o la sostituzione degli avversari di cui calpesta l'ombra.",
+ },
+ roughSkin: {
+ name: "Cartavetro",
+ description: "Quando il Pokémon subisce un attacco, grazie alla sua pelle ruvida infligge a sua volta danni al Pokémon con cui è entrato in contatto.",
+ },
+ wonderGuard: {
+ name: "Magidifesa",
+ description: "Un potere misterioso protegge il Pokémon e lo rende vulnerabile solo alle mosse superefficaci.",
+ },
+ levitate: {
+ name: "Levitazione",
+ description: "La capacità di levitare conferisce al Pokémon immunità agli attacchi di tipo Terra.",
+ },
+ effectSpore: {
+ name: "Spargispora",
+ description: "Può causare avvelenamento, paralisi o sonno a chi attacca il Pokémon entrando in contatto con lui.",
+ },
+ synchronize: {
+ name: "Sincronismo",
+ description: "Se un Pokémon con questa abilità viene avvelenato, paralizzato o scottato, contagia con lo stesso problema di stato chi lo ha causato.",
+ },
+ clearBody: {
+ name: "Corpochiaro",
+ description: "Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.",
+ },
+ naturalCure: {
+ name: "Alternacura",
+ description: "Quando il Pokémon lascia il campo, guarisce dai problemi di stato.",
+ },
+ lightningRod: {
+ name: "Parafulmine",
+ description: "Il Pokémon attira e neutralizza le mosse di tipo Elettro, facendo aumentare il suo Attacco Speciale.",
+ },
+ sereneGrace: {
+ name: "Leggiadro",
+ description: "Rende più probabili gli effetti aggiuntivi delle mosse.",
+ },
+ swiftSwim: {
+ name: "Nuotovelox",
+ description: "Se piove, la Velocità aumenta.",
+ },
+ chlorophyll: {
+ name: "Clorofilla",
+ description: "Se la luce del sole è intensa, la Velocità aumenta.",
+ },
+ illuminate: {
+ name: "Risplendi",
+ description: "Illuminando l'ambiente circostante, impedisce che la precisione del pokémon sia diminuita.",
+ },
+ trace: {
+ name: "Traccia",
+ description: "Quando il Pokémon entra in campo, copia l'abilità di un avversario.",
+ },
+ hugePower: {
+ name: "Macroforza",
+ description: "Raddoppia la potenza degli attacchi fisici del Pokémon.",
+ },
+ poisonPoint: {
+ name: "Velenopunto",
+ description: "Può avvelenare chi entra in contatto con il Pokémon.",
+ },
+ innerFocus: {
+ name: "Forza Interiore",
+ description: "La capacità di concentrazione del Pokémon evita che tentenni per gli attacchi subiti e lo protegge dall'effetto di Prepotenza.",
+ },
+ magmaArmor: {
+ name: "Magmascudo",
+ description: "Il magma riveste il corpo del Pokémon impedendogli di venire congelato.",
+ },
+ waterVeil: {
+ name: "Idrovelo",
+ description: "Un velo d'acqua riveste il corpo del Pokémon impedendogli di venire scottato.",
+ },
+ magnetPull: {
+ name: "Magnetismo",
+ description: "La carica magnetica attrae i Pokémon di tipo Acciaio impedendogli la fuga o la sostituzione.",
+ },
+ soundproof: {
+ name: "Antisuono",
+ description: "Il Pokémon è dotato di una sorta di isolamento acustico che lo rende immune alle mosse basate sul suono.",
+ },
+ rainDish: {
+ name: "Copripioggia",
+ description: "Il Pokémon recupera PS quando piove.",
+ },
+ sandStream: {
+ name: "Sabbiafiume",
+ description: "Quando il Pokémon entra in campo, scatena una tempesta di sabbia.",
+ },
+ pressure: {
+ name: "Pressione",
+ description: "Il Pokémon mette pressione agli avversari, facendogli consumare più PP.",
+ },
+ thickFat: {
+ name: "Grassospesso",
+ description: "Il Pokémon è protetto da uno spesso strato di grasso che dimezza il danno causato da mosse di tipo Fuoco e Ghiaccio.",
+ },
+ earlyBird: {
+ name: "Sveglialampo",
+ description: "Anche se il Pokémon si addormenta, può risvegliarsi due volte più velocemente.",
+ },
+ flameBody: {
+ name: "Corpodifuoco",
+ description: "Può scottare chi entra in contatto con il Pokémon.",
+ },
+ runAway: {
+ name: "Fugafacile",
+ description: "Garantisce la fuga dai Pokémon selvatici.",
+ },
+ keenEye: {
+ name: "Sguardofermo",
+ description: "La vista acuta del Pokémon impedisce che la sua precisione diminuisca.",
+ },
+ hyperCutter: {
+ name: "Ipertaglio",
+ description: "Le possenti chele o tenaglie di cui è dotato il Pokémon fanno sì che il suo Attacco non possa essere diminuito da altri.",
+ },
+ pickup: {
+ name: "Raccolta",
+ description: "Il Pokémon può raccogliere strumenti usati da altri durante la lotta. Potrebbe raccogliere strumenti anche fuori dalla lotta.",
+ },
+ truant: {
+ name: "Pigrone",
+ description: "Quando il Pokémon usa una mossa, nel turno successivo si riposerà.",
+ },
+ hustle: {
+ name: "Tuttafretta",
+ description: "L'Attacco aumenta, ma la precisione diminuisce.",
+ },
+ cuteCharm: {
+ name: "Incantevole",
+ description: "Può causare infatuazione a chi entra in contatto con il Pokémon.",
+ },
+ plus: {
+ name: "Più",
+ description: "L'Attacco Speciale aumenta se ci sono alleati con l'abilità Meno o Più.",
+ },
+ minus: {
+ name: "Meno",
+ description: "L'Attacco Speciale aumenta se ci sono alleati con l'abilità Meno o Più.",
+ },
+ forecast: {
+ name: "Previsioni",
+ description: "Cambia il tipo del Pokémon in Acqua, Fuoco o Ghiaccio in base alle condizioni atmosferiche.",
+ },
+ stickyHold: {
+ name: "Antifurto",
+ description: "Gli strumenti restano appiccicati al corpo adesivo del Pokémon e non possono essere rubati.",
+ },
+ shedSkin: {
+ name: "Muta",
+ description: "Il Pokémon può guarire dai problemi di stato facendo la muta completa della pelle.",
+ },
+ guts: {
+ name: "Dentistretti",
+ description: "Se il Pokémon è affetto da un problema di stato, tira fuori la grinta e aumenta il proprio Attacco.",
+ },
+ marvelScale: {
+ name: "Pelledura",
+ description: "Se il Pokémon è affetto da un problema di stato, le squame sulla sua pelle si induriscono aumentando la sua Difesa.",
+ },
+ liquidOoze: {
+ name: "Melma",
+ description: "La melma del Pokémon infligge danni a chi la assorbe, facendogli perdere PS a causa del fortissimo tanfo.",
+ },
+ overgrow: {
+ name: "Erbaiuto",
+ description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Erba aumenta.",
+ },
+ blaze: {
+ name: "Aiutofuoco",
+ description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Fuoco aumenta.",
+ },
+ torrent: {
+ name: "Acquaiuto",
+ description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Acqua aumenta.",
+ },
+ swarm: {
+ name: "Aiutinsetto",
+ description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Coleottero aumenta.",
+ },
+ rockHead: {
+ name: "Testadura",
+ description: "Anche se il Pokémon usa delle mosse che causano un contraccolpo, non perde PS.",
+ },
+ drought: {
+ name: "Siccità",
+ description: "Quando il Pokémon entra in campo, la luce solare diventa intensa.",
+ },
+ arenaTrap: {
+ name: "Trappoarena",
+ description: "Impedisce la fuga agli avversari.",
+ },
+ vitalSpirit: {
+ name: "Spiritovivo",
+ description: "Il Pokémon è talmente vivace che non può addormentarsi.",
+ },
+ whiteSmoke: {
+ name: "Fumochiaro",
+ description: "Il Pokémon è protetto da un fumo chiaro che impedisce ai nemici di diminuire le sue statistiche.",
+ },
+ purePower: {
+ name: "Forzapura",
+ description: "L'Attacco del Pokémon raddoppia grazie alla sua padronanza delle tecniche yoga.",
+ },
+ shellArmor: {
+ name: "Guscioscudo",
+ description: "Il Pokémon è protetto da un guscio robusto che gli evita di subire brutti colpi.",
+ },
+ airLock: {
+ name: "Riparo",
+ description: "Neutralizza gli effetti di tutte le condizioni atmosferiche.",
+ },
+ tangledFeet: {
+ name: "Intricopiedi",
+ description: "Se il Pokémon è confuso, la sua elusione aumenta.",
+ },
+ motorDrive: {
+ name: "Elettrorapid",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Elettro, la neutralizza e sfrutta la carica elettrica per aumentare la propria Velocità.",
+ },
+ rivalry: {
+ name: "Antagonismo",
+ description: "Rende più forti contro nemici dello stesso sesso, ma più deboli contro nemici di sesso opposto.",
+ },
+ steadfast: {
+ name: "Cuordeciso",
+ description: "Se il Pokémon tentenna, il suo animo indomito si risveglia e la sua Velocità aumenta.",
+ },
+ snowCloak: {
+ name: "Mantelneve",
+ description: "Se grandina, l'elusione aumenta.",
+ },
+ gluttony: {
+ name: "Voracità",
+ description: "Il Pokémon non attende di aver perso molti PS per mangiare certe bacche, ma lo fa non appena i suoi PS scendono a metà o meno.",
+ },
+ angerPoint: {
+ name: "Grancollera",
+ description: "Se il Pokémon subisce un brutto colpo, monta su tutte le furie e il suo Attacco aumenta al massimo.",
+ },
+ unburden: {
+ name: "Agiltecnica",
+ description: "Se il Pokémon usa o perde uno strumento, la sua Velocità aumenta.",
+ },
+ heatproof: {
+ name: "Antifuoco",
+ description: "Il corpo termoresistente del Pokémon dimezza i danni che subisce dalle mosse di tipo Fuoco.",
+ },
+ simple: {
+ name: "Disinvoltura",
+ description: "Raddoppia le modifiche alle statistiche.",
+ },
+ drySkin: {
+ name: "Pellearsa",
+ description: "Il Pokémon recupera PS se piove o se subisce mosse di tipo Acqua, ma perde PS con la luce solare intensa. Subisce più danni da mosse di tipo Fuoco.",
+ },
+ download: {
+ name: "Download",
+ description: "Il Pokémon analizza Difesa e Difesa Speciale del nemico e, a seconda di qual è più bassa, aumenta il proprio Attacco o Attacco Speciale.",
+ },
+ ironFist: {
+ name: "Ferropugno",
+ description: "Potenzia le mosse che utilizzano pugni.",
+ },
+ poisonHeal: {
+ name: "Velencura",
+ description: "Se il Pokémon è avvelenato, recupera PS anziché perderli.",
+ },
+ adaptability: {
+ name: "Adattabilità",
+ description: "Potenzia di molto le mosse dello stesso tipo del Pokémon.",
+ },
+ skillLink: {
+ name: "Abillegame",
+ description: "Le mosse multicolpo mandano a segno sempre il massimo dei colpi possibili.",
+ },
+ hydration: {
+ name: "Idratazione",
+ description: "Se piove, il Pokémon guarisce dai problemi di stato.",
+ },
+ solarPower: {
+ name: "Solarpotere",
+ description: "Se la luce del sole è intensa, l'Attacco Speciale aumenta, ma il Pokémon perde PS a ogni turno.",
+ },
+ quickFeet: {
+ name: "Piedisvelti",
+ description: "Se il Pokémon è affetto da un problema di stato, la Velocità aumenta.",
+ },
+ normalize: {
+ name: "Normalità",
+ description: "Tutte le mosse del Pokémon diventano di tipo Normale e la loro potenza aumenta un po'.",
+ },
+ sniper: {
+ name: "Cecchino",
+ description: "Aumenta ulteriormente i danni inflitti dai brutti colpi.",
+ },
+ magicGuard: {
+ name: "Magicscudo",
+ description: "Il Pokémon subisce danni solo dagli attacchi.",
+ },
+ noGuard: {
+ name: "Nullodifesa",
+ description: "Il Pokémon e chiunque lo attacchi abbassano la guardia e le loro mosse vanno sempre a segno.",
+ },
+ stall: {
+ name: "Rallentatore",
+ description: "Il Pokémon agisce sempre per ultimo.",
+ },
+ technician: {
+ name: "Tecnico",
+ description: "Potenzia le mosse più deboli del Pokémon.",
+ },
+ leafGuard: {
+ name: "Fogliamanto",
+ description: "Se la luce del sole è intensa, evita i problemi di stato.",
+ },
+ klutz: {
+ name: "Impaccio",
+ description: "Il Pokémon non può usare lo strumento che ha con sé.",
+ },
+ moldBreaker: {
+ name: "Rompiforma",
+ description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.",
+ },
+ superLuck: {
+ name: "Supersorte",
+ description: "L'incredibile fortuna del Pokémon aumenta la sua probabilità di infliggere brutti colpi.",
+ },
+ aftermath: {
+ name: "Scoppio",
+ description: "Chi manda KO questo Pokémon con un attacco diretto subisce dei danni.",
+ },
+ anticipation: {
+ name: "Presagio",
+ description: "Rivela se il nemico ha mosse pericolose.",
+ },
+ forewarn: {
+ name: "Premonizione",
+ description: "Quando il Pokémon entra in campo, rivela una delle mosse del nemico.",
+ },
+ unaware: {
+ name: "Imprudenza",
+ description: "Quando il Pokémon attacca, ignora le modifiche alle statistiche del nemico.",
+ },
+ tintedLens: {
+ name: "Lentifumé",
+ description: "Permette alle mosse non molto efficaci di infliggere danni normalmente.",
+ },
+ filter: {
+ name: "Filtro",
+ description: "Riduce i danni subiti dalle mosse superefficaci.",
+ },
+ slowStart: {
+ name: "Lentoinizio",
+ description: "Dimezza per cinque turni l'Attacco e la Velocità.",
+ },
+ scrappy: {
+ name: "Nervisaldi",
+ description: "Permette di colpire Pokémon di tipo Spettro con mosse di tipo Normale e Lotta.",
+ },
+ stormDrain: {
+ name: "Acquascolo",
+ description: "Il Pokémon attira e neutralizza le mosse di tipo Acqua e fa aumentare il proprio Attacco Speciale.",
+ },
+ iceBody: {
+ name: "Corpogelo",
+ description: "Se grandina, il Pokémon recupera PS.",
+ },
+ solidRock: {
+ name: "Solidroccia",
+ description: "Riduce i danni subiti dalle mosse superefficaci.",
+ },
+ snowWarning: {
+ name: "Scendineve",
+ description: "Quando il Pokémon entra in campo, causa l'inizio di una nevicata.",
+ },
+ honeyGather: {
+ name: "Mielincetta",
+ description: "Il Pokémon può raccogliere del Miele alla fine della lotta.",
+ },
+ frisk: {
+ name: "Indagine",
+ description: "Quando il Pokémon entra in campo, rivela lo strumento del nemico.",
+ },
+ reckless: {
+ name: "Temerarietà",
+ description: "Potenzia le mosse che causano contraccolpo.",
+ },
+ multitype: {
+ name: "Multitipo",
+ description: "Cambia il tipo del Pokémon a seconda della lastra o del Cristallo Z che ha con sé.",
+ },
+ flowerGift: {
+ name: "Regalfiore",
+ description: "Se la luce del sole è intensa, aumenta l'Attacco e la Difesa Speciale del Pokémon e dei suoi alleati.",
+ },
+ badDreams: {
+ name: "Sogniamari",
+ description: "Infligge danni ai nemici addormentati.",
+ },
+ pickpocket: {
+ name: "Arraffalesto",
+ description: "Se il Pokémon viene colpito da un attacco diretto, ruba lo strumento di chi lo ha attaccato.",
+ },
+ sheerForce: {
+ name: "Forzabruta",
+ description: "Aumenta la potenza delle mosse, ma ne annulla gli effetti aggiuntivi.",
+ },
+ contrary: {
+ name: "Inversione",
+ description: "Le modifiche alle statistiche hanno effetto inverso: le statistiche aumentano quando dovrebbero diminuire e viceversa.",
+ },
+ unnerve: {
+ name: "Agitazione",
+ description: "Il nemico viene intimidito e non può mangiare bacche.",
+ },
+ defiant: {
+ name: "Agonismo",
+ description: "L'Attacco aumenta di molto quando le statistiche diminuiscono a causa di un nemico.",
+ },
+ defeatist: {
+ name: "Sconforto",
+ description: "Quando i PS scendono a metà o meno, il Pokémon si scoraggia e l'Attacco e l'Attacco Speciale vengono dimezzati.",
+ },
+ cursedBody: {
+ name: "Corpofunesto",
+ description: "Può bloccare la mossa subita dal Pokémon.",
+ },
+ healer: {
+ name: "Curacuore",
+ description: "A volte cura i problemi di stato degli alleati.",
+ },
+ friendGuard: {
+ name: "Amicoscudo",
+ description: "I danni inflitti agli alleati del Pokémon vengono ridotti.",
+ },
+ weakArmor: {
+ name: "Sottilguscio",
+ description: "Se il Pokémon subisce danni da mosse fisiche, la Difesa diminuisce e la Velocità aumenta di molto.",
+ },
+ heavyMetal: {
+ name: "Metalpesante",
+ description: "Raddoppia il peso del Pokémon.",
+ },
+ lightMetal: {
+ name: "Metalleggero",
+ description: "Dimezza il peso del Pokémon.",
+ },
+ multiscale: {
+ name: "Multisquame",
+ description: "Se i PS sono al massimo, riduce il danno subito.",
+ },
+ toxicBoost: {
+ name: "Velenimpeto",
+ description: "Se il Pokémon è avvelenato, la potenza delle sue mosse fisiche aumenta.",
+ },
+ flareBoost: {
+ name: "Bruciaimpeto",
+ description: "Se il Pokémon è scottato, la potenza delle sue mosse speciali aumenta.",
+ },
+ harvest: {
+ name: "Coglibacche",
+ description: "Può ricreare una bacca utilizzata.",
+ },
+ telepathy: {
+ name: "Telepatia",
+ description: "Il Pokémon prevede ed evita gli attacchi degli alleati.",
+ },
+ moody: {
+ name: "Altalena",
+ description: "A ogni turno, aumenta di molto una statistica e ne riduce un'altra.",
+ },
+ overcoat: {
+ name: "Copricapo",
+ description: "Rende immuni ai danni da grandine e tempesta di sabbia, alle mosse Spora, Cottonspora, Sonnifero, Paralizzante e alle mosse “polvere”.",
+ },
+ poisonTouch: {
+ name: "Velentocco",
+ description: "Il Pokémon può avvelenare il nemico al solo contatto.",
+ },
+ regenerator: {
+ name: "Rigenergia",
+ description: "Il Pokémon recupera un po' di PS quando lascia il campo.",
+ },
+ bigPecks: {
+ name: "Pettinfuori",
+ description: "Evita che la Difesa diminuisca.",
+ },
+ sandRush: {
+ name: "Remasabbia",
+ description: "Se c'è una tempesta di sabbia, la Velocità aumenta.",
+ },
+ wonderSkin: {
+ name: "Splendicute",
+ description: "Il Pokémon resiste più facilmente alle mosse di stato.",
+ },
+ analytic: {
+ name: "Ponderazione",
+ description: "Se il Pokémon agisce per ultimo, la potenza della mossa aumenta.",
+ },
+ illusion: {
+ name: "Illusione",
+ description: "Il Pokémon entra in campo con le sembianze dell'ultimo Pokémon della squadra.",
+ },
+ imposter: {
+ name: "Sosia",
+ description: "Il Pokémon si trasforma nel nemico che ha davanti.",
+ },
+ infiltrator: {
+ name: "Intrapasso",
+ description: "Il Pokémon attacca evitando le barriere e il sostituto del nemico.",
+ },
+ mummy: {
+ name: "Mummia",
+ description: "Al contatto con il Pokémon, l'abilità del nemico diventa Mummia.",
+ },
+ moxie: {
+ name: "Arroganza",
+ description: "Quando manda un nemico KO, il Pokémon si fa sicuro di sé e aumenta il proprio Attacco.",
+ },
+ justified: {
+ name: "Giustizia",
+ description: "Quando il Pokémon viene colpito da una mossa di tipo Buio, il suo forte senso di giustizia fa sì che l'Attacco aumenti.",
+ },
+ rattled: {
+ name: "Paura",
+ description: "Le mosse di tipo Buio, Spettro e Coleottero spaventano il Pokémon aumentandone la Velocità.",
+ },
+ magicBounce: {
+ name: "Magispecchio",
+ description: "Il Pokémon respinge al mittente le mosse di stato senza subirne gli effetti.",
+ },
+ sapSipper: {
+ name: "Mangiaerba",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Erba, la neutralizza e aumenta il proprio Attacco.",
+ },
+ prankster: {
+ name: "Burla",
+ description: "Le mosse di stato del Pokémon acquistano priorità alta.",
+ },
+ sandForce: {
+ name: "Silicoforza",
+ description: "Potenzia le mosse di tipo Roccia, Terra e Acciaio durante le tempeste di sabbia.",
+ },
+ ironBarbs: {
+ name: "Spineferrate",
+ description: "Se il Pokémon viene colpito da un attacco diretto, infligge danni a sua volta con le sue spine di ferro.",
+ },
+ zenMode: {
+ name: "Stato Zen",
+ description: "Cambia la forma del Pokémon se i PS scendono a metà o meno.",
+ },
+ victoryStar: {
+ name: "Vittorstella",
+ description: "Aumenta la precisione di tutta la squadra.",
+ },
+ turboblaze: {
+ name: "Piroturbina",
+ description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.",
+ },
+ teravolt: {
+ name: "Teravolt",
+ description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.",
+ },
+ aromaVeil: {
+ name: "Aromavelo",
+ description: "Protegge tutta la squadra da effetti che ne limitano la libertà di scelta delle mosse.",
+ },
+ flowerVeil: {
+ name: "Fiorvelo",
+ description: "Rende gli alleati di tipo Erba immuni alla diminuzione delle statistiche e ai problemi di stato.",
+ },
+ cheekPouch: {
+ name: "Guancegonfie",
+ description: "Quando il Pokémon mangia una bacca, recupera anche dei PS.",
+ },
+ protean: {
+ name: "Mutatipo",
+ description: "Cambia il tipo del Pokémon in quello della mossa che usa.",
+ },
+ furCoat: {
+ name: "Foltopelo",
+ description: "Dimezza il danno subito dalle mosse fisiche.",
+ },
+ magician: {
+ name: "Prestigiatore",
+ description: "Quando chi la usa colpisce un Pokémon con una mossa, gli ruba lo strumento.",
+ },
+ bulletproof: {
+ name: "Antiproiettile",
+ description: "Protegge da alcune mosse a base di proiettili e bombe.",
+ },
+ competitive: {
+ name: "Tenacia",
+ description: "L'Attacco Speciale aumenta di molto quando le statistiche diminuiscono a causa di un nemico.",
+ },
+ strongJaw: {
+ name: "Ferromascella",
+ description: "La robusta mascella del Pokémon permette morsi molto potenti.",
+ },
+ refrigerate: {
+ name: "Pellegelo",
+ description: "Le mosse di tipo Normale diventano di tipo Ghiaccio e la loro potenza aumenta un po'.",
+ },
+ sweetVeil: {
+ name: "Dolcevelo",
+ description: "Rende il Pokémon e i suoi alleati immuni al sonno.",
+ },
+ stanceChange: {
+ name: "Accendilotta",
+ description: "Assume la Forma Spada se usa una mossa d'attacco e la Forma Scudo se usa Scudo Reale.",
+ },
+ galeWings: {
+ name: "Aliraffica",
+ description: "Se il Pokémon ha tutti i PS, le sue mosse di tipo Volante acquistano priorità alta.",
+ },
+ megaLauncher: {
+ name: "Megalancio",
+ description: 'Potenzia le mosse "pulsar", Forzasfera e Ondasana.',
+ },
+ grassPelt: {
+ name: "Peloderba",
+ description: "In presenza di un Campo Erboso, la Difesa aumenta.",
+ },
+ symbiosis: {
+ name: "Simbiosi",
+ description: "Se un alleato usa uno strumento, il Pokémon gli passa il proprio.",
+ },
+ toughClaws: {
+ name: "Unghiedure",
+ description: "Potenzia le mosse che causano un contatto fisico.",
+ },
+ pixilate: {
+ name: "Pellefolletto",
+ description: "Le mosse di tipo Normale diventano di tipo Folletto e la loro potenza aumenta un po'.",
+ },
+ gooey: {
+ name: "Viscosità",
+ description: "Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l'ha colpito diminuisce.",
+ },
+ aerilate: {
+ name: "Pellecielo",
+ description: "Le mosse di tipo Normale diventano di tipo Volante e la loro potenza aumenta un po'.",
+ },
+ parentalBond: {
+ name: "Amorefiliale",
+ description: "Il Pokémon e il suo piccolo attaccano insieme.",
+ },
+ darkAura: {
+ name: "Auratetra",
+ description: "Potenzia le mosse di tipo Buio di tutti i Pokémon.",
+ },
+ fairyAura: {
+ name: "Aurafolletto",
+ description: "Potenzia le mosse di tipo Folletto di tutti i Pokémon.",
+ },
+ auraBreak: {
+ name: "Frangiaura",
+ description: "Inverte gli effetti di tutte le aure riducendone la potenza.",
+ },
+ primordialSea: {
+ name: "Mare Primordiale",
+ description: "Crea un clima che rende inefficaci gli attacchi di tipo Fuoco.",
+ },
+ desolateLand: {
+ name: "Terra Estrema",
+ description: "Crea un clima che rende inefficaci gli attacchi di tipo Acqua.",
+ },
+ deltaStream: {
+ name: "Flusso Delta",
+ description: "Crea un clima che annulla i punti deboli del tipo Volante.",
+ },
+ stamina: {
+ name: "Sopportazione",
+ description: "Se il Pokémon subisce un attacco, la sua Difesa aumenta.",
+ },
+ wimpOut: {
+ name: "Fuggifuggi",
+ description: "Se i PS scendono a metà o meno, il Pokémon si fa prendere dalla paura e abbandona la lotta in tutta fretta.",
+ },
+ emergencyExit: {
+ name: "Passoindietro",
+ description: "Se i PS scendono a metà o meno, il Pokémon abbandona la lotta per sfuggire al pericolo.",
+ },
+ waterCompaction: {
+ name: "Idrorinforzo",
+ description: "Se il Pokémon subisce una mossa di tipo Acqua, la sua Difesa aumenta di molto.",
+ },
+ merciless: {
+ name: "Spietatezza",
+ description: "Gli attacchi sferrati su un bersaglio avvelenato producono sempre brutti colpi.",
+ },
+ shieldsDown: {
+ name: "Scudosoglia",
+ description: "Se i PS scendono a metà o meno, il guscio si rompe e il Pokémon si prepara all'offensiva.",
+ },
+ stakeout: {
+ name: "Sorveglianza",
+ description: "Raddoppia i danni inflitti a un bersaglio che è appena entrato in campo per sostituire un altro Pokémon.",
+ },
+ waterBubble: {
+ name: "Bolladacqua",
+ description: "Riduce i danni subiti dalle mosse di tipo Fuoco e rende immuni alle scottature.",
+ },
+ steelworker: {
+ name: "Tempracciaio",
+ description: "Aumenta la potenza delle mosse di tipo Acciaio.",
+ },
+ berserk: {
+ name: "Furore",
+ description: "Se i PS scendono a metà o meno a causa di un attacco, l'Attacco Speciale aumenta.",
+ },
+ slushRush: {
+ name: "Spalaneve",
+ description: "Se grandina, la Velocità aumenta.",
+ },
+ longReach: {
+ name: "Distacco",
+ description: "Il Pokémon è in grado di usare tutte le sue mosse senza entrare in contatto diretto con il bersaglio.",
+ },
+ liquidVoice: {
+ name: "Idrovoce",
+ description: "Le mosse del Pokémon basate sul suono diventano di tipo Acqua.",
+ },
+ triage: {
+ name: "Primacura",
+ description: "Le mosse che ripristinano direttamente i PS del Pokémon acquistano priorità alta.",
+ },
+ galvanize: {
+ name: "Pellelettro",
+ description: "Le mosse di tipo Normale diventano di tipo Elettro e la loro potenza aumenta un po'.",
+ },
+ surgeSurfer: {
+ name: "Codasurf",
+ description: "In presenza di un Campo Elettrico, la Velocità raddoppia.",
+ },
+ schooling: {
+ name: "Banco",
+ description: "Quando ha molti PS, il Pokémon forma un banco con i propri simili e si rafforza. Quando ne ha pochi, il banco si disperde.",
+ },
+ disguise: {
+ name: "Fantasmanto",
+ description: "Il panno che ricopre il Pokémon lo protegge da un singolo attacco.",
+ },
+ battleBond: {
+ name: "Morfosintonia",
+ description: "Se il Pokémon manda KO un nemico, il legame con l'Allenatore si rafforza, attivando la trasformazione in Greninja Forma Ash. Acqualame si potenzia.",
+ },
+ powerConstruct: {
+ name: "Sciamefusione",
+ description: "Se i PS del Pokémon scendono a metà o meno, le cellule si raggruppano e gli permettono di assumere la Forma Perfetta.",
+ },
+ corrosion: {
+ name: "Corrosione",
+ description: "Il Pokémon è in grado di avvelenare il bersaglio anche se questo è di tipo Acciaio o Veleno.",
+ },
+ comatose: {
+ name: "Sonno Assoluto",
+ description: "Il Pokémon si trova in un costante stato di dormiveglia che gli impedisce di svegliarsi. Può attaccare anche da addormentato.",
+ },
+ queenlyMajesty: {
+ name: "Regalità",
+ description: "L'aura di regalità del Pokémon impedisce al nemico di attaccarlo con mosse che hanno priorità alta.",
+ },
+ innardsOut: {
+ name: "Espellinterno",
+ description: "Se il Pokémon viene mandato KO da un attacco, infligge a chi lo ha sferrato tanti danni quanti erano i suoi PS prima di ricevere il colpo.",
+ },
+ dancer: {
+ name: "Sincrodanza",
+ description: "Permette al Pokémon di copiare immediatamente qualsiasi mossa basata sulla danza usata da un altro Pokémon in campo.",
+ },
+ battery: {
+ name: "Batteria",
+ description: "Aumenta la potenza delle mosse speciali degli alleati.",
+ },
+ fluffy: {
+ name: "Morbidone",
+ description: "Dimezza il danno causato dagli attacchi diretti di un nemico, ma raddoppia quello subito dalle mosse di tipo Fuoco.",
+ },
+ dazzling: {
+ name: "Corposgargiante",
+ description: "Il Pokémon sbalordisce il nemico e non gli permette di attaccarlo con mosse che hanno priorità alta.",
+ },
+ soulHeart: {
+ name: "Cuoreanima",
+ description: "Aumenta l'Attacco Speciale ogni volta che un Pokémon va KO.",
+ },
+ tanglingHair: {
+ name: "Boccolidoro",
+ description: "Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l'ha colpito diminuisce.",
+ },
+ receiver: {
+ name: "Ricezione",
+ description: "Il Pokémon acquisisce l'abilità di un alleato andato KO.",
+ },
+ powerOfAlchemy: {
+ name: "Forza Chimica",
+ description: "Il Pokémon trasforma la propria abilità in quella di un alleato andato KO.",
+ },
+ beastBoost: {
+ name: "Ultraboost",
+ description: "Quando il Pokémon manda KO un altro Pokémon, aumenta la propria statistica di punta.",
+ },
+ rksSystem: {
+ name: "Sistema Primevo",
+ description: "Il tipo del Pokémon cambia in base alla ROM installata.",
+ },
+ electricSurge: {
+ name: "Elettrogenesi",
+ description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Elettrico.",
+ },
+ psychicSurge: {
+ name: "Psicogenesi",
+ description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Psichico.",
+ },
+ mistySurge: {
+ name: "Nebbiogenesi",
+ description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Nebbioso.",
+ },
+ grassySurge: {
+ name: "Erbogenesi",
+ description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Erboso.",
+ },
+ fullMetalBody: {
+ name: "Metalprotezione",
+ description: "Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.",
+ },
+ shadowShield: {
+ name: "Spettroguardia",
+ description: "Se i PS sono al massimo, riduce il danno subito.",
+ },
+ prismArmor: {
+ name: "Scudoprisma",
+ description: "Riduce i danni subiti dalle mosse superefficaci.",
+ },
+ neuroforce: {
+ name: "Cerebroforza",
+ description: "Potenzia le mosse superefficaci.",
+ },
+ intrepidSword: {
+ name: "Spada Indomita",
+ description: "Quando il Pokémon entra in campo, il suo Attacco aumenta.",
+ },
+ dauntlessShield: {
+ name: "Scudo Saldo",
+ description: "Quando il Pokémon entra in campo, la sua Difesa aumenta.",
+ },
+ libero: {
+ name: "Libero",
+ description: "Cambia il tipo del Pokémon in quello della mossa che usa.",
+ },
+ ballFetch: {
+ name: "Raccattapalle",
+ description: "Se il Pokémon non ha uno strumento con sé, raccoglie la Poké Ball del primo tentativo di cattura fallito.",
+ },
+ cottonDown: {
+ name: "Lanugine",
+ description: "Se il Pokémon subisce un attacco, sparge della lanugine che diminuisce la Velocità di tutti i Pokémon in campo tranne la sua.",
+ },
+ propellerTail: {
+ name: "Elicopinna",
+ description: "Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.",
+ },
+ mirrorArmor: {
+ name: "Blindospecchio",
+ description: "Rimanda al mittente le diminuzioni alle statistiche subite.",
+ },
+ gulpMissile: {
+ name: "Inghiottimissile",
+ description: "Quando usa Surf o Sub, il Pokémon cattura una preda. Se subisce dei danni, la sputa fuori per attaccare.",
+ },
+ stalwart: {
+ name: "Volontà di Ferro",
+ description: "Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.",
+ },
+ steamEngine: {
+ name: "Vapormacchina",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Acqua o Fuoco, la sua Velocità aumenta moltissimo.",
+ },
+ punkRock: {
+ name: "Punk Rock",
+ description: "Aumenta la potenza delle mosse basate sul suono. Inoltre, dimezza i danni subiti dal Pokémon se viene colpito da tali mosse.",
+ },
+ sandSpit: {
+ name: "Sputasabbia",
+ description: "Quando il Pokémon viene colpito da un attacco, scatena una tempesta di sabbia.",
+ },
+ iceScales: {
+ name: "Geloscaglie",
+ description: "Scaglie di ghiaccio proteggono il Pokémon dalle mosse speciali, dimezzandone i danni subiti.",
+ },
+ ripen: {
+ name: "Maturazione",
+ description: "Fa maturare le bacche raddoppiandone gli effetti.",
+ },
+ iceFace: {
+ name: "Gelofaccia",
+ description: "Grazie al ghiaccio sulla testa, il Pokémon può incassare i danni causati da mosse fisiche, ma cambia forma. Torna al suo stato originale quando grandina.",
+ },
+ powerSpot: {
+ name: "Fonte Energetica",
+ description: "Potenzia le mosse di chi si trova nelle immediate vicinanze.",
+ },
+ mimicry: {
+ name: "Mimetismo",
+ description: "Il tipo del Pokémon cambia a seconda dello stato del campo.",
+ },
+ screenCleaner: {
+ name: "Annullabarriere",
+ description: "Quando il Pokémon entra in campo, annulla l'effetto di Schermoluce, Riflesso e Velaurora sia per i nemici che per gli alleati.",
+ },
+ steelySpirit: {
+ name: "Spiritoferreo",
+ description: "Potenzia gli attacchi di tipo Acciaio degli alleati.",
+ },
+ perishBody: {
+ name: "Ultimotocco",
+ description: "Se il Pokémon viene colpito da un attacco diretto, dopo tre turni va KO assieme a chi lo ha attaccato. Se uno dei due viene sostituito, non va KO.",
+ },
+ wanderingSpirit: {
+ name: "Anima Errante",
+ description: "Se il Pokémon subisce un attacco diretto, scambia la sua abilità con quella di chi lo ha colpito.",
+ },
+ gorillaTactics: {
+ name: "Vigorilla",
+ description: "Aumenta l'Attacco ma costringe il Pokémon a usare solo la prima mossa selezionata.",
+ },
+ neutralizingGas: {
+ name: "Gas Reagente",
+ description: "Se in campo c'è un Pokémon con Gas Reagente, gli effetti delle abilità di tutti gli altri Pokémon vengono annullati o non si attivano.",
+ },
+ pastelVeil: {
+ name: "Pastelvelo",
+ description: "Protegge il Pokémon e gli alleati dai problemi di stato causati dal veleno.",
+ },
+ hungerSwitch: {
+ name: "Pancialterna",
+ description: "Alla fine di ogni turno cambia forma, alternando tra Motivo Panciapiena e Motivo Panciavuota.",
+ },
+ quickDraw: {
+ name: "Pugni Invisibili",
+ description: "Quando il Pokémon utilizza un attacco diretto, gli effetti di mosse protettive vengono ignorati.",
+ },
+ unseenFist: {
+ name: "Colpolesto",
+ description: "A volte permette al Pokémon di agire per primo.",
+ },
+ curiousMedicine: {
+ name: "Stranofarmaco",
+ description: "Quando il Pokémon entra in campo, sparge un farmaco dalla conchiglia che annulla le modifiche alle statistiche degli alleati.",
+ },
+ transistor: {
+ name: "Transistor",
+ description: "Potenzia le mosse di tipo Elettro.",
+ },
+ dragonsMaw: {
+ name: "Dragomascelle",
+ description: "Potenzia le mosse di tipo Drago.",
+ },
+ chillingNeigh: {
+ name: "Nitrito Bianco",
+ description: "Quando manda KO il nemico, emette un nitrito agghiacciante, aumentando il proprio Attacco.",
+ },
+ grimNeigh: {
+ name: "Nitrito Nero",
+ description: "Quando manda KO il nemico, emette un nitrito spettrale, aumentando il proprio Attacco Speciale.",
+ },
+ asOneGlastrier: {
+ name: "Sintonia Equina",
+ description: "Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Bianco di Glastrier",
+ },
+ asOneSpectrier: {
+ name: "Sintonia Equina",
+ description: "Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Nero di Spectrier.",
+ },
+ lingeringAroma: {
+ name: "Odore Tenace",
+ description: "L'abilità di chi entra in contatto con il Pokémon diventa Odore Tenace.",
+ },
+ seedSower: {
+ name: "Spargisemi",
+ description: "Se il Pokémon subisce un attacco, il terreno entra nello stato di Campo Erboso.",
+ },
+ thermalExchange: {
+ name: "Termoscambio",
+ description: "Impedisce al Pokémon di venire scottato e aumenta il suo Attacco se subisce una mossa di tipo Fuoco.",
+ },
+ angerShell: {
+ name: "Iraguscio",
+ description: "Se un attacco subìto porta i PS a metà o meno, la rabbia del Pokémon ne riduce la Difesa e la Difesa Speciale ma ne aumenta l'Attacco, l'Attacco Speciale e la Velocità.",
+ },
+ purifyingSalt: {
+ name: "Sale Purificante",
+ description: "Protegge il Pokémon dai problemi di stato e dimezza il danno causato dalle mosse di tipo Spettro.",
+ },
+ wellBakedBody: {
+ name: "Bentostato",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Fuoco, la neutralizza e aumenta di molto la propria Difesa.",
+ },
+ windRider: {
+ name: "Vento Propizio",
+ description: "L'Attacco aumenta se vengono usate mosse come Ventoincoda o se il Pokémon è colpito da una mossa basata sul vento, che viene inoltre neutralizzata.",
+ },
+ guardDog: {
+ name: "Cane da Guardia",
+ description: "Il Pokémon resiste a strumenti e mosse che causano la sostituzione. Se subisce l'effetto di Prepotenza, il suo Attacco aumenta.",
+ },
+ rockyPayload: {
+ name: "Portamassi",
+ description: "Aumenta la potenza delle mosse di tipo Roccia.",
+ },
+ windPower: {
+ name: "Energia Eolica",
+ description: "Se il Pokémon è esposto a una mossa basata sul vento, si carica di elettricità.",
+ },
+ zeroToHero: {
+ name: "Supercambio",
+ description: "Se il Pokémon lascia il campo, assume la Forma Possente.",
+ },
+ commander: {
+ name: "Torre di Comando",
+ description: "Quando il Pokémon entra in campo ed è presente un Dondozo alleato, si ficca nella bocca di quest'ultimo e da lì impartisce ordini.",
+ },
+ electromorphosis: {
+ name: "Convertivolt",
+ description: "Se il Pokémon subisce danni, si carica di elettricità.",
+ },
+ protosynthesis: {
+ name: "Paleoattivazione",
+ description: "Quando il Pokémon ha con sé una Capsula energetica o la luce solare è intensa, la sua statistica più alta aumenta.",
+ },
+ quarkDrive: {
+ name: "Carica Quark",
+ description: "Quando il Pokémon ha con sé una Capsula energetica o è in presenza di un Campo Elettrico, la sua statistica più alta aumenta.",
+ },
+ goodAsGold: {
+ name: "Corpo Aureo",
+ description: "Grazie al robusto e inossidabile corpo d'oro, il Pokémon è immune alle mosse di stato sferrate da altri.",
+ },
+ vesselOfRuin: {
+ name: "Vaso Nefasto",
+ description: "L'Attacco Speciale degli altri Pokémon viene indebolito dal potere del vaso che richiama le disgrazie.",
+ },
+ swordOfRuin: {
+ name: "Spada Nefasta",
+ description: "La Difesa degli altri Pokémon viene indebolita dal potere della spada che richiama le disgrazie.",
+ },
+ tabletsOfRuin: {
+ name: "Amuleto Nefasto",
+ description: "L'Attacco degli altri Pokémon viene indebolito dal potere delle tavolette che richiamano le disgrazie.",
+ },
+ beadsOfRuin: {
+ name: "Monile Nefasto",
+ description: "La Difesa Speciale degli altri Pokémon viene indebolita dal potere dei gioielli che richiamano le disgrazie.",
+ },
+ orichalcumPulse: {
+ name: "Ritmo d'Oricalco",
+ description: "Quando il Pokémon entra in campo, la luce solare diventa intensa. Con la luce solare intensa l'Attacco del Pokémon aumenta grazie al battito dell'antichità.",
+ },
+ hadronEngine: {
+ name: "Motore Adronico",
+ description: "Quando il Pokémon entra in campo, il terreno entra nello stato di Campo Elettrico. In presenza di Campo Elettrico l'Attacco Speciale aumenta grazie al motore del futuro.",
+ },
+ opportunist: {
+ name: "Scrocco",
+ description: "Quando la statistica di un avversario viene aumentata, il Pokémon se ne approfitta e aumenta anche la propria.",
+ },
+ cudChew: {
+ name: "Ruminante",
+ description: "Se il Pokémon mangia una bacca, alla fine del turno successivo questa risale dal suo stomaco per essere mangiata una seconda volta.",
+ },
+ sharpness: {
+ name: "Affilama",
+ description: "Aumenta la potenza delle mosse che tagliano il bersaglio.",
+ },
+ supremeOverlord: {
+ name: "Generale Supremo",
+ description: "Quando il Pokémon entra in campo, il suo Attacco e il suo Attacco Speciale aumentano un po' per ciascuno dei suoi compagni di squadra andati KO.",
+ },
+ costar: {
+ name: "Coprotagonismo",
+ description: "Quando il Pokémon entra in campo, copia le modifiche alle statistiche dell'alleato.",
+ },
+ toxicDebris: {
+ name: "Mantossina",
+ description: "Se il Pokémon subisce danni da mosse fisiche, piazza ai piedi degli avversari una trappola di punte velenose.",
+ },
+ armorTail: {
+ name: "Codarmatura",
+ description: "La misteriosa coda che avvolge la testa del Pokémon impedisce agli avversari di usare mosse che hanno priorità alta contro di lui o i suoi alleati.",
+ },
+ earthEater: {
+ name: "Mangiaterra",
+ description: "Se il Pokémon viene colpito da una mossa di tipo Terra, recupera PS anziché subire danni.",
+ },
+ myceliumMight: {
+ name: "Micoforza",
+ description: "Quando usa mosse di stato, il Pokémon agisce più lentamente, ma ignora l'abilità del bersaglio se questa ha effetto su tali mosse.",
+ },
+ mindsEye: {
+ name: "Ospitalità",
+ description: "Quando un Pokémon con questa abilità entra in campo ricopre di attenzioni l'alleato, restituendogli un po' dei suoi PS.",
+ },
+ supersweetSyrup: {
+ name: "Occhio Interiore",
+ description: "Permette di colpire bersagli di tipo Spettro con mosse di tipo Normale e Lotta, di ignorare modifiche alla loro elusione e di non veder ridotta la propria precisione.",
+ },
+ hospitality: {
+ name: "Albergamemorie",
+ description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Turchese e aumentando la propria Velocità.",
+ },
+ toxicChain: {
+ name: "Albergamemorie",
+ description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Pozzo e aumentando la propria Difesa Speciale.",
+ },
+ embodyAspectTeal: {
+ name: "Albergamemorie",
+ description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Focolare e aumentando il proprio Attacco.",
+ },
+ embodyAspectWellspring: {
+ name: "Albergamemorie",
+ description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Fondamenta e aumentando la propria Difesa.",
+ },
+ embodyAspectHearthflame: {
+ name: "Catena Tossica",
+ description: "Quando il Pokémon colpisce il bersaglio con una mossa, può iperavvelenarlo grazie al potere della catena intrisa di tossine.",
+ },
+ embodyAspectCornerstone: {
+ name: "Sciroppo Sublime",
+ description: "La prima volta che il Pokémon entra in campo, spande un odore dolciastro che diminuisce l'elusione degli avversari.",
+ },
+ teraShift: {
+ name: "Teramorfosi",
+ description: "Quando il Pokémon entra in campo, assorbe l'energia circostante e assume la Forma Teracristal.",
+ },
+ teraShell: {
+ name: "Teraguscio",
+ description: "Grazie al suo guscio che racchiude il potere di tutti i tipi, se il Pokémon ha tutti i PS, le mosse che subisce non saranno molto efficaci.",
+ },
+ teraformZero: {
+ name: "Zeroformazione",
+ description: "Quando assume la Forma Astrale, Terapagos azzera tutti gli effetti delle condizioni atmosferiche e lo stato del terreno di lotta grazie al suo potere occulto.",
+ },
+ poisonPuppeteer: {
+ name: " Malia Tossica",
+ description: "I Pokémon avvelenati dalle mosse di Pecharunt entreranno anche in stato di confusione.",
+ },
+} as const;
diff --git a/src/locales/it/battle.ts b/src/locales/it/battle.ts
new file mode 100644
index 000000000..247e6e38e
--- /dev/null
+++ b/src/locales/it/battle.ts
@@ -0,0 +1,53 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const battle: SimpleTranslationEntries = {
+ "bossAppeared": "{{bossName}} è apparso.",
+ "trainerAppeared": "{{trainerName}}\nvuole combattere!",
+ "singleWildAppeared": "Appare {{pokemonName}} selvatico!",
+ "multiWildAppeared": "Appaiono {{pokemonName1}}\ne {{pokemonName2}} salvatici!",
+ "playerComeBack": "Rientra, {{pokemonName}}!",
+ "trainerComeBack": "{{trainerName}} ha ritirato {{pokemonName}}!",
+ "playerGo": "Vai! {{pokemonName}}!",
+ "trainerGo": "{{trainerName}} manda in campo {{pokemonName}}!",
+ "switchQuestion": "Vuoi cambiare\n{{pokemonName}}?",
+ "trainerDefeated": `Hai sconfitto\n{{trainerName}}!`,
+ "pokemonCaught": "Preso! {{pokemonName}} è stato catturato!",
+ "pokemon": "Pokémon",
+ "sendOutPokemon": "Vai! {{pokemonName}}!",
+ "hitResultCriticalHit": "Brutto colpo!",
+ "hitResultSuperEffective": "È superefficace!",
+ "hitResultNotVeryEffective": "Non è molto efficace…",
+ "hitResultNoEffect": "Non ha effetto su {{pokemonName}}!",
+ "hitResultOneHitKO": "KO con un colpo!",
+ "attackFailed": "Ma ha fallito!",
+ "attackHitsCount": `Colpito {{count}} volta/e!`,
+ "expGain": "{{pokemonName}} ha guadagnato\n{{exp}} Punti Esperienza!",
+ "levelUp": "{{pokemonName}} è salito al \nlivello {{level}}!",
+ "learnMove": "{{pokemonName}} impara \n{{moveName}}!",
+ "learnMovePrompt": "{{pokemonName}} vorrebbe imparare\n{{moveName}}.",
+ "learnMoveLimitReached": "Tuttavia, {{pokemonName}} \nconosce già quattro mosse.",
+ "learnMoveReplaceQuestion": "Vuoi che ne dimentichi una e al suo \nposto la sostituisca con {{moveName}}?",
+ "learnMoveStopTeaching": "Vuoi smettere di fargli imparare \n{{moveName}}?",
+ "learnMoveNotLearned": "{{pokemonName}} non ha imparato\n{{moveName}}.",
+ "learnMoveForgetQuestion": "Quale mossa deve dimenticare?",
+ "learnMoveForgetSuccess": "{{pokemonName}} ha dimenticato la mossa\n{{moveName}}.",
+ "levelCapUp": "Il livello massimo\nè aumentato a {{levelCap}}!",
+ "moveNotImplemented": "{{moveName}} non è ancora implementata e non può essere selezionata.",
+ "moveNoPP": "Non ci sono PP rimanenti\nper questa mossa!",
+ "moveDisabled": "{{moveName}} è disabilitata!",
+ "noPokeballForce": "Una forza misteriosa\nimpedisce l'uso dell Poké Ball.",
+ "noPokeballTrainer": "Non puoi catturare\nPokémon di altri allenatori!",
+ "noPokeballMulti": "Puoi lanciare una Poké Ball\nquando rimane un solo Pokémon!",
+ "noPokeballStrong": "Il Pokémon avversario è troppo forte per essere catturato!\nDevi prima indebolirlo!",
+ "noEscapeForce": "Una forza misteriosa\nimpedisce la fuga.",
+ "noEscapeTrainer": "Non puoi sottrarti\nalla lotta con un'allenatore!",
+ "noEscapePokemon": "{{moveName}} di {{pokemonName}}\npreviene la {{escapeVerb}}!",
+ "runAwaySuccess": "Scampato pericolo!",
+ "runAwayCannotEscape": 'Non puoi fuggire!',
+ "escapeVerbSwitch": "cambiando",
+ "escapeVerbFlee": "fuggendo",
+ "notDisabled": "{{moveName}} non è più\ndisabilitata!",
+ "skipItemQuestion": "Sei sicuro di non voler prendere nessun oggetto?",
+ "eggHatching": "Oh?",
+ "ivScannerUseQuestion": "Vuoi usare lo scanner di IV su {{pokemonName}}?"
+} as const;
\ No newline at end of file
diff --git a/src/locales/it/command-ui-handler.ts b/src/locales/it/command-ui-handler.ts
new file mode 100644
index 000000000..54af8f766
--- /dev/null
+++ b/src/locales/it/command-ui-handler.ts
@@ -0,0 +1,9 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const commandUiHandler: SimpleTranslationEntries = {
+ "fight": "Lotta",
+ "ball": "Borsa",
+ "pokemon": "Pokémon",
+ "run": "Fuga",
+ "actionMessage": "Cosa deve fare {{pokemonName}}?",
+} as const;
\ No newline at end of file
diff --git a/src/locales/it/config.ts b/src/locales/it/config.ts
new file mode 100644
index 000000000..af394bd64
--- /dev/null
+++ b/src/locales/it/config.ts
@@ -0,0 +1,28 @@
+import { ability } from "./ability";
+import { battle } from "./battle";
+import { commandUiHandler } from "./command-ui-handler";
+import { fightUiHandler } from "./fight-ui-handler";
+import { menu } from "./menu";
+import { menuUiHandler } from "./menu-ui-handler";
+import { move } from "./move";
+import { pokeball } from "./pokeball";
+import { pokemon } from "./pokemon";
+import { pokemonStat } from "./pokemon-stat";
+import { starterSelectUiHandler } from "./starter-select-ui-handler";
+import { tutorial } from "./tutorial";
+
+
+export const itConfig = {
+ ability: ability,
+ battle: battle,
+ commandUiHandler: commandUiHandler,
+ fightUiHandler: fightUiHandler,
+ menuUiHandler: menuUiHandler,
+ menu: menu,
+ move: move,
+ pokeball: pokeball,
+ pokemonStat: pokemonStat,
+ pokemon: pokemon,
+ starterSelectUiHandler: starterSelectUiHandler,
+ tutorial: tutorial
+}
\ No newline at end of file
diff --git a/src/locales/it/fight-ui-handler.ts b/src/locales/it/fight-ui-handler.ts
new file mode 100644
index 000000000..0743e382c
--- /dev/null
+++ b/src/locales/it/fight-ui-handler.ts
@@ -0,0 +1,6 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const fightUiHandler: SimpleTranslationEntries = {
+ "pp": "PP",
+ "power": "POTENZA",
+} as const;
\ No newline at end of file
diff --git a/src/locales/it/menu-ui-handler.ts b/src/locales/it/menu-ui-handler.ts
index 5fde37ae3..9def62d8d 100644
--- a/src/locales/it/menu-ui-handler.ts
+++ b/src/locales/it/menu-ui-handler.ts
@@ -1,23 +1,23 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const menuUiHandler: SimpleTranslationEntries = {
- "GAME_SETTINGS": 'Game Settings',
- "ACHIEVEMENTS": "Achievements",
- "STATS": "Stats",
- "VOUCHERS": "Vouchers",
- "EGG_LIST": "Egg List",
- "EGG_GACHA": "Egg Gacha",
- "MANAGE_DATA": "Manage Data",
+ "GAME_SETTINGS": 'Impostazioni',
+ "ACHIEVEMENTS": "Risultati",
+ "STATS": "Statistiche",
+ "VOUCHERS": "Biglietti",
+ "EGG_LIST": "Lista Uova",
+ "EGG_GACHA": "Gacha Uova",
+ "MANAGE_DATA": "Gestisci Dati",
"COMMUNITY": "Community",
- "RETURN_TO_TITLE": "Return To Title",
- "LOG_OUT": "Log Out",
+ "RETURN_TO_TITLE": "Ritorna al Titolo",
+ "LOG_OUT": "Disconnettiti",
"slot": "Slot {{slotNumber}}",
- "importSession": "Import Session",
- "importSlotSelect": "Select a slot to import to.",
- "exportSession": "Export Session",
- "exportSlotSelect": "Select a slot to export from.",
- "importData": "Import Data",
- "exportData": "Export Data",
- "cancel": "Cancel",
- "losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?"
+ "importSession": "Importa Sessione",
+ "importSlotSelect": "Seleziona uno slot in cui importare.",
+ "exportSession": "Esporta Sessione",
+ "exportSlotSelect": "Seleziona uno slot da cui esportare.",
+ "importData": "Importa Dati",
+ "exportData": "Esporta Dati",
+ "cancel": "Annulla",
+ "losingProgressionWarning": "Perderai tutti i progressi dall'inizio della battaglia. Procedere?"
} as const;
\ No newline at end of file
diff --git a/src/locales/it/menu.ts b/src/locales/it/menu.ts
index 872315d77..1344b21cc 100644
--- a/src/locales/it/menu.ts
+++ b/src/locales/it/menu.ts
@@ -1,10 +1,46 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
+/**
+ * The menu namespace holds most miscellaneous text that isn't directly part of the game's
+ * contents or directly related to Pokemon data. This includes menu navigation, settings,
+ * account interactions, descriptive text, etc.
+ */
export const menu: SimpleTranslationEntries = {
"cancel": "Annulla",
"continue": "Continua",
"newGame": "Nuova Partita",
"loadGame": "Carica Partita",
"dailyRun": "Corsa Giornaliera (Beta)",
- "selectGameMode": "Seleziona una modalità di gioco."
+ "selectGameMode": "Seleziona una modalità di gioco.",
+ "logInOrCreateAccount": "Accedi o crea un nuovo account per iniziare. Non è richiesta un'email!",
+ "username": "Nome Utente",
+ "password": "Password",
+ "login": "Accedi",
+ "register": "Registrati",
+ "emptyUsername": "Nome utente mancante!",
+ "invalidLoginUsername": "Nome utente non valido!",
+ "invalidRegisterUsername": "Il nome utente può contenere solo lettere, numeri o trattini bassi",
+ "invalidLoginPassword": "Password non valida!",
+ "invalidRegisterPassword": "La password deve contenere almeno 6 caratteri",
+ "usernameAlreadyUsed": "Il nome utente inserito è stato già utilizzato!",
+ "accountNonExistent": "Account inesistente!",
+ "unmatchingPassword": "La password inserita non è corretta!",
+ "passwordNotMatchingConfirmPassword": "La password deve essere uguale alla conferma password!",
+ "confirmPassword": "Conferma Password",
+ "registrationAgeWarning": "Registrandoti confermi di avere 13 anni o più.",
+ "backToLogin": "Torna all'accesso",
+ "failedToLoadSaveData": "Impossibile caricare i dati di salvataggio. Ricarica la pagina.\nSe il problema persiste, contatta l'amministratore.",
+ "sessionSuccess": "Sessione caricata correttamente.",
+ "failedToLoadSession": "Impossibile caricare i dati della sessione.\nPotrebbero essere danneggiati.",
+ "boyOrGirl": "Sei un ragazzo o una ragazza?",
+ "boy": "Ragazzo",
+ "girl": "Ragazza",
+ "dailyRankings": "Classifica Giornaliera",
+ "weeklyRankings": "Classifica Settimanale",
+ "noRankings": "Nessuna Classifica",
+ "loading": "Caricamento…",
+ "playersOnline": "Giocatori Online",
+ "empty":"Vuoto",
+ "yes":"Si",
+ "no":"No",
} as const;
\ No newline at end of file
diff --git a/src/locales/it/move.ts b/src/locales/it/move.ts
new file mode 100644
index 000000000..116a14b5d
--- /dev/null
+++ b/src/locales/it/move.ts
@@ -0,0 +1,3812 @@
+import { MoveTranslationEntries } from "#app/plugins/i18n";
+
+export const move: MoveTranslationEntries = {
+ pound: {
+ name: "Botta",
+ effect: "Colpisce il nemico con la coda o le zampe anteriori.",
+ },
+ karateChop: {
+ name: "Colpokarate",
+ effect: "Colpisce il nemico con un colpo netto. Probabile brutto colpo.",
+ },
+ doubleSlap: {
+ name: "Doppiasberla",
+ effect: "Schiaffeggia il nemico da due a cinque volte di fila.",
+ },
+ cometPunch: {
+ name: "Cometapugno",
+ effect: "Colpisce il nemico con una scarica di pugni da due a cinque volte di fila.",
+ },
+ megaPunch: {
+ name: "Megapugno",
+ effect: "Colpisce il nemico con un pugno poderoso.",
+ },
+ payDay: {
+ name: "Giornopaga",
+ effect: "Colpisce il nemico con una gran quantità di monete recuperabili dopo la lotta.",
+ },
+ firePunch: {
+ name: "Fuocopugno",
+ effect: "Colpisce il nemico con un pugno ardente che può scottarlo.",
+ },
+ icePunch: {
+ name: "Gelopugno",
+ effect: "Colpisce il nemico con un pugno di ghiaccio che può congelarlo.",
+ },
+ thunderPunch: {
+ name: "Tuonopugno",
+ effect: "Colpisce il nemico con un pugno elettrico che può paralizzarlo.",
+ },
+ scratch: {
+ name: "Graffio",
+ effect: "Infligge danni al nemico con artigli acuminati, duri e affilati.",
+ },
+ viseGrip: {
+ name: "Presa",
+ effect: "Stringe il nemico in una morsa usando enormi e possenti tenaglie.",
+ },
+ guillotine: {
+ name: "Ghigliottina",
+ effect: "Attacca il nemico con pericolose tenaglie. Se l'attacco va a segno, il nemico va subito KO.",
+ },
+ razorWind: {
+ name: "Ventagliente",
+ effect: "Chi la usa genera un turbine al primo turno e attacca al secondo. Probabile brutto colpo.",
+ },
+ swordsDance: {
+ name: "Danzaspada",
+ effect: "Danza frenetica che incrementa lo spirito combattivo. Chi la usa aumenta di molto il suo Attacco.",
+ },
+ cut: {
+ name: "Taglio",
+ effect: "Attacca il nemico con artigli o falci affilate. Fuori dalla lotta si usa per tagliare piccoli alberi.",
+ },
+ gust: {
+ name: "Raffica",
+ effect: "Infligge danni al nemico con una folata di vento sollevata dalle ali.",
+ },
+ wingAttack: {
+ name: "Attacco d'Ala",
+ effect: "Infligge danni al nemico spiegando delle grandi ali possenti.",
+ },
+ whirlwind: {
+ name: "Turbine",
+ effect: "Il bersaglio è spazzato via ed è costretto a lasciare il posto ad un altro. Se è selvatico, la lotta finisce.",
+ },
+ fly: {
+ name: "Volo",
+ effect: "Chi la usa si alza in volo per attaccare al turno seguente. Fuori dalla lotta permette di volare in città già visitate.",
+ },
+ bind: {
+ name: "Legatutto",
+ effect: "Lega e stritola il nemico per quattro o cinque turni con tentacoli o con un corpo lungo.",
+ },
+ slam: {
+ name: "Schianto",
+ effect: "Infligge danni al nemico con una coda, una liana o simili.",
+ },
+ vineWhip: {
+ name: "Frustata",
+ effect: "Infligge danni al nemico con liane sottili simili a fruste.",
+ },
+ stomp: {
+ name: "Pestone",
+ effect: "Colpisce il nemico con un grosso piede e può anche farlo tentennare.",
+ },
+ doubleKick: {
+ name: "Doppiocalcio",
+ effect: "Colpisce il nemico due volte con un paio di rapidi calci inferti con entrambi i piedi.",
+ },
+ megaKick: {
+ name: "Megacalcio",
+ effect: "Colpisce il nemico con un calcio sferrato con la forza di muscoli poderosi.",
+ },
+ jumpKick: {
+ name: "Calciosalto",
+ effect: "Permette di saltare in alto per attaccare con un calcio. Se non va a buon fine, chi la usa si ferisce.",
+ },
+ rollingKick: {
+ name: "Calciorullo",
+ effect: "Chi la usa infierisce sul nemico con un calcio rotante. Può anche farlo tentennare.",
+ },
+ sandAttack: {
+ name: "Turbosabbia",
+ effect: "Getta sabbia in faccia al nemico e ne riduce la precisione.",
+ },
+ headbutt: {
+ name: "Bottintesta",
+ effect: "Chi la usa si lancia diritto di testa contro il nemico. Può anche far tentennare.",
+ },
+ hornAttack: {
+ name: "Incornata",
+ effect: "Danneggia il nemico infilzandolo con un corno affilato.",
+ },
+ furyAttack: {
+ name: "Furia",
+ effect: "Infilza il nemico con corna affilate o un becco da due a cinque volte di fila.",
+ },
+ hornDrill: {
+ name: "Perforcorno",
+ effect: "Colpisce il nemico con un corno perforante come un trapano. Se il colpo va a segno, il nemico va KO.",
+ },
+ tackle: {
+ name: "Azione",
+ effect: "Attacco fisico che colpisce il nemico investendolo con tutto il corpo.",
+ },
+ bodySlam: {
+ name: "Corposcontro",
+ effect: "Chi la usa carica il nemico con tutto il corpo. Può causarne anche la paralisi.",
+ },
+ wrap: {
+ name: "Avvolgibotta",
+ effect: "Avvolge e stritola il nemico con un corpo lungo o con piante rampicanti per quattro o cinque turni.",
+ },
+ takeDown: {
+ name: "Riduttore",
+ effect: "Carica spericolata con tutto il corpo contro il nemico. Danneggia un po' anche chi la usa.",
+ },
+ thrash: {
+ name: "Colpo",
+ effect: "Assale e attacca il nemico per due o tre turni, ma confonde chi la usa.",
+ },
+ doubleEdge: {
+ name: "Sdoppiatore",
+ effect: "Carica spietata e pericolosa che danneggia molto anche chi la usa.",
+ },
+ tailWhip: {
+ name: "Colpocoda",
+ effect: "Chi la usa agita la coda per distrarre i nemici, riducendone la Difesa.",
+ },
+ poisonSting: {
+ name: "Velenospina",
+ effect: "Colpisce il nemico con un aculeo tossico che può anche avvelenarlo.",
+ },
+ twineedle: {
+ name: "Doppio Ago",
+ effect: "Colpisce il nemico due volte di seguito con un paio di aghi. Può anche avvelenarlo.",
+ },
+ pinMissile: {
+ name: "Missilspillo",
+ effect: "Il nemico viene colpito da due a cinque volte con spilli appuntiti in rapida successione.",
+ },
+ leer: {
+ name: "Fulmisguardo",
+ effect: "Il nemico viene guardato con sguardo intimidatorio da occhi acuti. Viene ridotta la difesa dell'avversario.",
+ },
+ bite: {
+ name: "Morso",
+ effect: "Il nemico viene morso da denti affilatissimi che possono farlo tentennare.",
+ },
+ growl: {
+ name: "Ruggito",
+ effect: "Il Pokémon ruggisce con cattiveria. Viene ridotto l'attacco dell'avversario.",
+ },
+ roar: {
+ name: "Boato",
+ effect: "Il bersaglio è costretto a lasciare il campo e viene sostituito. Mette fine alle lotte contro Pokémon selvatici.",
+ },
+ sing: {
+ name: "Canto",
+ effect: "Una ninna nanna è cantata con voce calma per far addormentare il nemico.",
+ },
+ supersonic: {
+ name: "Supersuono",
+ effect: "Chi la usa genera dal proprio corpo strane onde acustiche che possono confondere il nemico.",
+ },
+ sonicBoom: {
+ name: "Sonicboom",
+ effect: "Il nemico viene colpito con un suono distruttivo che infligge un danno sempre 20 PS.",
+ },
+ disable: {
+ name: "Inibitore",
+ effect: "Per quattro turni impedisce al bersaglio di riutilizzare l'ultima mossa usata.",
+ },
+ acid: {
+ name: "Acido",
+ effect: "Colpisce i nemici intorno spruzzando un acido corrosivo. Può anche ridurne la Difesa Speciale.",
+ },
+ ember: {
+ name: "Braciere",
+ effect: "Il Pokémon attacca con piccole fiamme. Possono scottare il nemico.",
+ },
+ flamethrower: {
+ name: "Lanciafiamme",
+ effect: "Il nemico viene colpito da intense fiammate che possono anche scottarlo.",
+ },
+ mist: {
+ name: "Nebbia",
+ effect: "Chi la usa attira una nebbia che blocca la riduzione alle statistiche della sua squadra per cinque turni.",
+ },
+ waterGun: {
+ name: "Pistolacqua",
+ effect: "Il nemico è colpito da un potente getto d'acqua.",
+ },
+ hydroPump: {
+ name: "Idropompa",
+ effect: "Il nemico è travolto da un potente getto d'acqua spruzzato ad altissima pressione.",
+ },
+ surf: {
+ name: "Surf",
+ effect: "Un'onda enorme sommerge il campo di lotta. Fuori dalla lotta si usa per spostarsi sull'acqua.",
+ },
+ iceBeam: {
+ name: "Geloraggio",
+ effect: "Il nemico è colpito da un raggio di energia gelida che può anche congelarlo.",
+ },
+ blizzard: {
+ name: "Bora",
+ effect: "Colpisce i bersagli con una tremenda tempesta di ghiaccio che può anche congelarli.",
+ },
+ psybeam: {
+ name: "Psicoraggio",
+ effect: "Il nemico è attaccato con un raggio psichico. Può anche lasciare il nemico confuso.",
+ },
+ bubbleBeam: {
+ name: "Bollaraggio",
+ effect: "Colpisce il nemico con una forte scarica di bolle. Può anche ridurne la Velocità.",
+ },
+ auroraBeam: {
+ name: "Raggiaurora",
+ effect: "Il nemico viene colpito da un fascio color arcobaleno. Può ridurre l'attacco dell'avversario.",
+ },
+ hyperBeam: {
+ name: "Iper Raggio",
+ effect: "Colpisce il nemico con un potente raggio. Chi la usa salta il turno successivo per recuperare energia.",
+ },
+ peck: {
+ name: "Beccata",
+ effect: "Colpisce il nemico con un becco appuntito o un corno.",
+ },
+ drillPeck: {
+ name: "Perforbecco",
+ effect: "Attacco a spirale con un becco aguzzo che fa da trapano.",
+ },
+ submission: {
+ name: "Sottomissione",
+ effect: "Chi la usa carica il nemico in modo spericolato, ma danneggia anche se stesso.",
+ },
+ lowKick: {
+ name: "Colpo Basso",
+ effect: "Un calcio basso e potente che fa cadere il nemico. Danneggia maggiormente i nemici più pesanti.",
+ },
+ counter: {
+ name: "Contrattacco",
+ effect: "Una mossa di ritorsione che contrasta qualsiasi attacco fisico, infliggendo il doppio dei danni subiti.",
+ },
+ seismicToss: {
+ name: "Movimento Sismico",
+ effect: "Colpisce il bersaglio con la forza di gravità. Infligge un danno pari al livello di chi la usa.",
+ },
+ strength: {
+ name: "Forza",
+ effect: "Colpisce il nemico con un'enorme energia. Fuori dalla lotta si usa per spostare i massi.",
+ },
+ absorb: {
+ name: "Assorbimento",
+ effect: "Mossa che assorbe PS. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.",
+ },
+ megaDrain: {
+ name: "Megassorbimento",
+ effect: "Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.",
+ },
+ leechSeed: {
+ name: "Parassiseme",
+ effect: "Vengono piantati semi sul bersaglio. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.",
+ },
+ growth: {
+ name: "Crescita",
+ effect: "Provoca la crescita immediata del corpo e l'aumento dell'Attacco e dell'Attacco Speciale di chi la usa.",
+ },
+ razorLeaf: {
+ name: "Foglielama",
+ effect: "Foglie taglienti sferzano i nemici intorno. Probabile brutto colpo.",
+ },
+ solarBeam: {
+ name: "Solarraggio",
+ effect: "Chi la usa assorbe luce al primo turno per proiettare un raggio intenso al turno successivo.",
+ },
+ poisonPowder: {
+ name: "Velenpolvere",
+ effect: "Una nube di polvere velenosa è sparsa sul nemico. Può avvelenare il bersaglio.",
+ },
+ stunSpore: {
+ name: "Paralizzante",
+ effect: "Investe il bersaglio con una nuvola di polvere che paralizza.",
+ },
+ sleepPowder: {
+ name: "Sonnifero",
+ effect: "Investe il bersaglio con una grande nuvola di polvere soporifera che lo fa addormentare.",
+ },
+ petalDance: {
+ name: "Petalodanza",
+ effect: "Attacca il nemico cospargendolo di petali per due o tre turni, ma chi la usa rimane confuso.",
+ },
+ stringShot: {
+ name: "Millebave",
+ effect: "Chi la usa produce della seta che avvolge i nemici e ne riduce la Velocità.",
+ },
+ dragonRage: {
+ name: "Ira di Drago",
+ effect: "Colpisce il nemico con un'onda d'urto generata dall'ira. Questo attacco provoca sempre un danno di 40 PS.",
+ },
+ fireSpin: {
+ name: "Turbofuoco",
+ effect: "Intrappola il bersaglio in un turbine di fuoco che dura per quattro o cinque turni.",
+ },
+ thunderShock: {
+ name: "Tuonoshock",
+ effect: "Danneggia il bersaglio con una scarica elettrica che può anche paralizzarlo.",
+ },
+ thunderbolt: {
+ name: "Fulmine",
+ effect: "Il bersaglio viene colpito da una potente scarica elettrica che può anche paralizzarlo.",
+ },
+ thunderWave: {
+ name: "Tuononda",
+ effect: "Il nemico viene colpito da una debole scarica elettrica che, se va a segno, ne causa la paralisi.",
+ },
+ thunder: {
+ name: "Tuono",
+ effect: "Il nemico è colpito da un lampo molto violento che può anche paralizzarlo.",
+ },
+ rockThrow: {
+ name: "Sassata",
+ effect: "Chi la usa solleva una roccia e la lancia contro il nemico.",
+ },
+ earthquake: {
+ name: "Terremoto",
+ effect: "Chi la usa provoca un potente sisma che colpisce gli altri Pokémon in campo.",
+ },
+ fissure: {
+ name: "Abisso",
+ effect: "Chi la usa crea una spaccatura nel terreno e cerca di gettarvici dentro il nemico. Se va a segno, il nemico va KO.",
+ },
+ dig: {
+ name: "Fossa",
+ effect: "Chi la usa scava al primo turno e attacca al successivo. Fuori dalla lotta fa uscire da alcuni luoghi.",
+ },
+ toxic: {
+ name: "Tossina",
+ effect: "Una mossa che lascia l'obiettivo gravemente avvelenato. Il danno da veleno peggiora ad ogni turno.",
+ },
+ confusion: {
+ name: "Confusione",
+ effect: "Colpisce il nemico con una leggera forza telecinetica e può anche confonderlo.",
+ },
+ psychic: {
+ name: "Psichico",
+ effect: "Il nemico viene colpito da una potente forza telecinetica che può anche ridurne la Difesa Speciale.",
+ },
+ hypnosis: {
+ name: "Ipnosi",
+ effect: "Chi la usa si avvale della suggestione ipnotica per far addormentare il nemico.",
+ },
+ meditate: {
+ name: "Meditazione",
+ effect: "Il Pokémon medita risvegliando il potere nel profondo del suo corpo ed aumentando il suo Attacco.",
+ },
+ agility: {
+ name: "Agilità",
+ effect: "Chi la usa rilassa e alleggerisce il proprio corpo per far salire di molto la Velocità.",
+ },
+ quickAttack: {
+ name: "Attacco Rapido",
+ effect: "Chi la usa colpisce sempre per primo e ad una tale velocità da rendersi quasi invisibile.",
+ },
+ rage: {
+ name: "Ira",
+ effect: "Questa mossa ha il potere di aumentare la statistica Attacco ogni volta che chi la usa viene colpito durante una lotta.",
+ },
+ teleport: {
+ name: "Teletrasporto",
+ effect: "Fa fuggire dai Pokémon selvatici. Fuori dalla lotta porta all'ultimo Centro Pokémon visitato.",
+ },
+ nightShade: {
+ name: "Ombra Notturna",
+ effect: "Fa apparire un orribile miraggio al nemico e infligge un danno pari al livello di chi la usa.",
+ },
+ mimic: {
+ name: "Mimica",
+ effect: "Copia l'ultima mossa usata dal bersaglio. La mossa copiata si può utilizzare fino alla sostituzione del Pokémon.",
+ },
+ screech: {
+ name: "Stridio",
+ effect: "Stridio assordante che riduce di molto la Difesa del nemico.",
+ },
+ doubleTeam: {
+ name: "Doppioteam",
+ effect: "Chi la usa si muove in fretta e crea copie illusorie di se stesso che aumentano la capacità di elusione.",
+ },
+ recover: {
+ name: "Ripresa",
+ effect: "Una mossa di auto-guarigione. Il Pokémon ripristina i suoi PS fino a metà dei suoi PS massimi.",
+ },
+ harden: {
+ name: "Rafforzatore",
+ effect: "Tutti i muscoli del corpo si tonificano per aumentare la Difesa.",
+ },
+ minimize: {
+ name: "Minimizzato",
+ effect: "Il corpo di chi la usa si comprime e diventa più piccolo. La sua capacità di elusione aumenta di molto.",
+ },
+ smokescreen: {
+ name: "Muro di Fumo",
+ effect: "Il Pokémon rilascia un'oscura cortina di fumo che riduce la precisione del nemico.",
+ },
+ confuseRay: {
+ name: "Stordiraggio",
+ effect: "Il nemico è colpito da un raggio sinistro che lo confonde.",
+ },
+ withdraw: {
+ name: "Ritirata",
+ effect: "Il corpo si ritira nel suo duro guscio per aumentare la Difesa.",
+ },
+ defenseCurl: {
+ name: "Ricciolscudo",
+ effect: "Chi la usa si raggomitola per nascondere i punti deboli e aumentare la propria Difesa.",
+ },
+ barrier: {
+ name: "Barriera",
+ effect: "Innalza una barriera resistente che aumenta molto la Difesa.",
+ },
+ lightScreen: {
+ name: "Schermoluce",
+ effect: "Innalza una barriera di luce fantastica per ridurre i danni degli attacchi speciali alla squadra per cinque turni.",
+ },
+ haze: {
+ name: "Nube",
+ effect: "Chi la usa crea una nube nera che annulla ogni modifica delle statistiche di tutti i Pokémon in campo.",
+ },
+ reflect: {
+ name: "Riflesso",
+ effect: "Innalza una barriera di luce fantastica per ridurre i danni degli attacchi fisici alla squadra per cinque turni.",
+ },
+ focusEnergy: {
+ name: "Focalenergia",
+ effect: "Chi la usa fa un profondo respiro e si concentra per rendere più probabili i brutti colpi.",
+ },
+ bide: {
+ name: "Pazienza",
+ effect: "Chi la usa subisce attacchi per due turni e poi restituisce il danno moltiplicato per due.",
+ },
+ metronome: {
+ name: "Metronomo",
+ effect: "Il Pokémon fa di no con il dito e stimola il cervello a usare a caso una delle tante mosse esistenti.",
+ },
+ mirrorMove: {
+ name: "Speculmossa",
+ effect: "Chi la usa colpisce il bersaglio copiandone l'ultima mossa usata.",
+ },
+ selfDestruct: {
+ name: "Autodistruzione",
+ effect: "Chi la usa esplode e infligge danni agli altri Pokémon in campo, ma poi va KO.",
+ },
+ eggBomb: {
+ name: "Uovobomba",
+ effect: "Colpisce il nemico con un grande uovo scaraventato con enorme forza.",
+ },
+ lick: {
+ name: "Leccata",
+ effect: "Una lingua lunga infligge danni al nemico e può anche paralizzarlo.",
+ },
+ smog: {
+ name: "Smog",
+ effect: "Colpisce il nemico con una scarica di gas maleodoranti. Può anche avvelenarlo.",
+ },
+ sludge: {
+ name: "Fango",
+ effect: "Lancio di fango malsano che arreca danno al nemico. Può anche avvelenarlo.",
+ },
+ boneClub: {
+ name: "Ossoclava",
+ effect: "Il Pokémon colpisce il nemico con un bastone d'osso. Può anche fare tentennare l'obiettivo.",
+ },
+ fireBlast: {
+ name: "Fuocobomba",
+ effect: "Investe il nemico con un'intensa fiammata che fa terra bruciata. Può anche scottarlo.",
+ },
+ waterfall: {
+ name: "Cascata",
+ effect: "Carica il nemico a grande velocità e può farlo tentennare. Fuori dalla lotta fa risalire le cascate.",
+ },
+ clamp: {
+ name: "Tenaglia",
+ effect: "Chi la usa intrappola e stritola il nemico con la sua corazza spessa e forte per quattro o cinque turni.",
+ },
+ swift: {
+ name: "Comete",
+ effect: "Colpisce i nemici con raggi a forma di stella. Questo attacco è infallibile.",
+ },
+ skullBash: {
+ name: "Capocciata",
+ effect: "Chi la usa ritira la testa per aumentare la Difesa e poi attacca al turno successivo.",
+ },
+ spikeCannon: {
+ name: "Sparalance",
+ effect: "Il nemico viene colpito da due a cinque volte in rapida successione da spilli appuntiti.",
+ },
+ constrict: {
+ name: "Limitazione",
+ effect: "Colpisce il nemico con lunghi tentacoli o piante rampicanti. Può anche ridurne la Velocità.",
+ },
+ amnesia: {
+ name: "Amnesia",
+ effect: "Vuoto di memoria che aumenta esponenzialmente la difesa speciale.",
+ },
+ kinesis: {
+ name: "Cinèsi",
+ effect: "Chi la usa distrae il bersaglio piegando un cucchiaio e ne riduce la precisione.",
+ },
+ softBoiled: {
+ name: "Covauova",
+ effect: "Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.",
+ },
+ highJumpKick: {
+ name: "Calcinvolo",
+ effect: "Chi la usa colpisce il nemico con una ginocchiata in volo: se fallisce, subisce danni.",
+ },
+ glare: {
+ name: "Sguardo Feroce",
+ effect: "Chi la usa spaventa il nemico con uno sguardo terrificante e ne causa la paralisi.",
+ },
+ dreamEater: {
+ name: "Mangiasogni",
+ effect: "Attacco che funziona solo su un nemico che dorme. Chi lo usa riceve metà dei PS persi dal nemico.",
+ },
+ poisonGas: {
+ name: "Velenogas",
+ effect: "Spruzza in faccia al nemico una nuvola di gas tossico che avvelena.",
+ },
+ barrage: {
+ name: "Attacco Pioggia",
+ effect: "Piovono enormi sfere sulla testa del nemico da due a cinque volte di fila.",
+ },
+ leechLife: {
+ name: "Sanguisuga",
+ effect: "Mossa succhiasangue. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.",
+ },
+ lovelyKiss: {
+ name: "Demonbacio",
+ effect: "Chi la usa intimidisce il bersaglio con una faccia paurosa e gli schiocca un bacio che lo fa addormentare.",
+ },
+ skyAttack: {
+ name: "Aeroattacco",
+ effect: "Un attacco in due turni e probabile brutto colpo. Può anche far tentennare il nemico.",
+ },
+ transform: {
+ name: "Trasformazione",
+ effect: "Chi la usa si trasforma in una copia esatta del bersaglio per sfruttarne le caratteristiche.",
+ },
+ bubble: {
+ name: "Bolla",
+ effect: "Uno spruzzo di bolle viene lanciato sul nemico. Può ridurne la velocità.",
+ },
+ dizzyPunch: {
+ name: "Stordipugno",
+ effect: "Colpisce il bersaglio con una sequenza di pugni che può anche confonderlo.",
+ },
+ spore: {
+ name: "Spora",
+ effect: "Nube di spore che fa sempre addormentare il bersaglio.",
+ },
+ flash: {
+ name: "Flash",
+ effect: "Il Pokémon usa un lampo di luce contro il nemico riducendone la precisione. Può essere usata per illuminare luoghi oscuri.",
+ },
+ psywave: {
+ name: "Psiconda",
+ effect: "Il nemico è attaccato con una strana onda di energia. L'intensità dell'attacco è variabile.",
+ },
+ splash: {
+ name: "Splash",
+ effect: "Chi la usa sguazza nell'acqua, senza ottenere alcun effetto.",
+ },
+ acidArmor: {
+ name: "Scudo Acido",
+ effect: "Il Pokémon modifica la sua struttura cellulare liquefandosi, per aumentare esponenzialmente la sua difesa.",
+ },
+ crabhammer: {
+ name: "Martellata",
+ effect: "Colpisce il nemico con una grande tenaglia. Probabile brutto colpo.",
+ },
+ explosion: {
+ name: "Esplosione",
+ effect: "Chi la usa esplode per infliggere danni agli altri Pokémon attorno, ma va KO.",
+ },
+ furySwipes: {
+ name: "Sfuriate",
+ effect: "Colpisce il nemico con artigli o falci affilate da due a cinque volte in rapida successione.",
+ },
+ bonemerang: {
+ name: "Ossomerang",
+ effect: "Chi la usa lancia l'osso che tiene. L'osso colpisce due volte e ritorna come un vero e proprio boomerang.",
+ },
+ rest: {
+ name: "Riposo",
+ effect: "Il Pokémon si addormenta per due turni per curare tutti i PS e qualsiasi problema di stato.",
+ },
+ rockSlide: {
+ name: "Frana",
+ effect: "I nemici vengono colpiti da grandi massi che possono anche farli tentennare.",
+ },
+ hyperFang: {
+ name: "Iperzanna",
+ effect: "Il Pokémon morde il nemico con zanne taglienti. Può anche farlo tentennare.",
+ },
+ sharpen: {
+ name: "Affilatore",
+ effect: "Chi la usa riduce il numero di poligoni sul proprio corpo per accentuarne gli spigoli e aumentare l'Attacco.",
+ },
+ conversion: {
+ name: "Conversione",
+ effect: "Il tipo di chi la usa muta in quello di una sua mossa a caso.",
+ },
+ triAttack: {
+ name: "Tripletta",
+ effect: "Colpisce il nemico con tre sfere simultanee che possono anche paralizzarlo, scottarlo o congelarlo.",
+ },
+ superFang: {
+ name: "Superzanna",
+ effect: "Chi la usa salta sul nemico azzannandolo con i suoi incisivi affilati e facendogli perdere metà dei PS.",
+ },
+ slash: {
+ name: "Lacerazione",
+ effect: "Attacca il nemico con artigli, falci o altro. Probabile brutto colpo.",
+ },
+ substitute: {
+ name: "Sostituto",
+ effect: "Chi la usa crea una copia di se stesso usando alcuni PS. La copia serve come esca per il nemico.",
+ },
+ struggle: {
+ name: "Scontro",
+ effect: "Mossa da usare solo in caso estremo, quando non si hanno più PP. Danneggia anche chi la usa.",
+ },
+ sketch: {
+ name: "Schizzo",
+ effect: "Permette a chi la usa di imparare l'ultima mossa usata dal bersaglio. La nuova mossa appresa sostituisce Schizzo.",
+ },
+ tripleKick: {
+ name: "Triplocalcio",
+ effect: "Chi la usa esegue fino a tre calci consecutivi la cui potenza aumenta ad ogni colpo.",
+ },
+ thief: {
+ name: "Furto",
+ effect: "Il Pokémon attacca e contemporaneamente ruba lo strumento tenuto dal nemico. Non ruberà nulla, se si possiede già uno strumento.",
+ },
+ spiderWeb: {
+ name: "Ragnatela",
+ effect: "Copre il nemico con un filo di seta sottile e appiccicoso. Il nemico non può fuggire.",
+ },
+ mindReader: {
+ name: "Leggimente",
+ effect: "Il Pokémon percepisce i movimenti del nemico con la mente per garantire il successo della mossa successiva.",
+ },
+ nightmare: {
+ name: "Incubo",
+ effect: "Il nemico addormentato ha un incubo e perde PS ad ogni turno.",
+ },
+ flameWheel: {
+ name: "Ruotafuoco",
+ effect: "Il Pokémon si avvolge nel fuoco e carica il nemico. Può scottare.",
+ },
+ snore: {
+ name: "Russare",
+ effect: "Mossa da usare solo mentre si dorme. Il chiasso assordante può anche far tentennare il nemico.",
+ },
+ curse: {
+ name: "Maledizione",
+ effect: "Una mossa che agisce in modo diverso se chi la usa è di tipo Spettro.",
+ },
+ flail: {
+ name: "Flagello",
+ effect: "Chi la usa si dimena per attaccare. È più efficace se i suoi PS sono bassi.",
+ },
+ conversion2: {
+ name: "Conversione2",
+ effect: "Chi la usa cambia tipo per rendersi resistente al tipo dell'ultima mossa usata dal bersaglio.",
+ },
+ aeroblast: {
+ name: "Aerocolpo",
+ effect: "Colpisce il nemico con un vortice d'aria per danneggiarlo. Probabile brutto colpo.",
+ },
+ cottonSpore: {
+ name: "Cottonspora",
+ effect: "Rilascia spore simili al cotone che si attaccano ai nemici nei paraggi e ne riducono di molto la Velocità.",
+ },
+ reversal: {
+ name: "Contropiede",
+ effect: "Chi la usa attacca con tutte le sue forze. Più i PS sono bassi, maggiore è la potenza di questa mossa.",
+ },
+ spite: {
+ name: "Dispetto",
+ effect: "Chi la usa sfoga la propria rabbia sull'ultima mossa usata dal bersaglio e le sottrae quattro PP.",
+ },
+ powderSnow: {
+ name: "Polneve",
+ effect: "Attacca il nemico con una raffica di neve farinosa e può anche congelarlo.",
+ },
+ protect: {
+ name: "Protezione",
+ effect: "Permette di eludere tutti gli attacchi. Se usata in successione può fallire.",
+ },
+ machPunch: {
+ name: "Pugnorapido",
+ effect: "Chi la usa tira un pugno a velocità impressionante e colpisce di sicuro per primo.",
+ },
+ scaryFace: {
+ name: "Visotruce",
+ effect: "Chi la usa spaventa il nemico con una faccia terribile e ne riduce di molto la Velocità.",
+ },
+ feintAttack: {
+ name: "Finta",
+ effect: "Chi la usa si avvicina al nemico facendo finta di niente, per poi scagliare un pugno infallibile a tradimento.",
+ },
+ sweetKiss: {
+ name: "Dolcebacio",
+ effect: "Chi la usa bacia il nemico con una dolcezza angelica, confondendolo.",
+ },
+ bellyDrum: {
+ name: "Panciamburo",
+ effect: "Chi la usa massimizza l'Attacco in cambio di metà dei PS massimi.",
+ },
+ sludgeBomb: {
+ name: "Fangobomba",
+ effect: "Chi la usa attacca lanciando fango sul bersaglio. Può anche avvelenarlo.",
+ },
+ mudSlap: {
+ name: "Fangosberla",
+ effect: "Chi la usa butta fango in faccia al nemico per arrecargli danni e ridurne la precisione.",
+ },
+ octazooka: {
+ name: "Octazooka",
+ effect: "Chi la usa spruzza del'inchiostro in faccia al nemico. Può anche ridurne la precisione.",
+ },
+ spikes: {
+ name: "Punte",
+ effect: "Chi la usa piazza sul terreno una trappola di punte che danneggia i nemici quando scendono in campo.",
+ },
+ zapCannon: {
+ name: "Falcecannone",
+ effect: "Chi la usa provoca un'esplosione elettrica che infligge danni e paralizza il nemico.",
+ },
+ foresight: {
+ name: "Preveggenza",
+ effect: "Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.",
+ },
+ destinyBond: {
+ name: "Destinobbligato",
+ effect: "Se chi la usa va KO prima del proprio turno, chi ha sferrato il colpo da KO fa la stessa fine.",
+ },
+ perishSong: {
+ name: "Ultimocanto",
+ effect: "Ogni Pokémon che sente questo canto va KO in tre turni, se non lo si sostituisce.",
+ },
+ icyWind: {
+ name: "Ventogelato",
+ effect: "Chi la usa attacca i nemici con una folata di aria gelida e ne riduce anche la Velocità.",
+ },
+ detect: {
+ name: "Individua",
+ effect: "Consente al Pokémon di evitare tutti gli attacchi. Può fallire se usato in successione.",
+ },
+ boneRush: {
+ name: "Ossoraffica",
+ effect: "Chi la usa colpisce il nemico con un osso duro, da 2 a 5 volte di fila.",
+ },
+ lockOn: {
+ name: "Localizza",
+ effect: "Chi la usa punta il nemico con precisione. La mossa successiva andrà a segno.",
+ },
+ outrage: {
+ name: "Oltraggio",
+ effect: "Chi la usa sfoga la sua ira e attacca il nemico per due o tre turni prima di essere lasciato in preda alla confusione.",
+ },
+ sandstorm: {
+ name: "Terrempesta",
+ effect: "Causa una tempesta di sabbia per cinque turni che danneggia tutti i tipi in campo esclusi Terra, Roccia e Acciaio.",
+ },
+ gigaDrain: {
+ name: "Gigassorbimento",
+ effect: "Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.",
+ },
+ endure: {
+ name: "Resistenza",
+ effect: "Chi la usa resta con un PS anche se subisce un colpo da KO in quel turno. Usata in successione può fallire.",
+ },
+ charm: {
+ name: "Fascino",
+ effect: "Ammalia il nemico con lo sguardo per renderlo meno cauto. Riduce molto l'Attacco del nemico.",
+ },
+ rollout: {
+ name: "Rotolamento",
+ effect: "Chi la usa colpisce il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.",
+ },
+ falseSwipe: {
+ name: "Falsofinale",
+ effect: "Chi la usa trattiene il colpo per impedire al nemico di andare KO, lasciandolo con almeno un PS.",
+ },
+ swagger: {
+ name: "Bullo",
+ effect: "Chi la usa provoca il bersaglio e lo confonde, facendo aumentare però di molto il suo Attacco.",
+ },
+ milkDrink: {
+ name: "Buonlatte",
+ effect: "Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.",
+ },
+ spark: {
+ name: "Scintilla",
+ effect: "Colpisce il nemico con una carica elettrica e può anche paralizzarlo.",
+ },
+ furyCutter: {
+ name: "Tagliofuria",
+ effect: "Colpisce il nemico con falci o artigli. Se usata in successione aumenta di potenza ogni volta che va a segno.",
+ },
+ steelWing: {
+ name: "Alacciaio",
+ effect: "Colpisce il nemico con ali d'acciaio. Può anche aumentare la Difesa di chi la usa.",
+ },
+ meanLook: {
+ name: "Malosguardo",
+ effect: "Chi la usa blocca il nemico con uno sguardo oscuro e ammaliante, impedendogli la fuga.",
+ },
+ attract: {
+ name: "Attrazione",
+ effect: "Se il nemico è del sesso opposto, s'infatua e attacca con meno probabilità.",
+ },
+ sleepTalk: {
+ name: "Sonnolalia",
+ effect: "Chi la usa sfodera a caso una delle proprie mosse mentre sta dormendo.",
+ },
+ healBell: {
+ name: "Rintoccasana",
+ effect: "Chi la usa fa suonare le campane per curare completamente tutta la squadra.",
+ },
+ return: {
+ name: "Ritorno",
+ effect: "Mossa che diventa tanto più potente quanto maggiore è il grado di affezione del Pokémon per il proprio Allenatore.",
+ },
+ present: {
+ name: "Regalino",
+ effect: "Chi la usa dà un regalo bomba al bersaglio. A volte, però, può fargli recuperare PS.",
+ },
+ frustration: {
+ name: "Frustrazione",
+ effect: "Mossa che diventa tanto più potente quanto minore è il grado di affezione del Pokémon per il proprio Allenatore.",
+ },
+ safeguard: {
+ name: "Salvaguardia",
+ effect: "Chi la usa crea un campo protettivo che difende tutta la squadra dai problemi di stato per cinque turni.",
+ },
+ painSplit: {
+ name: "Malcomune",
+ effect: "Chi la usa somma i propri PS a quelli di un altro Pokémon per poi dividerli in parti uguali.",
+ },
+ sacredFire: {
+ name: "Magifuoco",
+ effect: "Colpisce il nemico con un fuoco mistico di enorme intensità che può anche causargli una scottatura.",
+ },
+ magnitude: {
+ name: "Magnitudo",
+ effect: "Chi la usa scatena un terremoto d'intensità variabile che danneggia gli altri Pokémon in campo.",
+ },
+ dynamicPunch: {
+ name: "Dinamipugno",
+ effect: "Colpisce il nemico con un pugno davvero forte. Se va a segno, lo confonde.",
+ },
+ megahorn: {
+ name: "Megacorno",
+ effect: "Chi la usa utilizza il suo corno per montare con grande forza il nemico.",
+ },
+ dragonBreath: {
+ name: "Dragospiro",
+ effect: "Investe il nemico con una raffica potentissima che arreca danni. Può anche paralizzarlo.",
+ },
+ batonPass: {
+ name: "Staffetta",
+ effect: "Chi la usa è sostituito da un Pokémon della squadra, che eredita anche ogni modifica alle statistiche.",
+ },
+ encore: {
+ name: "Ripeti",
+ effect: "Chi la usa costringe il nemico a continuare ad utilizzare solo l'ultima mossa utilizzata da 2 a 6 turni.",
+ },
+ pursuit: {
+ name: "Inseguimento",
+ effect: "Una mossa d'attacco che infligge un danno doppio se il nemico è in fase di sostituzione.",
+ },
+ rapidSpin: {
+ name: "Rapigiro",
+ effect: "Un attacco roteante che elimina gli effetti delle mosse Legatutto, Avvolgibotta, Parassiseme e Punte.",
+ },
+ sweetScent: {
+ name: "Profumino",
+ effect: "Un dolce profumo che alletta il nemico per ridurne l'elusione. Attira anche Pokémon selvatici.",
+ },
+ ironTail: {
+ name: "Codacciaio",
+ effect: "Il nemico viene colpito da una robusta coda d'acciaio. Può anche ridurne la Difesa.",
+ },
+ metalClaw: {
+ name: "Ferrartigli",
+ effect: "Colpisce il nemico con artigli d'acciaio. Può anche aumentare l'Attacco di chi la usa.",
+ },
+ vitalThrow: {
+ name: "Vitaltiro",
+ effect: "Chi la usa attacca per ultimo, ma il colpo è sempre infallibile.",
+ },
+ morningSun: {
+ name: "Mattindoro",
+ effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.",
+ },
+ synthesis: {
+ name: "Sintesi",
+ effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.",
+ },
+ moonlight: {
+ name: "Lucelunare",
+ effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.",
+ },
+ hiddenPower: {
+ name: "Introforza",
+ effect: "Mossa singolare che cambia tipo e potenza a seconda del Pokémon che la usa.",
+ },
+ crossChop: {
+ name: "Incrocolpo",
+ effect: "Investe il nemico con un colpo sferrato con entrambe le braccia incrociate. Probabile brutto colpo.",
+ },
+ twister: {
+ name: "Tornado",
+ effect: "Un potente tornado si abbatte sul nemico. Può anche far tentennare.",
+ },
+ rainDance: {
+ name: "Pioggiadanza",
+ effect: "Chi la usa provoca una forte pioggia per cinque turni, potenziando le mosse di tipo Acqua.",
+ },
+ sunnyDay: {
+ name: "Giornodisole",
+ effect: "Chi la usa intensifica i raggi solari per cinque turni, potenziando le mosse di tipo Fuoco.",
+ },
+ crunch: {
+ name: "Sgranocchio",
+ effect: "Il nemico viene morso con denti affilati. Può anche ridurne la Difesa.",
+ },
+ mirrorCoat: {
+ name: "Specchiovelo",
+ effect: "Mossa che replica ogni attacco speciale, arrecando il doppio del danno ricevuto.",
+ },
+ psychUp: {
+ name: "Psicamisù",
+ effect: "Chi la usa s'ipnotizza per copiare ogni modifica alle statistiche del bersaglio.",
+ },
+ extremeSpeed: {
+ name: "Extrarapido",
+ effect: "Chi la usa carica il nemico a velocità impressionante ed attacca sempre per primo.",
+ },
+ ancientPower: {
+ name: "Forzantica",
+ effect: "Colpisce il nemico con una forza primordiale. Può aumentare tutte le statistiche.",
+ },
+ shadowBall: {
+ name: "Palla Ombra",
+ effect: "Lancia sul nemico una sfera nera. Può anche ridurne la Difesa Speciale.",
+ },
+ futureSight: {
+ name: "Divinazione",
+ effect: "Due turni dopo l'utilizzo di questa mossa, il nemico viene attaccato con energia psichica.",
+ },
+ rockSmash: {
+ name: "Spaccaroccia",
+ effect: "Il nemico viene colpito da un pugno in grado di frantumare anche la roccia. Può anche ridurne la Difesa.",
+ },
+ whirlpool: {
+ name: "Mulinello",
+ effect: "Intrappola il nemico in un turbine d'acqua che dura per quattro o cinque turni infliggendogli dei danni ogni turno.",
+ },
+ beatUp: {
+ name: "Picchiaduro",
+ effect: "Chi la usa chiama in aiuto i Pokémon della squadra: più ce ne sono, maggiore è il numero di attacchi.",
+ },
+ fakeOut: {
+ name: "Bruciapelo",
+ effect: "Mossa che fa agire per primo e fa tentennare il nemico. Funziona solo appena sceso in campo.",
+ },
+ uproar: {
+ name: "Baraonda",
+ effect: "Chi la usa attacca per tre turni con un frastuono che non fa dormire nessuno.",
+ },
+ stockpile: {
+ name: "Accumulo",
+ effect: "Chi la usa accumula energia aumentando la Difesa e la Difesa Speciale. Si può utilizzare tre volte.",
+ },
+ spitUp: {
+ name: "Sfoghenergia",
+ effect: "Tutta l'energia accumulata in precedenza con Accumulo è rilasciata nell'attacco. Maggiore è l'energia, più danni si arrecano.",
+ },
+ swallow: {
+ name: "Introenergia",
+ effect: "Chi la usa assorbe l'energia raccolta con la mossa Accumulo e recupera PS. Maggiore è l'energia, più PS si recuperano.",
+ },
+ heatWave: {
+ name: "Ondacalda",
+ effect: "Chi la usa investe i nemici con una folata di vento caldo. Può anche scottare.",
+ },
+ hail: {
+ name: "Grandine",
+ effect: "Chi la usa causa una grandinata che dura cinque turni. Danneggia tutti i Pokémon tranne quelli di tipo Ghiaccio.",
+ },
+ torment: {
+ name: "Attaccalite",
+ effect: "Chi la usa tormenta e fa infuriare il nemico, impedendogli di usare la stessa mossa due volte di seguito.",
+ },
+ flatter: {
+ name: "Adulazione",
+ effect: "Adula il bersaglio e lo confonde, ma ne aumenta l'Attacco Speciale.",
+ },
+ willOWisp: {
+ name: "Fuocofatuo",
+ effect: "Fiamme intense di colore viola causano una scottatura al nemico.",
+ },
+ memento: {
+ name: "Memento",
+ effect: "Chi la usa va KO. Tuttavia, riduce di molto l'Attacco e l'Attacco Speciale del nemico.",
+ },
+ facade: {
+ name: "Facciata",
+ effect: "Mossa d'attacco che raddoppia la potenza se chi la usa è scottato, avvelenato o paralizzato.",
+ },
+ focusPunch: {
+ name: "Centripugno",
+ effect: "Chi la usa prende la mira prima di sferrare un pugno. Fallirà se verrà colpito prima di eseguire la mossa.",
+ },
+ smellingSalts: {
+ name: "Maniereforti",
+ effect: "Infligge un danno doppio ad un bersaglio paralizzato, ma ne cura anche la paralisi.",
+ },
+ followMe: {
+ name: "Sonoqui",
+ effect: "Chi la usa attrae l'attenzione su di sé, costringendo i nemici a sceglierlo sempre come bersaglio.",
+ },
+ naturePower: {
+ name: "Naturforza",
+ effect: "Mossa che fa uso della forza della natura. Il suo effetto varia in base all'ambiente.",
+ },
+ charge: {
+ name: "Sottocarica",
+ effect: "Potenzia la mossa di tipo Elettro usata subito dopo. Aumenta anche la Difesa Speciale di chi la usa.",
+ },
+ taunt: {
+ name: "Provocazione",
+ effect: "Provoca il nemico, inducendolo ad usare solo mosse d'attacco per tre turni.",
+ },
+ helpingHand: {
+ name: "Altruismo",
+ effect: "Mossa che aumenta la potenza dell'attacco di un alleato.",
+ },
+ trick: {
+ name: "Raggiro",
+ effect: "Chi la usa coglie il bersaglio in contropiede e l'obbliga a cambiare il suo strumento con il proprio.",
+ },
+ rolePlay: {
+ name: "Giocodiruolo",
+ effect: "Chi la usa mima in tutto il bersaglio, copiandone l'abilità.",
+ },
+ wish: {
+ name: "Desiderio",
+ effect: "Permette di recuperare metà dei PS massimi al turno successivo.",
+ },
+ assist: {
+ name: "Assistente",
+ effect: "Chi la usa utilizza in fretta e a caso una delle mosse degli altri Pokémon della squadra.",
+ },
+ ingrain: {
+ name: "Radicamento",
+ effect: "Chi la usa mette delle radici che gli fanno recuperare PS a ogni turno. Non può essere sostituito.",
+ },
+ superpower: {
+ name: "Troppoforte",
+ effect: "Chi la usa attacca il nemico con grande forza, ma il suo Attacco e la sua Difesa diminuiscono.",
+ },
+ magicCoat: {
+ name: "Magivelo",
+ effect: "Una barriera rimanda al mittente l'effetto di mosse come Parassiseme e di mosse che influenzano lo stato.",
+ },
+ recycle: {
+ name: "Riciclo",
+ effect: "Chi la usa ricicla uno strumento tenuto, già usato nella lotta, e lo può riutilizzare.",
+ },
+ revenge: {
+ name: "Vendetta",
+ effect: "Mossa d'attacco che infligge un danno doppio se si è stati colpiti dal nemico nello stesso turno.",
+ },
+ brickBreak: {
+ name: "Breccia",
+ effect: "Colpisce il nemico con una mano e rompe barriere come Riflesso e Schermoluce.",
+ },
+ yawn: {
+ name: "Sbadiglio",
+ effect: "Chi la usa fa un grande sbadiglio che addormenta il nemico al turno seguente.",
+ },
+ knockOff: {
+ name: "Privazione",
+ effect: "Attacco che blocca anche lo strumento tenuto dal nemico, impedendone l'uso nella lotta.",
+ },
+ endeavor: {
+ name: "Rimonta",
+ effect: "Attacco che riduce i PS del nemico a una quantità pari ai PS di chi la usa.",
+ },
+ eruption: {
+ name: "Eruzione",
+ effect: "Attacco impetuoso ed esplosivo la cui potenza è proporzionale ai PS di chi lo usa.",
+ },
+ skillSwap: {
+ name: "Baratto",
+ effect: "Chi la usa sfrutta le sue facoltà mentali per scambiare l'abilità con il bersaglio.",
+ },
+ imprison: {
+ name: "Esclusiva",
+ effect: "Chi la usa impedisce al nemico di usare mosse che conoscono entrambi.",
+ },
+ refresh: {
+ name: "Rinfrescata",
+ effect: "Chi la usa riposa per curarsi da avvelenamento, paralisi e scottatura.",
+ },
+ grudge: {
+ name: "Rancore",
+ effect: "Se chi la usa va KO, i PP della mossa nemica che lo ha messo fuori gioco si azzerano.",
+ },
+ snatch: {
+ name: "Scippo",
+ effect: "Chi la usa ruba e utilizza la mossa curativa o modifica-statistiche che il bersaglio stava per usare.",
+ },
+ secretPower: {
+ name: "Forzasegreta",
+ effect: "Attacco che può avere un effetto aggiuntivo a seconda del luogo in cui si trova chi lo usa.",
+ },
+ dive: {
+ name: "Sub",
+ effect: "Chi la usa si tuffa in acqua per emergere e attaccare al turno seguente. Fuori dalla lotta permette di immergersi sott'acqua.",
+ },
+ armThrust: {
+ name: "Sberletese",
+ effect: "Raffica di ceffoni che colpisce da due a cinque volte di fila.",
+ },
+ camouflage: {
+ name: "Camuffamento",
+ effect: "Modifica il tipo di chi la usa a seconda del luogo, ad esempio sull'acqua, nell'erba o in una grotta.",
+ },
+ tailGlow: {
+ name: "Codadiluce",
+ effect: "Chi la usa fissa una luce forte per concentrarsi e aumentare moltissimo l'Attacco Speciale.",
+ },
+ lusterPurge: {
+ name: "Abbagliante",
+ effect: "Chi la usa scatena un'esplosione abbagliante che può anche ridurre la Difesa Speciale del Pokémon colpito.",
+ },
+ mistBall: {
+ name: "Foschisfera",
+ effect: "Una sfera coperta di nebbia danneggia il nemico. Può anche ridurre l'Attacco Speciale.",
+ },
+ featherDance: {
+ name: "Danzadipiume",
+ effect: "Chi la usa copre il nemico con un manto di piume che riduce di molto il suo Attacco.",
+ },
+ teeterDance: {
+ name: "Strampadanza",
+ effect: "Chi la usa esegue una danza goffa che confonde tutti i Pokémon attorno.",
+ },
+ blazeKick: {
+ name: "Calciardente",
+ effect: "Chi la usa tira un calcio. Probabile brutto colpo. Può anche causare una scottatura.",
+ },
+ mudSport: {
+ name: "Fangata",
+ effect: "Chi la usa si ricopre di fango indebolendo le mosse di tipo Elettro finché resta in campo.",
+ },
+ iceBall: {
+ name: "Palla Gelo",
+ effect: "Chi la usa attacca il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.",
+ },
+ needleArm: {
+ name: "Pugnospine",
+ effect: "Chi la usa attacca colpendo il bersaglio con i suoi arti pieni di spine. Può far tentennare il Pokémon colpito.",
+ },
+ slackOff: {
+ name: "Pigro",
+ effect: "Chi la usa si rilassa recuperando metà dei propri PS massimi.",
+ },
+ hyperVoice: {
+ name: "Granvoce",
+ effect: "Chi la usa lancia un urlo straziante che danneggia i nemici.",
+ },
+ poisonFang: {
+ name: "Velenodenti",
+ effect: "Chi la usa morde il nemico con denti avvelenati che possono anche iperavvelenarlo.",
+ },
+ crushClaw: {
+ name: "Tritartigli",
+ effect: "Colpisce il nemico con artigli robusti e affilati che possono ridurne la Difesa.",
+ },
+ blastBurn: {
+ name: "Incendio",
+ effect: "Potente esplosione che danneggia il nemico, ma fa saltare il turno successivo a chi la provoca.",
+ },
+ hydroCannon: {
+ name: "Idrocannone",
+ effect: "Colpisce il nemico con un potente getto d'acqua. Chi la usa salta il turno successivo.",
+ },
+ meteorMash: {
+ name: "Meteorpugno",
+ effect: "Colpisce il nemico con un pugno veloce come una meteora. Può far pure salire l'Attacco di chi la usa.",
+ },
+ astonish: {
+ name: "Sgomento",
+ effect: "Chi la usa attacca il bersaglio emettendo un verso terrificante. Può anche farlo tentennare.",
+ },
+ weatherBall: {
+ name: "Palla Clima",
+ effect: "Mossa d'attacco che varia tipo e forza in base alle condizioni atmosferiche.",
+ },
+ aromatherapy: {
+ name: "Aromaterapia",
+ effect: "Chi la usa rilascia un dolce profumo che cura tutti problemi di stato propri e degli alleati.",
+ },
+ fakeTears: {
+ name: "Falselacrime",
+ effect: "Chi la usa inscena un pianto teatrale per commuovere il nemico. Ne riduce di molto la Difesa Speciale.",
+ },
+ airCutter: {
+ name: "Aerasoio",
+ effect: "Chi la usa provoca un vento tagliente che sferza i nemici. Probabile brutto colpo.",
+ },
+ overheat: {
+ name: "Vampata",
+ effect: "Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.",
+ },
+ odorSleuth: {
+ name: "Segugio",
+ effect: "Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.",
+ },
+ rockTomb: {
+ name: "Rocciotomba",
+ effect: "Colpisce il nemico con rocce. Inoltre, lo rallenta riducendone la Velocità.",
+ },
+ silverWind: {
+ name: "Ventargenteo",
+ effect: "Attacca con un forte vento di polvere di squame. Tutte le statistiche di chi la usa possono salire.",
+ },
+ metalSound: {
+ name: "Ferrostrido",
+ effect: "Orribile stridio, simile a quello prodotto dal metallo, che riduce di molto la Difesa Speciale del nemico.",
+ },
+ grassWhistle: {
+ name: "Meloderba",
+ effect: "Una dolce melodia culla il bersaglio e lo costringe ad addormentarsi.",
+ },
+ tickle: {
+ name: "Solletico",
+ effect: "Chi la usa solletica il nemico e lo fa ridere, riducendo il suo Attacco e la sua Difesa.",
+ },
+ cosmicPower: {
+ name: "Cosmoforza",
+ effect: "Chi la usa assorbe una forza mistica dallo spazio che aumenta la Difesa e la Difesa Speciale.",
+ },
+ waterSpout: {
+ name: "Zampillo",
+ effect: "Lancia un getto d'acqua contro il nemico che ha davanti e quelli adiacenti. La potenza è proporzionale al numero di PS di chi la usa.",
+ },
+ signalBeam: {
+ name: "Segnoraggio",
+ effect: "Chi la usa attacca con uno strano raggio di luce che può anche confondere il Pokémon colpito.",
+ },
+ shadowPunch: {
+ name: "Pugnodombra",
+ effect: "Il nemico riceve un pugno proveniente dalle tenebre. Questa mossa è infallibile.",
+ },
+ extrasensory: {
+ name: "Extrasenso",
+ effect: "Chi la usa attacca con una misteriosa forza invisibile. Può far tentennare il nemico.",
+ },
+ skyUppercut: {
+ name: "Stramontante",
+ effect: "Chi la usa attacca il nemico con un montante che può arrivare fino in cielo.",
+ },
+ sandTomb: {
+ name: "Sabbiotomba",
+ effect: "Chi la usa intrappola il nemico in un turbine di sabbia per quattro o cinque turni.",
+ },
+ sheerCold: {
+ name: "Purogelo",
+ effect: "Ondata di freddo penetrante che, se va a segno, fa andare KO il nemico.",
+ },
+ muddyWater: {
+ name: "Fanghiglia",
+ effect: "Chi la usa attacca con un getto di fango che può anche ridurre la precisione dei nemici.",
+ },
+ bulletSeed: {
+ name: "Semitraglia",
+ effect: "Chi la usa spara da due a cinque raffiche di semi contro il bersaglio in successione.",
+ },
+ aerialAce: {
+ name: "Aeroassalto",
+ effect: "Chi la usa attacca il nemico a grande velocità. Questa mossa è infallibile.",
+ },
+ icicleSpear: {
+ name: "Gelolancia",
+ effect: "Chi la usa spara ghiaccioli affilati contro il nemico da due a cinque volte di fila.",
+ },
+ ironDefense: {
+ name: "Ferroscudo",
+ effect: "Il corpo di chi la usa si indurisce come il ferro, facendone salire di molto la Difesa.",
+ },
+ block: {
+ name: "Blocco",
+ effect: "Chi la usa sbarra la strada al nemico impedendone la fuga o la sostituzione.",
+ },
+ howl: {
+ name: "Gridodilotta",
+ effect: "Chi la usa emette un verso molto forte per darsi coraggio e aumentare l'Attacco.",
+ },
+ dragonClaw: {
+ name: "Dragartigli",
+ effect: "Chi la usa attacca con artigli affilati che graffiano il nemico rapidamente e con grande forza.",
+ },
+ frenzyPlant: {
+ name: "Radicalbero",
+ effect: "Un groviglio di radici colpisce il nemico. Chi la usa salta il turno successivo.",
+ },
+ bulkUp: {
+ name: "Granfisico",
+ effect: "Chi la usa tende i muscoli per gonfiare il corpo, aumentando Difesa e Attacco.",
+ },
+ bounce: {
+ name: "Rimbalzo",
+ effect: "Chi la usa balza in alto e ricade sul nemico dopo un turno. Può anche paralizzare.",
+ },
+ mudShot: {
+ name: "Colpodifango",
+ effect: "Chi la usa attacca lanciando fango sul nemico. Riduce anche la Velocità.",
+ },
+ poisonTail: {
+ name: "Velenocoda",
+ effect: "Chi la usa colpisce con la coda e può avvelenare il nemico. Probabile brutto colpo.",
+ },
+ covet: {
+ name: "Supplica",
+ effect: "Chi la usa attacca il bersaglio sorridendo e gli ruba lo strumento che tiene.",
+ },
+ voltTackle: {
+ name: "Locomovolt",
+ effect: "Chi la usa si carica di elettricità e poi attacca. Può paralizzare il nemico. Il contraccolpo causa seri danni.",
+ },
+ magicalLeaf: {
+ name: "Fogliamagica",
+ effect: "Chi la usa sparpaglia strane foglie che inseguono il bersaglio. Questa mossa è infallibile.",
+ },
+ waterSport: {
+ name: "Docciascudo",
+ effect: "Chi la usa s'impregna d'acqua indebolendo le mosse di tipo Fuoco finché resta in campo.",
+ },
+ calmMind: {
+ name: "Calmamente",
+ effect: "Chi la usa, meditando, placa il proprio spirito per aumentare l'Attacco Speciale e la Difesa Speciale.",
+ },
+ leafBlade: {
+ name: "Fendifoglia",
+ effect: "Colpisce il nemico usando una foglia affilata come una spada. Probabile brutto colpo.",
+ },
+ dragonDance: {
+ name: "Dragodanza",
+ effect: "Danza mistica e vigorosa che aumenta l'Attacco e la Velocità di chi la usa.",
+ },
+ rockBlast: {
+ name: "Cadutamassi",
+ effect: "Colpisce il nemico con dei massi pesanti lanciati in rapida successione. Il numero di massi varia da due a cinque.",
+ },
+ shockWave: {
+ name: "Ondashock",
+ effect: "Chi la usa colpisce il nemico con una scossa di elettricità. È impossibile eludere questa mossa.",
+ },
+ waterPulse: {
+ name: "Idropulsar",
+ effect: "Il nemico viene colpito da un getto d'acqua potentissimo che può anche confonderlo.",
+ },
+ doomDesire: {
+ name: "Desiderio Fatale",
+ effect: "Intensa luce solare che colpisce il nemico dopo due turni dall'uso della mossa.",
+ },
+ psychoBoost: {
+ name: "Psicoslancio",
+ effect: "Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.",
+ },
+ roost: {
+ name: "Trespolo",
+ effect: "Chi la usa sta fermo e riposa, recuperando metà dei propri PS massimi.",
+ },
+ gravity: {
+ name: "Gravità",
+ effect: "Intensifica la gravità per cinque turni. Le mosse che fanno volare e Levitazione sono inutilizzabili.",
+ },
+ miracleEye: {
+ name: "Miracolvista",
+ effect: "Chi la usa rende i Pokémon di tipo Buio vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.",
+ },
+ wakeUpSlap: {
+ name: "Svegliopacca",
+ effect: "Un attacco che infligge doppi danni se il nemico è Addormentato. Inoltre, lo sveglierà dal sonno.",
+ },
+ hammerArm: {
+ name: "Martelpugno",
+ effect: "Chi la usa colpisce il nemico con il suo pugno forte e pesante, ma perde Velocità.",
+ },
+ gyroBall: {
+ name: "Vortexpalla",
+ effect: "Chi la usa colpisce il nemico con un vortice rapidissimo. Più lento è chi la usa, maggiore è il danno.",
+ },
+ healingWish: {
+ name: "Curardore",
+ effect: "Chi la usa va KO, ma il Pokémon che lo sostituisce recupera tutti i PS e risolve i problemi di stato.",
+ },
+ brine: {
+ name: "Acquadisale",
+ effect: "Se i PS del nemico sono scesi a metà o meno, questa mossa colpirà con il doppio della potenza.",
+ },
+ naturalGift: {
+ name: "Dononaturale",
+ effect: "Chi la usa trae forza dalla Bacca che tiene. Da questa dipendono il tipo e la forza dell'attacco.",
+ },
+ feint: {
+ name: "Fintoattacco",
+ effect: "Un attacco che colpisce un nemico che ha usato Protezione od Individua. Ne rimuoverà inoltre gli effetti.",
+ },
+ pluck: {
+ name: "Spennata",
+ effect: "Chi la usa becca il bersaglio. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.",
+ },
+ tailwind: {
+ name: "Ventoincoda",
+ effect: "Chi la usa crea turbolente raffiche di vento che aumentano la sua Velocità e quella di tutti i Pokémon della squadra.",
+ },
+ acupressure: {
+ name: "Acupressione",
+ effect: "Chi la usa esercita pressione su alcuni punti nevralgici e aumenta di molto una statistica a caso.",
+ },
+ metalBurst: {
+ name: "Metalscoppio",
+ effect: "Chi la usa si vendica sul nemico che l'ha appena ferito con una mossa anche più potente.",
+ },
+ uTurn: {
+ name: "Retromarcia",
+ effect: "Dopo aver selezionato questo attacco, chi la usa colpisce il nemico per poi essere sostituito con un altro Pokémon della squadra.",
+ },
+ closeCombat: {
+ name: "Zuffa",
+ effect: "Chi la usa attacca abbassando la guardia. La propria Difesa e la Difesa Speciale si riducono.",
+ },
+ payback: {
+ name: "Rivincita",
+ effect: "Chi la usa accumula forza, poi attacca. La potenza raddoppia se agisce dopo il Pokémon nemico.",
+ },
+ assurance: {
+ name: "Garanzia",
+ effect: "Se il nemico ha già subito dei danni nello stesso turno, la potenza di questa mossa raddoppia.",
+ },
+ embargo: {
+ name: "Divieto",
+ effect: "Impedisce al nemico di usare lo strumento che tiene e al suo Allenatore di usarne altri sul Pokémon.",
+ },
+ fling: {
+ name: "Lancio",
+ effect: "Chi la usa lancia sul nemico lo strumento che tiene. La forza e l'effetto dipendono dallo strumento.",
+ },
+ psychoShift: {
+ name: "Psicotrasfer",
+ effect: "Con la forza psichica e la suggestione, chi la usa può trasferire i suoi problemi di stato al Pokémon colpito.",
+ },
+ trumpCard: {
+ name: "Asso",
+ effect: "Minori PP rimangono a questa mossa, e maggiori danni apporterà al nemico.",
+ },
+ healBlock: {
+ name: "Anticura",
+ effect: "Chi la usa impedisce al nemico di utilizzare mosse o abilità recupera-PS per cinque turni.",
+ },
+ wringOut: {
+ name: "Strizzata",
+ effect: "Chi la usa stritola con forza il nemico. Più PS ha il nemico, maggiore è la potenza della mossa.",
+ },
+ powerTrick: {
+ name: "Ingannoforza",
+ effect: "Mossa psichica che permette a chi la usa di scambiare i valori delle sue statistiche di Attacco e Difesa.",
+ },
+ gastroAcid: {
+ name: "Gastroacido",
+ effect: "Chi la usa lancia acidi gastrici sul nemico. Il fluido annulla l'abilità del nemico.",
+ },
+ luckyChant: {
+ name: "Fortuncanto",
+ effect: "Chi la usa rivolge un incantesimo al cielo, impedendo al nemico di sferrare brutti colpi alla squadra.",
+ },
+ meFirst: {
+ name: "Precedenza",
+ effect: "Se chi la usa è più veloce del nemico, gli ruba la mossa e gliela ritorce contro con potenza persino maggiore.",
+ },
+ copycat: {
+ name: "Copione",
+ effect: "Chi la usa imita l'ultima mossa usata dal nemico. La mossa fallisce se questo non ha selezionato alcuna mossa.",
+ },
+ powerSwap: {
+ name: "Barattoforza",
+ effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche ad Attacco e Attacco Speciale con il bersaglio.",
+ },
+ guardSwap: {
+ name: "Barattoscudo",
+ effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche a Difesa e a Difesa Speciale con il bersaglio.",
+ },
+ punishment: {
+ name: "Punizione",
+ effect: "Questa mossa diventa più potente ogni volta che il nemico aumenta le proprie statistiche.",
+ },
+ lastResort: {
+ name: "Ultimascelta",
+ effect: "Per usare questa mossa, bisogna prima avvalersi in lotta di tutte le altre mosse conosciute.",
+ },
+ worrySeed: {
+ name: "Affannoseme",
+ effect: "Un seme che causa ansia viene piantato sul bersaglio. Ne muta l'abilità in Insonnia e ne previene o rimuove il sonno.",
+ },
+ suckerPunch: {
+ name: "Sbigoattacco",
+ effect: "Chi la usa può attaccare per primo. Fallisce se il nemico non sta preparando un attacco.",
+ },
+ toxicSpikes: {
+ name: "Fielepunte",
+ effect: "Chi la usa piazza ai piedi del nemico delle punte avvelenate. Avvelena ogni nemico che entra in lotta.",
+ },
+ heartSwap: {
+ name: "Cuorbaratto",
+ effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche alle statistiche con il bersaglio.",
+ },
+ aquaRing: {
+ name: "Acquanello",
+ effect: "Chi la usa si avvolge in un velo d'acqua. Recupera alcuni PS ad ogni turno.",
+ },
+ magnetRise: {
+ name: "Magnetascesa",
+ effect: "Chi la usa si solleva in aria per cinque turni grazie a un campo elettromagnetico.",
+ },
+ flareBlitz: {
+ name: "Fuococarica",
+ effect: "Chi la usa si ricopre di fuoco e carica il bersaglio, ma subisce il contraccolpo. Può anche scottare.",
+ },
+ forcePalm: {
+ name: "Palmoforza",
+ effect: "Chi la usa attacca con un'onda d'urto che può anche paralizzare il bersaglio.",
+ },
+ auraSphere: {
+ name: "Sferapulsar",
+ effect: "Chi la usa rilascia una forza eterea dal profondo del corpo. La mossa è infallibile.",
+ },
+ rockPolish: {
+ name: "Lucidatura",
+ effect: "Chi la usa leviga il proprio corpo per ridurne l'attrito. Aumenta di molto la Velocità.",
+ },
+ poisonJab: {
+ name: "Velenpuntura",
+ effect: "Il nemico viene colpito con un tentacolo od un braccio intriso di veleno. Può anche avvelenarlo.",
+ },
+ darkPulse: {
+ name: "Neropulsar",
+ effect: "Chi la usa emana un'aura impregnata di oscuri pensieri. Può anche far tentennare il Pokémon colpito.",
+ },
+ nightSlash: {
+ name: "Nottesferza",
+ effect: "Chi la usa colpisce il nemico appena si presenta l'occasione. Probabile brutto colpo.",
+ },
+ aquaTail: {
+ name: "Idrondata",
+ effect: "Chi la usa attacca agitando la coda come se fosse una violenta ondata in una tempesta furiosa.",
+ },
+ seedBomb: {
+ name: "Semebomba",
+ effect: "Chi la usa emette una raffica di semi dal guscio duro che colpiscono il bersaglio dall'alto.",
+ },
+ airSlash: {
+ name: "Eterelama",
+ effect: "Chi la usa attacca con un vento tagliente che squarcia il cielo. Può anche far tentennare il Pokémon colpito.",
+ },
+ xScissor: {
+ name: "Forbice X",
+ effect: "Chi la usa colpisce il nemico usando le sue falci o artigli come se fossero un paio di forbici.",
+ },
+ bugBuzz: {
+ name: "Ronzio",
+ effect: "Chi la usa muove le ali per creare un suono che danneggia il nemico. Può anche ridurne la Difesa Speciale.",
+ },
+ dragonPulse: {
+ name: "Dragopulsar",
+ effect: "Chi la usa attacca un'onda d'urto generata spalancando la bocca.",
+ },
+ dragonRush: {
+ name: "Dragofuria",
+ effect: "Chi la usa attacca con fare minaccioso e in questo modo può anche far tentennare il nemico.",
+ },
+ powerGem: {
+ name: "Gemmoforza",
+ effect: "Chi la usa attacca con un raggio di luce che brilla come se fosse fatto di pietre preziose.",
+ },
+ drainPunch: {
+ name: "Assorbipugno",
+ effect: "Pugno che assorbe energia. Fa recuperare una quantità di PS pari alla metà del danno inferto.",
+ },
+ vacuumWave: {
+ name: "Vuotonda",
+ effect: "Chi la usa rotea i pugni per lanciare un'onda di vuoto assoluto verso il nemico. Attacca per primo.",
+ },
+ focusBlast: {
+ name: "Focalcolpo",
+ effect: "Chi la usa incrementa la sua concentrazione mentale per scatenare il suo potere. Può ridurre la Difesa Speciale del nemico.",
+ },
+ energyBall: {
+ name: "Energipalla",
+ effect: "Chi la usa attinge energia dalla natura e la scaglia contro il bersaglio. Può anche ridurne la Difesa Speciale.",
+ },
+ braveBird: {
+ name: "Baldeali",
+ effect: "Chi la usa si nasconde sotto le ali e carica da bassa quota. Tuttavia, subisce considerevoli danni.",
+ },
+ earthPower: {
+ name: "Geoforza",
+ effect: "Dal terreno sotto il nemico si sprigiona una forza devastante. Può anche ridurne la Difesa Speciale.",
+ },
+ switcheroo: {
+ name: "Rapidscambio",
+ effect: "Chi la usa scambia in maniera fulminea il proprio oggetto con quello del nemico.",
+ },
+ gigaImpact: {
+ name: "Gigaimpatto",
+ effect: "Chi la usa carica il nemico usando tutta la sua forza, ma al turno successivo deve riposare.",
+ },
+ nastyPlot: {
+ name: "Congiura",
+ effect: "Chi la usa stimola il cervello pensando a cose cattive. Aumenta di molto l'Attacco Speciale.",
+ },
+ bulletPunch: {
+ name: "Pugnoscarica",
+ effect: "Chi la usa attacca con una scarica di pugni veloci come proiettili. Con questa mossa si colpisce per primi.",
+ },
+ avalanche: {
+ name: "Slavina",
+ effect: "Un attacco che infligge doppi danni se l'utilizzatore ha subito un attacco nello stesso turno.",
+ },
+ iceShard: {
+ name: "Geloscheggia",
+ effect: "Chi la usa crea dei pezzi di ghiaccio e li lancia. Con questa mossa si colpisce per primi.",
+ },
+ shadowClaw: {
+ name: "Ombrartigli",
+ effect: "Chi la usa attacca con artigli d'ombra che colpiscono con gran forza. Probabile brutto colpo.",
+ },
+ thunderFang: {
+ name: "Fulmindenti",
+ effect: "Chi la usa morde con denti elettrificati che possono anche paralizzare o far tentennare il nemico.",
+ },
+ iceFang: {
+ name: "Gelodenti",
+ effect: "Chi la usa morde il nemico con denti di ghiaccio. Può causare congelamento e tentennamento.",
+ },
+ fireFang: {
+ name: "Rogodenti",
+ effect: "Chi la usa morde il nemico con denti infuocati. Può causare scottatura e tentennamento.",
+ },
+ shadowSneak: {
+ name: "Furtivombra",
+ effect: "Chi la usa estende la sua ombra e attacca il nemico alle spalle. Con questa mossa si colpisce per primi.",
+ },
+ mudBomb: {
+ name: "Pantanobomba",
+ effect: "Chi la usa lancia dure palle di fango sul nemico. Può anche ridurne la Precisione.",
+ },
+ psychoCut: {
+ name: "Psicotaglio",
+ effect: "Chi la usa colpisce il nemico con lame fatte di forza psichica. Probabile brutto colpo.",
+ },
+ zenHeadbutt: {
+ name: "Cozzata Zen",
+ effect: "Chi la usa concentra la forza nella testa e si lancia contro il nemico. Può anche farlo tentennare.",
+ },
+ mirrorShot: {
+ name: "Cristalcolpo",
+ effect: "Chi la usa colpisce il nemico lanciando fasci d'energia dal suo corpo. Può ridurne la precisione.",
+ },
+ flashCannon: {
+ name: "Cannonflash",
+ effect: "Chi la usa attacca raccogliendo e rilasciando energia luminosa. Può ridurre la Difesa Speciale del nemico.",
+ },
+ rockClimb: {
+ name: "Scalaroccia",
+ effect: "Chi la usa carica con impeto incredibile. Il colpo può confondere il nemico.",
+ },
+ defog: {
+ name: "Scacciabruma",
+ effect: "Chi la usa spazza via barriere come Riflesso e Schermoluce con un forte vento e riduce la capacità d'elusione del nemico.",
+ },
+ trickRoom: {
+ name: "Distortozona",
+ effect: "Chi la usa crea una dimensione in cui i Pokémon più lenti si muovono per primi per cinque turni.",
+ },
+ dracoMeteor: {
+ name: "Dragobolide",
+ effect: "Attacca con meteore che cadono dal cielo. Il contraccolpo fa calare di molto l'Attacco Speciale di chi la usa.",
+ },
+ discharge: {
+ name: "Scarica",
+ effect: "Chi la usa colpisce i Pokémon che ha intorno con un bagliore elettrico. Può anche causare paralisi.",
+ },
+ lavaPlume: {
+ name: "Lavasbuffo",
+ effect: "Chi la usa lancia fiamme scarlatte sugli altri Pokémon in campo. Può anche scottare.",
+ },
+ leafStorm: {
+ name: "Verdebufera",
+ effect: "Si forma una tempesta di foglie affilate. Il contraccolpo riduce di molto l'Attacco Speciale di chi la usa.",
+ },
+ powerWhip: {
+ name: "Vigorcolpo",
+ effect: "Chi la usa agita violentemente liane o tentacoli per sferzare il bersaglio.",
+ },
+ rockWrecker: {
+ name: "Devastomasso",
+ effect: "Chi la usa attacca il nemico con un enorme masso, ma si deve riposare al turno successivo.",
+ },
+ crossPoison: {
+ name: "Velenocroce",
+ effect: "Attacco con zanne avvelenate che può anche avvelenare il Pokémon colpito. Probabile brutto colpo.",
+ },
+ gunkShot: {
+ name: "Sporcolancio",
+ effect: "Chi la usa attacca il nemico con rifiuti sudici che possono anche avvelenarlo.",
+ },
+ ironHead: {
+ name: "Metaltestata",
+ effect: "Chi la usa colpisce il nemico con la sua testa dura come l'acciaio. Può anche farlo tentennare.",
+ },
+ magnetBomb: {
+ name: "Bombagnete",
+ effect: "Chi la usa lancia bombe d'acciaio che si attaccano al nemico. Una mossa infallibile.",
+ },
+ stoneEdge: {
+ name: "Pietrataglio",
+ effect: "Chi la usa colpisce il nemico dal basso con pietre affilate. Probabile brutto colpo.",
+ },
+ captivate: {
+ name: "Incanto",
+ effect: "Se il nemico è del sesso opposto di chi la usa, sarà ammaliato e il suo Attacco Speciale diminuirà di molto.",
+ },
+ stealthRock: {
+ name: "Levitoroccia",
+ effect: "Chi la usa piazza una trappola di rocce sospese che danneggia i nemici che entrano in lotta.",
+ },
+ grassKnot: {
+ name: "Laccioerboso",
+ effect: "Chi la usa intrappola il bersaglio con l'erba e lo fa cadere. Danneggia maggiormente i Pokémon più pesanti.",
+ },
+ chatter: {
+ name: "Schiamazzo",
+ effect: "Chi la usa attacca creando un'onda sonora con le parole imparate. Può anche confondere il nemico.",
+ },
+ judgment: {
+ name: "Giudizio",
+ effect: "Chi la usa rilascia numerosi colpi di luce. Il tipo varia a seconda della Lastra tenuta.",
+ },
+ bugBite: {
+ name: "Coleomorso",
+ effect: "Chi la usa morde il nemico. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.",
+ },
+ chargeBeam: {
+ name: "Raggioscossa",
+ effect: "Chi la usa lancia un fascio di elettricità molto intensa. Può anche aumentare il suo Attacco Speciale.",
+ },
+ woodHammer: {
+ name: "Mazzuolegno",
+ effect: "Chi la usa si lancia con tutto il corpo contro il bersaglio, ma subisce anche considerevoli danni.",
+ },
+ aquaJet: {
+ name: "Acquagetto",
+ effect: "Chi la usa colpisce sempre per primo e a una tale velocità da rendersi quasi invisibile.",
+ },
+ attackOrder: {
+ name: "Comandourto",
+ effect: "Chi la usa raduna i suoi sgherri per colpire il nemico. Probabile brutto colpo.",
+ },
+ defendOrder: {
+ name: "Comandoscudo",
+ effect: "Chi la usa raduna i suoi sgherri per creare uno scudo, aumentando Difesa e Difesa Speciale.",
+ },
+ healOrder: {
+ name: "Comandocura",
+ effect: "Chi la usa raduna i propri sgherri per farsi curare. Recupera metà dei PS massimi.",
+ },
+ headSmash: {
+ name: "Zuccata",
+ effect: "Chi la usa attacca con tutta la potenza di cui dispone, ma subisce danni considerevoli.",
+ },
+ doubleHit: {
+ name: "Doppiosmash",
+ effect: "Chi la usa colpisce il nemico con la coda due volte di fila.",
+ },
+ roarOfTime: {
+ name: "Fragortempo",
+ effect: "Chi la usa colpisce il nemico con una forza capace di alterare il tempo, ma deve stare fermo il turno dopo.",
+ },
+ spacialRend: {
+ name: "Fendispazio",
+ effect: "Chi la usa lacera il nemico e lo spazio che lo circonda. Probabile brutto colpo.",
+ },
+ lunarDance: {
+ name: "Lunardanza",
+ effect: "Chi la usa va KO. Il Pokémon che lo sostituisce risolve i propri problemi di stato e recupera PS e PP.",
+ },
+ crushGrip: {
+ name: "Sbriciolmano",
+ effect: "Colpisce il nemico con grande forza. Più PS ha il nemico, maggiore è la potenza della mossa.",
+ },
+ magmaStorm: {
+ name: "Magmaclisma",
+ effect: "Intrappola il nemico in un turbine di fuoco che dura per quattro o cinque turni.",
+ },
+ darkVoid: {
+ name: "Vuototetro",
+ effect: "Trascina i nemici in un mondo di totale oscurità e li fa addormentare.",
+ },
+ seedFlare: {
+ name: "Infuriaseme",
+ effect: "Chi la usa genera un'onda d'urto dal suo corpo. Può anche ridurre di molto la Difesa Speciale del bersaglio.",
+ },
+ ominousWind: {
+ name: "Funestovento",
+ effect: "Chi la usa crea una raffica di vento ripugnante. Può aumentare tutte le statistiche di chi la usa.",
+ },
+ shadowForce: {
+ name: "Oscurotuffo",
+ effect: "Chi la usa sparisce e poi colpisce il nemico al turno successivo. Evita pure Protezione o Individua.",
+ },
+ honeClaws: {
+ name: "Unghiaguzze",
+ effect: "Chi la usa affila i propri artigli, aumentando Attacco e precisione.",
+ },
+ wideGuard: {
+ name: "Bodyguard",
+ effect: "Chi la usa para tutti i colpi diretti alla intera squadra per un turno. Se usata in successione può fallire.",
+ },
+ guardSplit: {
+ name: "Paridifesa",
+ effect: "Chi la usa sfrutta la sua forza psichica per sommare Difesa e Difesa Speciale a quelle del bersaglio e dividerle equamente.",
+ },
+ powerSplit: {
+ name: "Pariattacco",
+ effect: "Chi la usa sfrutta la sua forza psichica per sommare Attacco e Attacco Speciale a quelli del bersaglio e dividerli equamente.",
+ },
+ wonderRoom: {
+ name: "Mirabilzona",
+ effect: "Chi la usa crea una dimensione in cui Difesa e Difesa Speciale di tutti i Pokémon vengono scambiate per cinque turni.",
+ },
+ psyshock: {
+ name: "Psicoshock",
+ effect: "Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.",
+ },
+ venoshock: {
+ name: "Velenoshock",
+ effect: "Lancia uno speciale liquido tossico sul bersaglio. Se questi è avvelenato, il danno provocato raddoppia.",
+ },
+ autotomize: {
+ name: "Sganciapesi",
+ effect: "Chi la usa si libera di tutti i pesi in eccesso, alleggerendosi e aumentando di molto la propria Velocità.",
+ },
+ ragePowder: {
+ name: "Polverabbia",
+ effect: "Chi la usa attira l'attenzione dei nemici cospargendosi di una polvere irritante e diventando bersaglio di tutti gli attacchi.",
+ },
+ telekinesis: {
+ name: "Telecinesi",
+ effect: "Chi la usa fa fluttuare in aria il bersaglio, rendendolo facile da colpire per tre turni.",
+ },
+ magicRoom: {
+ name: "Magicozona",
+ effect: "Chi la usa crea una dimensione in cui l'effetto degli strumenti tenuti da tutti i Pokémon è annullato per cinque turni.",
+ },
+ smackDown: {
+ name: "Abbattimento",
+ effect: "Chi la usa lancia una pietra o un proiettile. Può colpire anche un bersaglio in volo e farlo cadere.",
+ },
+ stormThrow: {
+ name: "Tempestretta",
+ effect: "Chi la usa sferra un colpo micidiale al bersaglio, stritolandolo. Brutto colpo assicurato.",
+ },
+ flameBurst: {
+ name: "Pirolancio",
+ effect: "Chi la usa emana una fiammata che colpisce il bersaglio e si propaga fino a raggiungere i Pokémon accanto.",
+ },
+ sludgeWave: {
+ name: "Fangonda",
+ effect: "Lancia un'onda di fango che attacca tutti i Pokémon nelle vicinanze. Può anche avvelenare.",
+ },
+ quiverDance: {
+ name: "Eledanza",
+ effect: "Danza leggiadra ed elegante che aumenta l'Attacco Speciale, la Difesa Speciale e la Velocità di chi la usa.",
+ },
+ heavySlam: {
+ name: "Pesobomba",
+ effect: "Chi la usa si lancia contro il bersaglio con tutto il proprio peso. Più è pesante rispetto ad esso e più danni causa.",
+ },
+ synchronoise: {
+ name: "Sincrumore",
+ effect: "Chi la usa infligge danni a tutti i Pokémon del suo stesso tipo che ha vicino usando misteriose onde elettromagnetiche.",
+ },
+ electroBall: {
+ name: "Energisfera",
+ effect: "Chi la usa attacca con una sfera d'energia elettrica. Più è rapido rispetto al bersaglio e più danni arreca.",
+ },
+ soak: {
+ name: "Inondazione",
+ effect: "Chi la usa proietta un lungo getto d'acqua contro il bersaglio e lo rende un Pokémon di tipo Acqua.",
+ },
+ flameCharge: {
+ name: "Nitrocarica",
+ effect: "Chi la usa si copre di fuoco e attacca il bersaglio. Concentrandosi aumenta, inoltre, la propria Velocità.",
+ },
+ coil: {
+ name: "Arrotola",
+ effect: "Chi la usa si concentra, aumentando Attacco, Difesa e precisione.",
+ },
+ lowSweep: {
+ name: "Calciobasso",
+ effect: "Chi la usa colpisce con un attacco fulmineo la parte inferiore del corpo del bersaglio, riducendone la Velocità.",
+ },
+ acidSpray: {
+ name: "Acidobomba",
+ effect: "Chi la usa attacca il bersaglio con un acido altamente corrosivo. Il fluido riduce di molto la Difesa Speciale del bersaglio.",
+ },
+ foulPlay: {
+ name: "Ripicca",
+ effect: "Chi la usa sfrutta la forza del bersaglio. Il danno inflitto è proporzionale all'Attacco dell'avversario.",
+ },
+ simpleBeam: {
+ name: "Ondisinvolta",
+ effect: "Chi la usa emette un misterioso raggio psichico che trasforma l'abilità del Pokémon colpito in Disinvoltura.",
+ },
+ entrainment: {
+ name: "Saltamicizia",
+ effect: "Chi la usa saltella con un buffo ritmo, invitando il bersaglio a imitarlo e rendendo la sua abilità identica alla propria.",
+ },
+ afterYou: {
+ name: "Cortesia",
+ effect: "Chi la usa aiuta un bersaglio più lento permettendogli di agire subito dopo.",
+ },
+ round: {
+ name: "Coro",
+ effect: "Attacca il bersaglio con una melodia. Se usata ripetutamente da uno o più Pokémon i danni inflitti aumentano.",
+ },
+ echoedVoice: {
+ name: "Echeggiavoce",
+ effect: "Attacca il bersaglio con la propria voce echeggiante. Se usata a ripetizione da uno o più Pokémon il danno aumenta.",
+ },
+ chipAway: {
+ name: "Insidia",
+ effect: "Chi la usa attacca non appena il bersaglio abbassa la guardia. Il danno inflitto prescinde dalle modifiche alle statistiche.",
+ },
+ clearSmog: {
+ name: "Pulifumo",
+ effect: "Attacca il bersaglio lanciandogli contro una nuvola di fumo speciale, che annulla ogni modifica alle statistiche.",
+ },
+ storedPower: {
+ name: "Veicolaforza",
+ effect: "Attacca il bersaglio con l'energia accumulata. Più sono state aumentate le statistiche, maggiore è il danno inflitto.",
+ },
+ quickGuard: {
+ name: "Anticipo",
+ effect: "Chi la usa protegge tutta la squadra dalle mosse dei nemici che fanno colpire per primi. Se usata in successione può fallire.",
+ },
+ allySwitch: {
+ name: "Cambiaposto",
+ effect: "Chi la usa si teletrasporta al posto di un compagno in campo, grazie ad un misterioso potere.",
+ },
+ scald: {
+ name: "Idrovampata",
+ effect: "Chi la usa attacca il bersaglio con un getto d'acqua bollente che può anche scottarlo.",
+ },
+ shellSmash: {
+ name: "Gettaguscio",
+ effect: "Chi la usa si disfa del guscio. Difesa e Dif. Sp. calano, ma aumentano di molto Attacco, Att. Sp. e Velocità.",
+ },
+ healPulse: {
+ name: "Curapulsar",
+ effect: "Chi la usa lancia un'onda rilassante che fa recuperare al bersaglio metà dei suoi PS massimi.",
+ },
+ hex: {
+ name: "Sciagura",
+ effect: "Attacco che causa un danno enorme se il bersaglio ha problemi di stato.",
+ },
+ skyDrop: {
+ name: "Cadutalibera",
+ effect: "Porta il bersaglio in cielo e lo scaglia a terra al turno successivo. Il bersaglio catturato non può muoversi.",
+ },
+ shiftGear: {
+ name: "Cambiomarcia",
+ effect: "Facendo ruotare gli ingranaggi, chi la usa aumenta non solo il proprio Attacco, ma anche di molto la propria Velocità.",
+ },
+ circleThrow: {
+ name: "Ribaltiro",
+ effect: "Il bersaglio è scaraventato via ed è costretto a lasciare il posto a un altro. Se è selvatico, la lotta finisce.",
+ },
+ incinerate: {
+ name: "Bruciatutto",
+ effect: "Attacca il nemico con una fiammata. Se il nemico ha una Bacca, viene divorata dalle fiamme.",
+ },
+ quash: {
+ name: "Spintone",
+ effect: "Chi la usa trattiene il bersaglio, costringendolo ad agire per ultimo.",
+ },
+ acrobatics: {
+ name: "Acrobazia",
+ effect: "Attacca rapidamente il bersaglio. Se chi la usa non ha uno strumento, infligge al nemico grossi danni.",
+ },
+ reflectType: {
+ name: "Riflettipo",
+ effect: "Chi la usa cambia il proprio tipo in quello del bersaglio.",
+ },
+ retaliate: {
+ name: "Nemesi",
+ effect: "Vendica un compagno messo KO. Se ciò è accaduto al turno precedente, il danno è maggiore.",
+ },
+ finalGambit: {
+ name: "Azzardo",
+ effect: "Chi la usa attacca con tutta la potenza di cui dispone e va KO, ma infligge al bersaglio un danno pari ai PS che ha perso.",
+ },
+ bestow: {
+ name: "Cediregalo",
+ effect: "Chi la usa consegna il proprio strumento al bersaglio se ne è sprovvisto.",
+ },
+ inferno: {
+ name: "Marchiatura",
+ effect: "Il bersaglio viene avvolto da intense fiammate che causano scottature.",
+ },
+ waterPledge: {
+ name: "Acquapatto",
+ effect: "Attacca il nemico con una colonna d'acqua. Se usata con Fiammapatto, aumentano gli effetti e un arcobaleno appare in cielo.",
+ },
+ firePledge: {
+ name: "Fiammapatto",
+ effect: "Attacca il nemico con una colonna di fuoco. Se usata con Erbapatto, aumentano gli effetti e il campo diventa un mare di fuoco.",
+ },
+ grassPledge: {
+ name: "Erbapatto",
+ effect: "Attacca il bersaglio con una colonna d'erba. Se usata con Acquapatto, gli effetti aumentano e il campo diventa una palude.",
+ },
+ voltSwitch: {
+ name: "Invertivolt",
+ effect: "Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l'attacco.",
+ },
+ struggleBug: {
+ name: "Entomoblocco",
+ effect: "Colpisce i nemici opponendo resistenza e riducendo il loro Attacco Speciale.",
+ },
+ bulldoze: {
+ name: "Battiterra",
+ effect: "Chi la usa calpesta il terreno e scatena un terremoto che danneggia tutti i Pokémon nei paraggi e ne riduce anche la Velocità.",
+ },
+ frostBreath: {
+ name: "Alitogelido",
+ effect: "Chi la usa attacca il bersaglio con un soffio d'aria gelida. Brutto colpo assicurato.",
+ },
+ dragonTail: {
+ name: "Codadrago",
+ effect: "Chi la usa fa volar via il bersaglio in modo che venga sostituito. Se il bersaglio è un Pokémon selvatico, la lotta finisce.",
+ },
+ workUp: {
+ name: "Cuordileone",
+ effect: "Chi la usa si tira su di morale, aumentando il proprio Attacco e l'Attacco Speciale.",
+ },
+ electroweb: {
+ name: "Elettrotela",
+ effect: "Chi la usa attacca i nemici catturandoli con una ragnatela elettrica e riducendone la Velocità.",
+ },
+ wildCharge: {
+ name: "Sprizzalampo",
+ effect: "Chi la usa si carica di elettricità per poi scagliarsi sul bersaglio, ma subisce dei danni per il contraccolpo.",
+ },
+ drillRun: {
+ name: "Giravvita",
+ effect: "Chi la usa si scaglia sul bersaglio ruotando su se stesso come un trapano perforante. Probabile brutto colpo.",
+ },
+ dualChop: {
+ name: "Doppiocolpo",
+ effect: "Chi la usa attacca due volte il bersaglio con dei colpi estremamente forti.",
+ },
+ heartStamp: {
+ name: "Cuorestampo",
+ effect: "Chi la usa distrae il nemico con un faccino innocente per poi sferrargli un colpo devastante che può farlo tentennare.",
+ },
+ hornLeech: {
+ name: "Legnicorno",
+ effect: "Chi la usa infilza il bersaglio con le corna e assorbe una quantità di PS pari a metà del danno inferto.",
+ },
+ sacredSword: {
+ name: "Spadasolenne",
+ effect: "Chi la usa taglia il nemico con una spada magica. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.",
+ },
+ razorShell: {
+ name: "Conchilama",
+ effect: "Chi la usa colpisce il bersaglio con il suo guscio affilato. Il colpo può anche ridurre la Difesa del bersaglio.",
+ },
+ heatCrash: {
+ name: "Marchiafuoco",
+ effect: "Chi la usa carica con il suo corpo rovente. Più è pesante rispetto al bersaglio e più danni causa.",
+ },
+ leafTornado: {
+ name: "Vorticerba",
+ effect: "Chi la usa avvolge e attacca il bersaglio con foglie affilate che possono anche ridurne la precisione.",
+ },
+ steamroller: {
+ name: "Rulloduro",
+ effect: "Chi la usa ruota su se stesso ad alta velocità e schiaccia il bersaglio. Può anche farlo tentennare.",
+ },
+ cottonGuard: {
+ name: "Cotonscudo",
+ effect: "Chi la usa avvolge il proprio corpo con del cotone molto morbido, proteggendosi e aumentando moltissimo la propria Difesa.",
+ },
+ nightDaze: {
+ name: "Urtoscuro",
+ effect: "Chi la usa attacca il bersaglio con un'onda d'urto oscura che può ridurne la precisione.",
+ },
+ psystrike: {
+ name: "Psicobotta",
+ effect: "Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.",
+ },
+ tailSlap: {
+ name: "Spazzasberla",
+ effect: "Chi la usa colpisce il bersaglio con la sua coda dura da due a cinque volte di fila.",
+ },
+ hurricane: {
+ name: "Tifone",
+ effect: "Chi la usa attacca il bersaglio avvolgendolo con un vento fortissimo. Può anche confonderlo.",
+ },
+ headCharge: {
+ name: "Ricciolata",
+ effect: "Chi la usa carica il bersaglio con la sua testa in stile afro, ma subisce un po' di danni per il contraccolpo.",
+ },
+ gearGrind: {
+ name: "Ingracolpo",
+ effect: "Chi la usa colpisce il bersaglio due volte di fila lanciandogli contro dei dischi d'acciaio.",
+ },
+ searingShot: {
+ name: "Sparafuoco",
+ effect: "Chi la usa lancia fiamme scarlatte sui Pokémon intorno a sé. Può anche scottare.",
+ },
+ technoBlast: {
+ name: "Tecnobotto",
+ effect: "Chi la usa rilascia un colpo di luce contro il bersaglio. Il tipo varia a seconda del modulo che ha.",
+ },
+ relicSong: {
+ name: "Cantoantico",
+ effect: "Chi la usa attacca i nemici intonando un'antica melodia che colpisce il loro spirito. Può anche farli addormentare.",
+ },
+ secretSword: {
+ name: "Spadamistica",
+ effect: "Chi la usa attacca il bersaglio tagliandolo con una spada mistica. La misteriosa energia sprigionata provoca danni fisici.",
+ },
+ glaciate: {
+ name: "Gelamondo",
+ effect: "Chi la usa attacca i nemici con una folata d'aria gelida e ne riduce anche la Velocità.",
+ },
+ boltStrike: {
+ name: "Lucesiluro",
+ effect: "Colpisce il bersaglio con una possente carica elettrica e può anche paralizzarlo.",
+ },
+ blueFlare: {
+ name: "Fuocoblu",
+ effect: "Chi la usa attacca il bersaglio avvolgendolo con magnifiche e intense fiamme blu che possono anche scottarlo.",
+ },
+ fieryDance: {
+ name: "Voldifuoco",
+ effect: "Chi la usa avvolge il bersaglio tra le fiamme. Può anche aumentare l'Attacco Speciale.",
+ },
+ freezeShock: {
+ name: "Elettrogelo",
+ effect: "Chi la usa lancia contro il nemico al turno successivo una sfera di ghiaccio ricoperta di elettricità. Può anche paralizzarlo.",
+ },
+ iceBurn: {
+ name: "Vampagelida",
+ effect: "Chi la usa attacca il bersaglio al turno successivo e lo avvolge in un soffio d'aria congelata. Può anche scottarlo.",
+ },
+ snarl: {
+ name: "Urlorabbia",
+ effect: "Chi la usa si mette a urlare per un po', riducendo l'Attacco Speciale dei nemici.",
+ },
+ icicleCrash: {
+ name: "Scagliagelo",
+ effect: "Chi la usa attacca violentemente il nemico con grosse stalattiti di ghiaccio che possono anche farlo tentennare.",
+ },
+ vCreate: {
+ name: "Generatore V",
+ effect: "Chi la usa carica emettendo fiamme ardenti dalla fronte, a costo di una riduzione di Difesa, Difesa Speciale e Velocità.",
+ },
+ fusionFlare: {
+ name: "Incrofiamma",
+ effect: "Chi la usa lancia una fiammata enorme. Se usata in combinazione con Incrotuono, il danno provocato dalla mossa aumenta.",
+ },
+ fusionBolt: {
+ name: "Incrotuono",
+ effect: "Chi la usa lancia un fulmine enorme. Se usata in combinazione con Incrofiamma, il danno provocato dalla mossa aumenta.",
+ },
+ flyingPress: {
+ name: "Schiacciatuffo",
+ effect: "Chi la usa si tuffa sul bersaglio dall'alto. È una mossa di tipo Lotta e Volante allo stesso tempo.",
+ },
+ matBlock: {
+ name: "Ribaltappeto",
+ effect: "Chi la usa protegge se stesso e i propri alleati dai danni di mosse nemiche, adoperando un tappetino come scudo. Non è efficace contro mosse di stato.",
+ },
+ belch: {
+ name: "Rutto",
+ effect: "Chi la usa attacca il bersaglio con un rutto potente. Per utilizzare questa mossa, il Pokémon deve mangiare la bacca che possiede.",
+ },
+ rototiller: {
+ name: "Aracampo",
+ effect: "Chi la usa dissoda la terra per far crescere meglio l'erba. Questa mossa aumenta l'attacco e l'attacco speciale dei Pokémon di tipo Erba.",
+ },
+ stickyWeb: {
+ name: "Rete Vischiosa",
+ effect: "Chi la usa intreccia una rete appiccicosa attorno alla squadra avversaria, diminuendo la Velocità dei Pokémon nemici che entreranno in campo.",
+ },
+ fellStinger: {
+ name: "Pungiglione",
+ effect: "L'Attacco di chi la usa aumenta notevolmente se grazie alla mossa il bersaglio va KO.",
+ },
+ phantomForce: {
+ name: "Spettrotuffo",
+ effect: "Chi la usa scompare improvvisamente per attaccare poi nel turno seguente. Questa mossa neutralizza le difese del bersaglio.",
+ },
+ trickOrTreat: {
+ name: "Halloween",
+ effect: "Il bersaglio viene invitato a festeggiare Halloween e aggiunge così al proprio tipo anche il tipo Spettro.",
+ },
+ nobleRoar: {
+ name: "Urlo",
+ effect: "Chi la usa emette un urlo potente che intimidisce il bersaglio, riducendone l'Attacco e l'Attacco Speciale.",
+ },
+ ionDeluge: {
+ name: "Pioggiaplasma",
+ effect: "Chi la usa disperde delle particelle elettrizzate che trasformano le mosse di tipo Normale in mosse di tipo Elettro.",
+ },
+ parabolicCharge: {
+ name: "Caricaparabola",
+ effect: "Chi la usa attacca tutto ciò che lo circonda e recupera PS pari alla metà del danno inflitto.",
+ },
+ forestsCurse: {
+ name: "Boscomalocchio",
+ effect: "Il Pokémon invoca la maledizione del bosco sul bersaglio, che acquisisce così anche il tipo Erba.",
+ },
+ petalBlizzard: {
+ name: "Fiortempesta",
+ effect: "Infligge danni ai Pokémon che ha intorno attaccandoli con una tempesta di fiori.",
+ },
+ freezeDry: {
+ name: "Liofilizzazione",
+ effect: "Chi la usa raffredda rapidamente il bersaglio. Può anche congelarlo. Questa mossa è superefficace contro i Pokémon Acqua.",
+ },
+ disarmingVoice: {
+ name: "Incantavoce",
+ effect: "Chi la usa infligge un danno spirituale ai nemici nei paraggi con una voce suadente. L'attacco andrà immancabilmente a segno.",
+ },
+ partingShot: {
+ name: "Monito",
+ effect: "Nessuna descrizione disponibile.",
+ },
+ topsyTurvy: {
+ name: "Sottosopra",
+ effect: "Inverte tutte le modifiche alle statistiche del Pokémon bersaglio.",
+ },
+ drainingKiss: {
+ name: "Assorbibacio",
+ effect: "Un bacio fatato che assorbe le energie al nemico.",
+ },
+ craftyShield: {
+ name: "Truccodifesa",
+ effect: "Chi la usa protegge se stesso e i suoi alleati usando un potere misterioso. Non blocca le mosse che infliggono danno.",
+ },
+ flowerShield: {
+ name: "Fiordifesa",
+ effect: "Grazie a un misterioso potere, aumenta la Difesa di tutti i Pokémon di tipo Erba presenti in campo.",
+ },
+ grassyTerrain: {
+ name: "Campo Erboso",
+ effect: "Per cinque turni trasforma il terreno di lotta in un campo erboso, facendo recuperare PS ai Pokémon a terra in ogni turno.",
+ },
+ mistyTerrain: {
+ name: "Campo Nebbioso",
+ effect: "Per cinque turni trasforma il terreno di lotta in un campo nebbioso, impedendo ai Pokémon a terra di essere colpiti da problemi di stato.",
+ },
+ electrify: {
+ name: "Elettrocontagio",
+ effect: "Se si contagia il bersaglio prima che usi la sua mossa, per quel turno le sue mosse saranno di tipo Elettro.",
+ },
+ playRough: {
+ name: "Carineria",
+ effect: "Chi la usa attacca il bersaglio con delle carinerie. Può anche ridurne l'attacco.",
+ },
+ fairyWind: {
+ name: "Vento di Fata",
+ effect: "Attacca con un forte vento fatato.",
+ },
+ moonblast: {
+ name: "Forza Lunare",
+ effect: "Accumula la forza proveniente dalla luna e la libera sul nemico. Può ridurre l'Attacco Speciale.",
+ },
+ boomburst: {
+ name: "Ondaboato",
+ effect: "Colpisce i Pokémon che ha intorno con la forza di un boato distruttivo.",
+ },
+ fairyLock: {
+ name: "Blocco Fatato",
+ effect: "Bloccando il campo di battaglia, chi la usa impedisce a tutti i Pokémon di fuggire durante il prossimo turno.",
+ },
+ kingsShield: {
+ name: "Scudo Reale",
+ effect: "L'utilizzatore assume una posizione difensiva mentre si difende. Riduce inoltre l'Attacco di ogni utilizzatore di mosse da contatto.",
+ },
+ playNice: {
+ name: "Simpatia",
+ effect: "Chi la usa diventa amico del bersaglio, rabbonendolo e riducendone così l'Attacco.",
+ },
+ confide: {
+ name: "Confidenza",
+ effect: "Chi la usa svela dei segreti al bersaglio, distraendolo e riducendone l'Attacco Speciale.",
+ },
+ diamondStorm: {
+ name: "Diamantempesta",
+ effect: "Colpisce i nemici che ha intorno con una tempesta di diamanti. Può anche aumentare la Difesa di chi la usa.",
+ },
+ steamEruption: {
+ name: "Vaporscoppio",
+ effect: "Travolge il bersaglio con un'ondata di vapore rovente che può anche scottarlo.",
+ },
+ hyperspaceHole: {
+ name: "Forodimensionale",
+ effect: "Chi la usa, sfrutta un passaggio interdimensionale per comparire a fianco del bersaglio e colpirlo, eludendo mosse come Protezione e Individua.",
+ },
+ waterShuriken: {
+ name: "Acqualame",
+ effect: "Chi la usa attacca sempre per primo, colpendo il bersaglio con uno shuriken di muco da due a cinque volte di fila.",
+ },
+ mysticalFire: {
+ name: "Magifiamma",
+ effect: "Colpisce il bersaglio soffiandogli contro delle fiammate incredibilmente roventi, riducendone l'Attacco Speciale.",
+ },
+ spikyShield: {
+ name: "Agodifesa",
+ effect: "Protegge dagli attacchi, riducendo inoltre i PS dei Pokémon che entrano in contatto con chi la usa.",
+ },
+ aromaticMist: {
+ name: "Nebularoma",
+ effect: "Aumenta la Difesa Speciale di un alleato tramite un misterioso aroma.",
+ },
+ eerieImpulse: {
+ name: "Elettromistero",
+ effect: "Il corpo dell'utilizzatore genera un impulso misterioso. Esponendovi il bersaglio, ne riduce di molto l'Attacco Speciale.",
+ },
+ venomDrench: {
+ name: "Velenotrappola",
+ effect: "Emette un liquido particolare che riduce l'Attacco, l'Attacco Speciale e la Velocità dei nemici avvelenati intorno a chi la usa.",
+ },
+ powder: {
+ name: "Pulviscoppio",
+ effect: "Il bersaglio viene coperto da un pulviscolo che esplode danneggiandolo se questi utilizza una mossa di tipo Fuoco nello stesso turno.",
+ },
+ geomancy: {
+ name: "Geocontrollo",
+ effect: "Un'energia pura forza della natura si sprigiona per tutto il campo.",
+ },
+ magneticFlux: {
+ name: "Controllo Polare",
+ effect: "Tramite il controllo dei campi magnetici, aumenta la Difesa e la Difesa Speciale dei Pokémon alleati dotati dell'abilità Più o Meno.",
+ },
+ happyHour: {
+ name: "Cuccagna",
+ effect: "Questa mossa raddoppia la ricompensa ricevuta dopo aver vinto una lotta.",
+ },
+ electricTerrain: {
+ name: "Campo Elettrico",
+ effect: "Per cinque turni trasforma il terreno di lotta in un campo elettrico, impedendo ai Pokémon a terra di addormentarsi.",
+ },
+ dazzlingGleam: {
+ name: "Magibrillio",
+ effect: "Emette una luce potentissima che infligge danni al bersaglio.",
+ },
+ celebrate: {
+ name: "Auguri",
+ effect: "Il Pokémon ti fa gli auguri nel tuo giorno speciale",
+ },
+ holdHands: {
+ name: "Mano nella mano",
+ effect: "Il Pokémon che la usa e un alleato si prendono per mano e fanno salti di gioia.",
+ },
+ babyDollEyes: {
+ name: "Occhioni Teneri",
+ effect: "Chi la usa rivolge i propri occhioni languidi al bersaglio, riducendone l'Attacco. Colpisce sempre per primo.",
+ },
+ nuzzle: {
+ name: "Elettrococcola",
+ effect: "Nonostante il tenero nome è una mossa piuttosto pericolosa.",
+ },
+ holdBack: {
+ name: "Riguardo",
+ effect: "Chi la usa attacca il bersaglio, modulando il colpo in modo da lasciargli almeno un PS.",
+ },
+ infestation: {
+ name: "Assillo",
+ effect: "Chi la usa lancia un attacco che tormenta il bersaglio per quattro o cinque turni, durante i quali gli impedisce di fuggire.",
+ },
+ powerUpPunch: {
+ name: "Crescipugno",
+ effect: "Rende i pugni più duri a ogni colpo inferto. Se i pugni vanno a segno, aumenta l'Attacco.",
+ },
+ oblivionWing: {
+ name: "Ali del Fato",
+ effect: "Chi la usa assorbe energia dal bersaglio recuperando una quantità di PS pari a più della metà del danno inferto.",
+ },
+ thousandArrows: {
+ name: "Mille Frecce",
+ effect: "Colpisce anche i Pokémon che fluttuano in aria. I nemici nei paraggi vengono scaraventati a terra.",
+ },
+ thousandWaves: {
+ name: "Mille Onde",
+ effect: "Un’onda strisciante investe i nemici intorno impedendo loro di fuggire.",
+ },
+ landsWrath: {
+ name: "Forza Tellurica",
+ effect: "Chi la usa raccoglie energia tellurica e ne concentra il potere sui nemici che ha intorno danneggiandoli.",
+ },
+ lightOfRuin: {
+ name: "Luce Nefasta",
+ effect: "Traendo potere dal Fiore Eterno, chi lo utilizza spara un potente raggio di luce. Ciò danneggia parecchio anche chi la usa.",
+ },
+ originPulse: {
+ name: "Primopulsar",
+ effect: "Attacca i nemici intorno colpendoli con miriadi di raggi di luce blu.",
+ },
+ precipiceBlades: {
+ name: "Spade Telluriche",
+ effect: "Attacca i nemici intorno trasformando la potenza della terra in lame affilate.",
+ },
+ dragonAscent: {
+ name: "Ascesa del Drago",
+ effect: "Permette di proiettarsi in aria e fiondarsi sul bersaglio attaccando ad altissima velocità. Riduce la Difesa e la Difesa Speciale di chi la usa.",
+ },
+ hyperspaceFury: {
+ name: "Urtodimensionale",
+ effect: "Permette di attaccare ripetutamente grazie ai molti arti, ignorando mosse come Protezione o Individua. Riduce la Difesa di chi la usa.",
+ },
+ breakneckBlitzPhysical: {
+ name: "Carica Travolgente",
+ effect: "Grazie al Potere Z, chi la usa accumula energia e si lancia a tutta forza contro il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ breakneckBlitzSpecial: {
+ name: "Carica Travolgente",
+ effect: "Dati Mancanti",
+ },
+ allOutPummelingPhysical: {
+ name: "Iperscarica Furiosa",
+ effect: "Chi la usa scaglia sul bersaglio una scarica di colpi carichi di Potere Z. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ allOutPummelingSpecial: {
+ name: "Iperscarica Furiosa",
+ effect: "Dati Mancanti",
+ },
+ supersonicSkystrikePhysical: {
+ name: "Picchiata Devastante",
+ effect: "Chi la usa si serve del Potere Z per alzarsi in volo e attaccare il bersaglio piombandogli addosso. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ supersonicSkystrikeSpecial: {
+ name: "Picchiata Devastante",
+ effect: "Dati Mancanti",
+ },
+ acidDownpourPhysical: {
+ name: "Acidiluvio Corrosivo",
+ effect: "Chi la usa sfrutta il Potere Z per creare una palude velenosa che sommerge il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ acidDownpourSpecial: {
+ name: "Acidiluvio Corrosivo",
+ effect: "Dati Mancanti",
+ },
+ tectonicRagePhysical: {
+ name: "Furore della Terra",
+ effect: "Grazie al Potere Z, chi la usa si tuffa nelle viscere della terra e colpisce con violenza il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ tectonicRageSpecial: {
+ name: "Furore della Terra",
+ effect: "Dati Mancanti",
+ },
+ continentalCrushPhysical: {
+ name: "Gigamacigno Polverizzante",
+ effect: "Grazie al Potere Z, chi la usa crea un masso enorme e lo lancia sul bersaglio schiacciandolo. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ continentalCrushSpecial: {
+ name: "Gigamacigno Polverizzante",
+ effect: "Dati Mancanti",
+ },
+ savageSpinOutPhysical: {
+ name: "Bozzolo Fatale",
+ effect: "Chi la usa sfrutta il potere Z per creare dei filamenti che intrappolano il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ savageSpinOutSpecial: {
+ name: "Bozzolo Fatale",
+ effect: "Dati Mancanti",
+ },
+ neverEndingNightmarePhysical: {
+ name: "Abbraccio Spettrale",
+ effect: "Grazie al Potere Z, chi la usa intrappola il bersaglio in una morsa generata dal proprio rancore. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ neverEndingNightmareSpecial: {
+ name: "Abbraccio Spettrale",
+ effect: "Dati Mancanti",
+ },
+ corkscrewCrashPhysical: {
+ name: "Spirale Perforante",
+ effect: "Grazie al Potere Z, chi la usa vortica su se stesso e si scaglia sul bersaglio con tutte le sue forze. La potenza varia a seconda della mossa su cui si basa",
+ },
+ corkscrewCrashSpecial: {
+ name: "Spirale Perforante",
+ effect: "Dati Mancanti",
+ },
+ infernoOverdrivePhysical: {
+ name: "Fiammobomba Detonante",
+ effect: "Chi la usa sfrutta il Potere Z per emettere fiamme incandescenti che inceneriscono il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ infernoOverdriveSpecial: {
+ name: "Fiammobomba Detonante",
+ effect: "Dati Mancanti",
+ },
+ hydroVortexPhysical: {
+ name: "Idrovortice Abissale",
+ effect: "Grazie al Potere Z, chi la usa crea un enorme vortice che inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ hydroVortexSpecial: {
+ name: "Idrovortice Abissale",
+ effect: "Dati Mancanti",
+ },
+ bloomDoomPhysical: {
+ name: "Floriscoppio Sfolgorante",
+ effect: "Grazie al Potere Z, chi la usa concentra l'energia delle piante per scatenare un potente attacco. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ bloomDoomSpecial: {
+ name: "Floriscoppio Sfolgorante",
+ effect: "Dati Mancanti",
+ },
+ gigavoltHavocPhysical: {
+ name: "Gigascarica Folgorante",
+ effect: "Grazie al Potere Z, chi la usa genera una fortissima scarica elettrica che colpisce il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ gigavoltHavocSpecial: {
+ name: "Gigascarica Folgorante",
+ effect: "Dati Mancanti",
+ },
+ shatteredPsychePhysical: {
+ name: "Impatto Psicocinetico",
+ effect: "Chi la usa si serve del Potere Z per manipolare la mente del bersaglio causando ingenti danni. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ shatteredPsycheSpecial: {
+ name: "Impatto Psicocinetico",
+ effect: "Dati Mancanti",
+ },
+ subzeroSlammerPhysical: {
+ name: "Criodistruzione Polare",
+ effect: "Chi la usa sfrutta il Potere Z per far calare di colpo la temperatura e congelare il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ subzeroSlammerSpecial: {
+ name: "Criodistruzione Polare",
+ effect: "Dati Mancanti",
+ },
+ devastatingDrakePhysical: {
+ name: "Dragoschianto Finale",
+ effect: "Grazie al Potere Z, chi la usa materializza la propria aura per colpire con forza il nemico. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ devastatingDrakeSpecial: {
+ name: "Dragoschianto Finale",
+ effect: "Dati Mancanti",
+ },
+ blackHoleEclipsePhysical: {
+ name: "Buco Nero del Non Ritorno",
+ effect: "Chi la usa si serve del Potere Z per concentrare energia negativa con cui inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ blackHoleEclipseSpecial: {
+ name: "Buco Nero del Non Ritorno",
+ effect: "Dati Mancanti",
+ },
+ twinkleTacklePhysical: {
+ name: "Astroimpatto Fatato",
+ effect: "Grazie al Potere Z, chi la usa crea una dimensione fatata in cui fa ciò che vuole del proprio bersaglio. La potenza varia a seconda della mossa su cui si basa.",
+ },
+ twinkleTackleSpecial: {
+ name: "Astroimpatto Fatato",
+ effect: "Dati Mancanti",
+ },
+ catastropika: {
+ name: "Super Pikaboom",
+ effect: "Grazie al Potere Z, Pikachu accumula un'enorme quantità di energia elettrica e si lancia contro il bersaglio a tutta forza.",
+ },
+ shoreUp: {
+ name: "Sabbiaccumulo",
+ effect: "Chi la usa recupera metà dei propri PS massimi. Durante le tempeste di sabbia ne recupera di più.",
+ },
+ firstImpression: {
+ name: "Schermaglia",
+ effect: "È una mossa molto potente, ma funziona solo appena scesi in campo.",
+ },
+ banefulBunker: {
+ name: "Fortino",
+ effect: "L'utilizzatore si protegge e se l'avversario attacca con una mossa da contatto viene avvelenato.",
+ },
+ spiritShackle: {
+ name: "Cucitura d'Ombra",
+ effect: "Chi la usa attacca il bersaglio e fissa la sua ombra a terra impedendogli di fuggire.",
+ },
+ darkestLariat: {
+ name: "Braccioteso",
+ effect: "Chi la usa attacca il bersaglio mulinando gli arti. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.",
+ },
+ sparklingAria: {
+ name: "Canto Effimero",
+ effect: "Chi la usa si mette a cantare emettendo tanti palloncini d’acqua. I Pokémon che subiscono danni da questa mossa guariscono dalle scottature.",
+ },
+ iceHammer: {
+ name: "Martelgelo",
+ effect: "Infligge danni al bersaglio colpendolo con un pugno molto potente. Riduce la velocità di chi la usa.",
+ },
+ floralHealing: {
+ name: "Cura Floreale",
+ effect: "Fa recuperare metà dei PS massimi al bersaglio. È più efficace quando il terreno di lotta è nello stato di Campo Erboso.",
+ },
+ highHorsepower: {
+ name: "Forza Equina",
+ effect: "Il Pokémon travolge il bersaglio con un attacco possente.",
+ },
+ strengthSap: {
+ name: "Assorbiforza",
+ effect: "Fa recuperare una quantità di PS pari all'Attacco del bersaglio, che vedrà diminuire questa statistica.",
+ },
+ solarBlade: {
+ name: "Lama Solare",
+ effect: "Il Pokémon assorbe la luce al primo turno per poi condensarla in una lama e attaccare al turno successivo.",
+ },
+ leafage: {
+ name: "Fogliame",
+ effect: "Attacca il bersaglio con delle foglie.",
+ },
+ spotlight: {
+ name: "Riflettore",
+ effect: "Nessuna descrizione disponibile.",
+ },
+ toxicThread: {
+ name: "Velenotela",
+ effect: "Avvelena il bersaglio avvolgendolo con filamenti tossici e ne riduce la Velocità.",
+ },
+ laserFocus: {
+ name: "Concentrazione",
+ effect: "Chi la usa si concentra e nel turno successivo metterà sicuramente a segno un brutto colpo.",
+ },
+ gearUp: {
+ name: "Marciainpiù",
+ effect: "Dà una marcia in più agli alleati con le abilità Meno o Più aumentandone l’Attacco e l’Attacco Speciale.",
+ },
+ throatChop: {
+ name: "Colpo Infernale",
+ effect: "Chi viene colpito da questa mossa prova un dolore lancinante e non può più usare mosse basate sul suono per due turni.",
+ },
+ pollenPuff: {
+ name: "Sferapolline",
+ effect: "Chi la usa attacca il nemico con una sfera esplosiva. Se colpisce degli alleati, fa recuperare loro dei PS.",
+ },
+ anchorShot: {
+ name: "Colpo d'Ancora",
+ effect: "Chi la usa colpisce il nemico con un'ancora e lo intrappola nella catena impedendogli di fuggire.",
+ },
+ psychicTerrain: {
+ name: "Campo Psichico",
+ effect: "Per cinque turni il terreno entra nello stato di Campo Psichico: i Pokémon a terra non subiscono mosse ad alta priorità e la potenza delle mosse di tipo Psico aumenta.",
+ },
+ lunge: {
+ name: "Assalto",
+ effect: "Chi la usa si lancia con tutte le sue forze sul bersaglio e ne riduce l'Attacco.",
+ },
+ fireLash: {
+ name: "Frusta di Fuoco",
+ effect: "Colpisce il bersaglio con una frusta infuocata e ne riduce la Difesa.",
+ },
+ powerTrip: {
+ name: "Tracotanza",
+ effect: "Chi la usa attacca il bersaglio sfoggiando la propria forza. Più le sue statistiche sono state aumentate, più la mossa è potente.",
+ },
+ burnUp: {
+ name: "Ultima Fiamma",
+ effect: "Chi la usa attacca sfruttando tutta la sua potenza incendiaria per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Fuoco.",
+ },
+ speedSwap: {
+ name: "Velociscambio",
+ effect: "Chi la usa scambia la propria Velocità con quella del bersaglio.",
+ },
+ smartStrike: {
+ name: "Sottilcorno",
+ effect: "Chi la usa colpisce il bersaglio con un corno appuntito. Questa mossa va sempre a segno.",
+ },
+ purify: {
+ name: "Purificazione",
+ effect: "Il bersaglio della mossa viene curato dalle alterazioni di stato inoltre l'utilizzatore ripristina i propri PS se la mossa va a segno.",
+ },
+ revelationDance: {
+ name: "Mutadanza",
+ effect: "Chi la usa si lancia in una danza e attacca il nemico con tutte le sue forze. Il tipo della mossa corrisponde al tipo del Pokémon che la usa.",
+ },
+ coreEnforcer: {
+ name: "Nucleocastigo",
+ effect: "Il bersaglio subisce dei danni e, se ha già agito nel turno, perde la sua abilità.",
+ },
+ tropKick: {
+ name: "Tropicalcio",
+ effect: "Chi la usa colpisce il bersaglio con un potente calcio sfruttando una tecnica originaria dei paesi tropicali e ne riduce l'Attacco.",
+ },
+ instruct: {
+ name: "Imposizione",
+ effect: "Nessuna descrizione disponibile.",
+ },
+ beakBlast: {
+ name: "Cannonbecco",
+ effect: "Chi la usa arroventa il proprio becco e poi attacca. Se un Pokémon lo colpisce con un attacco diretto mentre sta accumulando calore, resta scottato.",
+ },
+ clangingScales: {
+ name: "Clamorsquame",
+ effect: "Chi la usa attacca il bersaglio con un suono fortissimo che genera sfregando le scaglie del corpo. Dopo aver attaccato, la sua Difesa diminuisce.",
+ },
+ dragonHammer: {
+ name: "Marteldrago",
+ effect: "Chi la usa infligge danni al bersaglio usando il proprio corpo come se fosse un martello.",
+ },
+ brutalSwing: {
+ name: "Vorticolpo",
+ effect: "Chi la usa infligge danni intorno a sé facendo ruotare una parte del suo corpo.",
+ },
+ auroraVeil: {
+ name: "Velaurora",
+ effect: "Questa mossa riduce i danni provocati dalle mosse fisiche e speciali per 5 turni. Può essere usata solo mentre grandina.",
+ },
+ sinisterArrowRaid: {
+ name: "Dardoassalto Spettrale",
+ effect: "Grazie al Potere Z, Decidueye crea una formazione di frecce che colpisce il bersaglio a gran velocità.",
+ },
+ maliciousMoonsault: {
+ name: "Iperschianto delle Tenebre",
+ effect: "Grazie al Potere Z, Incineroar richiama tutta la sua forza e si lancia impetuosamente sul bersaglio.",
+ },
+ oceanicOperetta: {
+ name: "Sinfonia del Mare",
+ effect: "Grazie al Potere Z, Primarina concentra un’enorme quantità d’acqua e attacca il bersaglio con una potenza smisurata.",
+ },
+ guardianOfAlola: {
+ name: "Collera del Guardiano",
+ effect: "Grazie al Potere Z, il Nume Locale evoca l’energia di Alola e attacca con grande potenza, facendo perdere al bersaglio la maggior parte dei suoi PS.",
+ },
+ soulStealing7StarStrike: {
+ name: "Colpo Eptastellare Rubanima",
+ effect: "Grazie al Potere Z, Marshadow fa appello a tutte le sue forze e colpisce il bersaglio con una scarica di calci e pugni potentissimi.",
+ },
+ stokedSparksurfer: {
+ name: "Elettrosurf Folgorante",
+ effect: "Grazie al Potere Z, il Raichu di Alola attacca con tutta la sua potenza e paralizza il bersaglio.",
+ },
+ pulverizingPancake: {
+ name: "Adesso Faccio sul Serio",
+ effect: "Grazie al Potere Z, Snorlax tira fuori la grinta e, muovendo energicamente il suo enorme corpo, attacca il bersaglio con tutta la sua forza.",
+ },
+ extremeEvoboost: {
+ name: "Potenziamento Eevolutivo",
+ effect: "Grazie al Potere Z, Eevee evoca a sé tutta l’energia delle sue possibili evoluzioni e aumenta di molto le sue statistiche",
+ },
+ genesisSupernova: {
+ name: "Supernova delle Origini",
+ effect: "Grazie al Potere Z, Mew attacca il bersaglio con tutta la sua forza e genera un Campo Psichico a terra.",
+ },
+ shellTrap: {
+ name: "Gusciotrappola",
+ effect: "Il guscio del Pokémon diventa una trappola. Se un nemico lo colpisce con una mossa fisica, innesca un'esplosione e subisce dei danni.",
+ },
+ fleurCannon: {
+ name: "Cannonfiore",
+ effect: "Colpisce il bersaglio con un potente raggio, ma riduce di molto l'Attacco Speciale di chi la usa.",
+ },
+ psychicFangs: {
+ name: "Psicozanna",
+ effect: "L'utilizzatore morde il bersaglio, rompendo barriere come Schermoluce e Riflesso.",
+ },
+ stompingTantrum: {
+ name: "Battipiedi",
+ effect: "Chi la usa attacca battendo i piedi per la rabbia. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.",
+ },
+ shadowBone: {
+ name: "Ossotetro",
+ effect: "Chi la usa colpisce il bersaglio con un osso in cui alberga uno spirito. Può anche ridurne la Difesa.",
+ },
+ accelerock: {
+ name: "Rocciarapida",
+ effect: "Chi la usa attacca il bersaglio colpendolo a tutta velocità. Questa mossa ha priorità alta.",
+ },
+ liquidation: {
+ name: "Idrobreccia",
+ effect: "Chi la usa colpisce il bersaglio con la forza dell'acqua. Può anche ridurne la Difesa.",
+ },
+ prismaticLaser: {
+ name: "Prismalaser",
+ effect: "Chi la usa proietta dei potenti raggi di luce grazie alla potenza del suo prisma, ma non può agire nel turno successivo.",
+ },
+ spectralThief: {
+ name: "Ombrafurto",
+ effect: "Chi la usa ruba gli aumenti delle statistiche del bersaglio, poi si nasconde nella sua ombra e lo attacca.",
+ },
+ sunsteelStrike: {
+ name: "Astrocarica",
+ effect: "Chi la usa travolge il bersaglio con la potenza di una meteora. Questo attacco ignora l'abilità del bersaglio.",
+ },
+ moongeistBeam: {
+ name: "Raggio d'Ombra",
+ effect: "Chi la usa proietta sul bersaglio un misterioso raggio di luce. Questo attacco ignora l'abilità del bersaglio.",
+ },
+ tearfulLook: {
+ name: "Occhionilucidi",
+ effect: "Chi la usa guarda il bersaglio con gli occhi pieni di lacrime e gli fa perdere lo spirito combattivo, riducendone l'Attacco e l'Attacco Speciale",
+ },
+ zingZap: {
+ name: "Elettropizzico",
+ effect: "Chi la usa colpisce il bersaglio investendolo con una potente scarica elettrica che può anche farlo tentennare.",
+ },
+ naturesMadness: {
+ name: "Ira della Natura",
+ effect: "Scatena l’ira della natura sul bersaglio e ne dimezza i PS.",
+ },
+ multiAttack: {
+ name: "Multiattacco",
+ effect: "Chi la usa si avvolge in un potente campo energetico e colpisce il bersaglio. Il tipo della mossa varia in base alla ROM installata.",
+ },
+ tenMillionVoltThunderbolt: {
+ name: "Iperfulmine",
+ effect: "Grazie al Potere Z, Pikachu con il berretto scatena una potentissima scarica elettrica. Probabile brutto colpo.",
+ },
+ mindBlown: {
+ name: "Sbalorditesta",
+ effect: "Chi la usa fa esplodere la propria testa per attaccare tutti i Pokémon che ha intorno, ma subisce danni.",
+ },
+ plasmaFists: {
+ name: "Pugni Plasma",
+ effect: "Chi la usa attacca con pugni carichi di elettricità. Trasforma le mosse di tipo Normale in mosse di tipo Elettro.",
+ },
+ photonGeyser: {
+ name: "Geyser Fotonico",
+ effect: "Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.",
+ },
+ lightThatBurnsTheSky: {
+ name: "Fotodistruzione Apocalittica",
+ effect: "Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.",
+ },
+ searingSunrazeSmash: {
+ name: "Supercollisione Solare",
+ effect: "Grazie al Potere Z, Solgaleo attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.",
+ },
+ menacingMoonrazeMaelstrom: {
+ name: "Deflagrazione Lunare",
+ effect: "Grazie al Potere Z, Lunala attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.",
+ },
+ letsSnuggleForever: {
+ name: "Dolcesacco di Botte",
+ effect: "Grazie al Potere Z, Mimikyu fa appello a tutte le sue forze e attacca il bersaglio tempestandolo di colpi.",
+ },
+ splinteredStormshards: {
+ name: "Litotempesta Radiale",
+ effect: "Grazie al Potere Z, Lycanroc attacca il bersaglio con tutta la sua forza. Questa mossa annulla anche gli eventuali campi attivi.",
+ },
+ clangorousSoulblaze: {
+ name: "Dracofonia Divampante",
+ effect: "Grazie al Potere Z, Kommo-o attacca i nemici con tutta la sua forza. Inoltre, aumenta le proprie statistiche.",
+ },
+ zippyZap: {
+ name: "Sprintaboom",
+ effect: "Un attacco elettrico ad altissima velocità. Questa mossa ha priorità alta e infligge sicuramente un brutto colpo.",
+ },
+ splishySplash: {
+ name: "Surfasplash",
+ effect: "Colpisce il bersaglio con un'enorme onda caricata di elettricità che può anche paralizzarlo.",
+ },
+ floatyFall: {
+ name: "Piombaflap",
+ effect: "Chi la usa si libra in aria per poi piombare addosso al bersaglio. Può anche far tentennare il Pokémon colpito.",
+ },
+ pikaPapow: {
+ name: "Pikasaetta",
+ effect: "Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Pikachu e l'Allenatore.",
+ },
+ bouncyBubble: {
+ name: "Bollaslurp",
+ effect: "Chi la usa colpisce il bersaglio con una raffica di bolle, per poi assorbirle e recuperare una quantità di PS pari alla metà del danno inferto.",
+ },
+ buzzyBuzz: {
+ name: "Elettrozap",
+ effect: "Colpisce il bersaglio con una scarica elettrica che lo paralizza.",
+ },
+ sizzlySlide: {
+ name: "Fiammabam",
+ effect: "Chi la usa viene avvolto dalle fiamme e colpisce il bersaglio con forza, scottandolo.",
+ },
+ glitzyGlow: {
+ name: "Auraswoosh",
+ effect: "Colpisce il bersaglio ripetutamente con onde di forza psicocinetica e innalza una barriera fantastica che riduce i danni degli attacchi speciali nemici.",
+ },
+ baddyBad: {
+ name: "Zona Buiabuia",
+ effect: "Chi la usa scatena l’oscurità che ha dentro, colpendo il bersaglio e innalzando una barriera fantastica che riduce i danni degli attacchi fisici nemici.",
+ },
+ sappySeed: {
+ name: "Bombafrush",
+ effect: "Fa crescere un'enorme pianta che colpisce il bersaglio con una pioggia di semi. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.",
+ },
+ freezyFrost: {
+ name: "Scricchiagelo",
+ effect: "Chi la usa attacca il bersaglio con un cristallo formato da una nube nera congelata, che annulla ogni modifica alle statistiche di tutti i Pokémon.",
+ },
+ sparklySwirl: {
+ name: "Sbrilluccibufera",
+ effect: "Chi la usa attacca il bersaglio avvolgendolo in un turbine di profumi soffocanti e cura i problemi di stato propri e degli alleati.",
+ },
+ veeveeVolley: {
+ name: "Eeveempatto",
+ effect: "Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Eevee e l'Allenatore.",
+ },
+ doubleIronBash: {
+ name: "Pugni Corazzati",
+ effect: "L'utilizzatore ruota, centrando il dado esagonale nel petto, quindi colpisce con le braccia due volte di seguito. Ciò potrebbe anche far tentennare il bersaglio.",
+ },
+ maxGuard: {
+ name: "Dynabarriera",
+ effect: "Questa mossa permette di eludere tutti gli attacchi. Se usata in successione può fallire.",
+ },
+ dynamaxCannon: {
+ name: "Cannone Dynamax",
+ effect: "Il Pokémon attacca emettendo dal suo nucleo l'energia concentrata nel corpo.",
+ },
+ snipeShot: {
+ name: "Tiromirato",
+ effect: "Permette di attaccare il bersaglio ignorando gli effetti di mosse e abilità che alterano le mosse",
+ },
+ jawLock: {
+ name: "Morsostretto",
+ effect: "Impedisce a chi la usa e al bersaglio di essere sostituiti finché non vanno KO. L'effetto svanisce se uno dei due lascia il campo.",
+ },
+ stuffCheeks: {
+ name: "Riempiguance",
+ effect: "Se chi la usa ha con sé una bacca, la mangia e la sua Difesa aumenta di molto.",
+ },
+ noRetreat: {
+ name: "Spalle al Muro",
+ effect: "Il Pokémon aumenta tutte le sue statistiche ma non può più fuggire o essere sostituito.",
+ },
+ tarShot: {
+ name: "Colpocatrame",
+ effect: "Chi la usa getta catrame appiccicoso sul bersaglio abbassandone la Velocità e rendendolo vulnerabile al tipo Fuoco.",
+ },
+ magicPowder: {
+ name: "Magipolvere",
+ effect: "Chi la usa getta addosso al bersaglio una polvere magica che lo rende di tipo Psico.",
+ },
+ dragonDarts: {
+ name: "Dragofrecce",
+ effect: "L'utilizzatore attacca due volte usando Dreepy. Se ci sono due obiettivi, questa mossa colpisce una volta ogni obiettivo.",
+ },
+ teatime: {
+ name: "Ora del Tè",
+ effect: "Chi la usa invita tutti i Pokémon in campo a prendere il tè. Quelli che hanno con sé una bacca la mangiano.",
+ },
+ octolock: {
+ name: "Tentacolock",
+ effect: "Chi la usa immobilizza il bersaglio impedendogli di fuggire e ne diminuisce la Difesa e la Difesa Speciale a ogni turno.",
+ },
+ boltBeak: {
+ name: "Beccoshock",
+ effect: "Chi la usa attacca il bersaglio con il becco appuntito carico d'elettricità. Se attacca per primo, la potenza della mossa raddoppia.",
+ },
+ fishiousRend: {
+ name: "Branchiomorso",
+ effect: "Chi la usa morde il bersaglio con le dure branchie. Se attacca per primo, la potenza della mossa raddoppia.",
+ },
+ courtChange: {
+ name: "Cambiocampo",
+ effect: "Una forza misteriosa inverte gli effetti attivi sul campo alleato e sul campo avversario.",
+ },
+ maxFlare: {
+ name: "Dynafiammata",
+ effect: "Un attacco di tipo Fuoco che può essere eseguito dai Pokémon dynamaxizzati. Intensifica i raggi solari per cinque turni.",
+ },
+ maxFlutterby: {
+ name: "Dynainsetto",
+ effect: "Un attacco di tipo Coleottero che può essere eseguito dai Pokémon dynamaxizzati. Riduce l'Attacco Speciale degli avversari.",
+ },
+ maxLightning: {
+ name: "Dynasaetta",
+ effect: "Un attacco di tipo Elettro che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Elettrico.",
+ },
+ maxStrike: {
+ name: "Dynattacco",
+ effect: "Un attacco di tipo Normale che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Velocità degli avversari.",
+ },
+ maxKnuckle: {
+ name: "Dynapugno",
+ effect: "Un attacco di tipo Lotta che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l'Attacco degli alleati.",
+ },
+ maxPhantasm: {
+ name: "Dynavuoto",
+ effect: "Un attacco di tipo Spettro che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa degli avversari.",
+ },
+ maxHailstorm: {
+ name: "Dynagelo",
+ effect: "Un attacco di tipo Ghiaccio che può essere eseguito dai Pokémon dynamaxizzati. Causa una nevicata che dura per cinque turni.",
+ },
+ maxOoze: {
+ name: "Dynacorrosione",
+ effect: "Un attacco di tipo Veleno che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l'Attacco Speciale degli alleati.",
+ },
+ maxGeyser: {
+ name: "Dynaflusso",
+ effect: "Un attacco di tipo Acqua che può essere eseguito dai Pokémon dynamaxizzati. Provoca una forte pioggia per cinque turni.",
+ },
+ maxAirstream: {
+ name: "Dynajet",
+ effect: "Un attacco di tipo Volante che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Velocità degli alleati.",
+ },
+ maxStarfall: {
+ name: "Dynafata",
+ effect: "Un attacco di tipo Folletto che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Nebbioso.",
+ },
+ maxWyrmwind: {
+ name: "Dynadragone",
+ effect: "Un attacco di tipo Drago che può essere eseguito dai Pokémon dynamaxizzati. Riduce l'Attacco degli avversari.",
+ },
+ maxMindstorm: {
+ name: "Dynapsiche",
+ effect: "Un attacco di tipo Psico che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Psichico.",
+ },
+ maxRockfall: {
+ name: "Dynamacigno",
+ effect: "Un attacco di tipo Roccia che può essere eseguito dai Pokémon dynamaxizzati. Causa una tempesta di sabbia per cinque turni.",
+ },
+ maxQuake: {
+ name: "Dynasisma",
+ effect: "Un attacco di tipo Terra che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa Speciale degli alleati.",
+ },
+ maxDarkness: {
+ name: "Dynatenebre",
+ effect: "Un attacco di tipo Buio che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa Speciale degli avversari.",
+ },
+ maxOvergrowth: {
+ name: "Dynaflora",
+ effect: "Un attacco di tipo Erba che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Erboso.",
+ },
+ maxSteelspike: {
+ name: "Dynametallo",
+ effect: "Un attacco di tipo Acciaio che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa degli alleati.",
+ },
+ clangorousSoul: {
+ name: "Dracofonia",
+ effect: "Chi la usa sacrifica un po' dei suoi PS per aumentare tutte le sue statistiche.",
+ },
+ bodyPress: {
+ name: "Schiacciacorpo",
+ effect: "Chi la usa schiaccia il bersaglio con il suo corpo. Più la sua Difesa è alta, maggiori sono i danni inflitti.",
+ },
+ decorate: {
+ name: "Decorazione",
+ effect: "Chi la usa agghinda il bersaglio con delle decorazioni aumentandone di molto l'Attacco e l'Attacco Speciale.",
+ },
+ drumBeating: {
+ name: "Tamburattacco",
+ effect: "Chi la usa percuote il proprio tamburo per controllarne le radici e attaccare il bersaglio, riducendone la Velocità.",
+ },
+ snapTrap: {
+ name: "Tagliola",
+ effect: "Chi la usa intrappola il bersaglio in una tagliola e lo attacca per quattro o cinque turni.",
+ },
+ pyroBall: {
+ name: "Palla Infuocata",
+ effect: "l Pokémon attacca con una palla creata incendiando una piccola pietra. Può anche scottare il bersaglio.",
+ },
+ behemothBlade: {
+ name: "Taglio Maestoso",
+ effect: "Il Pokémon brandisce un'enorme spada e attacca vibrando un poderoso fendente.",
+ },
+ behemothBash: {
+ name: "Colpo Maestoso",
+ effect: "Il Pokémon trasforma il suo corpo in un robusto scudo e attacca caricando con forza.",
+ },
+ auraWheel: {
+ name: "Ruota d'Aura",
+ effect: "Il Pokémon emette l'energia accumulata nelle guance per attaccare e aumentare la Velocità. Il tipo della mossa cambia in base alla forma assunta da Morpeko.",
+ },
+ breakingSwipe: {
+ name: "Vastoimpatto",
+ effect: "Chi la usa attacca i nemici intorno con la sua robusta coda riducendone l'Attacco.",
+ },
+ branchPoke: {
+ name: "Ramostoccata",
+ effect: "Chi la usa attacca il bersaglio con un ramo incredibilmente appuntito.",
+ },
+ overdrive: {
+ name: "Overdrive",
+ effect: "Chi la usa suona la chitarra o il basso creando un'onda sonora potentissima con cui attacca il bersaglio.",
+ },
+ appleAcid: {
+ name: "Acido Malico",
+ effect: "Il Pokémon attacca il bersaglio con un liquido acido ricavato da mele aspre riducendone la Difesa Speciale.",
+ },
+ gravApple: {
+ name: "Forza G",
+ effect: "Il Pokémon fa cadere una mela sul bersaglio da una grande altezza, infliggendogli danni e riducendone la Difesa.",
+ },
+ spiritBreak: {
+ name: "Frantumanima",
+ effect: "Chi la usa attacca il bersaglio con un tale impeto da fargli perdere la voglia di lottare e ne riduce l'Attacco Speciale",
+ },
+ strangeSteam: {
+ name: "Vapore Incantato",
+ effect: "Il Pokémon attacca il bersaglio con getti di vapore che possono anche confonderlo.",
+ },
+ lifeDew: {
+ name: "Goccia Vitale",
+ effect: "Il Pokémon sparge tutt'intorno dell'acqua misteriosa che fa recuperare PS a sé e agli alleati in campo.",
+ },
+ obstruct: {
+ name: "Sbarramento",
+ effect: "Permette di eludere tutti gli attacchi. Se usata in successione può fallire. Se un Pokémon tocca chi la usa, la sua Difesa diminuisce di molto.",
+ },
+ falseSurrender: {
+ name: "Supplicolpo",
+ effect: "Chi la usa finge di abbassare la testa a mo' di supplica e attacca il bersaglio con i suoi capelli scarmigliati. Questa mossa va sempre a segno.",
+ },
+ meteorAssault: {
+ name: "Sfolgorassalto",
+ effect: "Chi la usa attacca il bersaglio brandendo un grosso gambo, ma perde l'equilibrio e nel turno successivo non può agire.",
+ },
+ eternabeam: {
+ name: "Raggio Infinito",
+ effect: "È l'attacco più potente di Eternatus quando assume la sua forma originale. Nel turno successivo non può agire.",
+ },
+ steelBeam: {
+ name: "Raggio d'Acciaio",
+ effect: "Il Pokémon utilizza l'acciaio del proprio corpo per sparare un violento raggio, ma subisce danni.",
+ },
+ expandingForce: {
+ name: "Vastenergia",
+ effect: "Chi la usa attacca il bersaglio con energia psichica. Se utilizzata quando è attivo un Campo Psichico, la mossa aumenta di potenza e danneggia tutti i nemici.",
+ },
+ steelRoller: {
+ name: "Ferrorullo",
+ effect: "Chi la usa attacca eliminando lo stato del terreno di lotta. La mossa fallisce se nel terreno non è attivo alcuno stato.",
+ },
+ scaleShot: {
+ name: "Squamacolpo",
+ effect: "Il Pokémon attacca lanciando delle squame da due a cinque volte di fila. Aumenta la Velocità di chi la usa, ma ne riduce la Difesa.",
+ },
+ meteorBeam: {
+ name: "Raggiometeora",
+ effect: "Chi la usa accumula l'energia dello spazio nel primo turno per aumentare l'Attacco Speciale, quindi attacca nel turno successivo.",
+ },
+ shellSideArm: {
+ name: "Armaguscio",
+ effect: "Il Pokémon esegue un attacco fisico o speciale, in base a quale causa danni maggiori. Può anche avvelenare il bersaglio.",
+ },
+ mistyExplosion: {
+ name: "Nebbioscoppio",
+ effect: "Chi la usa attacca tutti i Pokémon che ha intorno, ma poi va KO. La potenza delle mosse aumenta quando è attivo un Campo Nebbioso.",
+ },
+ grassyGlide: {
+ name: "Erboscivolata",
+ effect: "Chi la usa attacca il bersaglio scivolando sul terreno. Se utilizzata quando è attivo un Campo Erboso, ha priorità alta.",
+ },
+ risingVoltage: {
+ name: "Elettroimpennata",
+ effect: "Chi la usa attacca con dell'elettricità che si alza dal suolo. La potenza della mossa raddoppia quando l'avversario si trova in un Campo Elettrico.",
+ },
+ terrainPulse: {
+ name: "Campopulsar",
+ effect: "Chi la usa attacca sfruttando l'energia del terreno di lotta. Il tipo e la potenza della mossa variano a seconda dello stato del terreno stesso.",
+ },
+ skitterSmack: {
+ name: "Strisciacolpo",
+ effect: "Chi la usa attacca il bersaglio strisciandogli alle spalle e riducendo il suo Attacco Speciale.",
+ },
+ burningJealousy: {
+ name: "Fiamminvidia",
+ effect: "Chi la usa attacca con la forza dell'invidia, causando una scottatura a tutti i Pokémon le cui statistiche sono aumentate durante quel turno.",
+ },
+ lashOut: {
+ name: "Sfogarabbia",
+ effect: "Chi la usa attacca il bersaglio con tutta la propria ira. Se ha subito riduzioni delle statistiche durante quel turno, la potenza della mossa raddoppia.",
+ },
+ poltergeist: {
+ name: "Poltergeist",
+ effect: "Chi la usa attacca utilizzando lo strumento del bersaglio. La mossa fallisce se quest'ultimo non ha uno strumento.",
+ },
+ corrosiveGas: {
+ name: "Gas Corrosivo",
+ effect: "Chi la usa avvolge gli altri Pokémon attorno in un gas altamente acido, dissolvendo i loro strumenti.",
+ },
+ coaching: {
+ name: "Coaching",
+ effect: "Chi la usa aumenta l'Attacco e la Difesa di tutti gli alleati dando loro indicazioni precise.",
+ },
+ flipTurn: {
+ name: "Virata",
+ effect: "Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l'attacco.",
+ },
+ tripleAxel: {
+ name: "Triplo Axel",
+ effect: "Il Pokémon attacca sferrando fino a tre calci consecutivi. Ogni volta che la mossa va a segno, la sua potenza aumenta.",
+ },
+ dualWingbeat: {
+ name: "Doppia Ala",
+ effect: "Il Pokémon attacca il bersaglio urtandolo con le ali e infliggendogli danni due volte di fila.",
+ },
+ scorchingSands: {
+ name: "Sabbiardente",
+ effect: "Chi la usa attacca il bersaglio scagliandogli addosso della sabbia incandescente. Può anche scottarlo.",
+ },
+ jungleHealing: {
+ name: "Giunglacura",
+ effect: "Il Pokémon diventa tutt'uno con la giungla, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.",
+ },
+ wickedBlow: {
+ name: "Pugnotenebra",
+ effect: "Il Pokémon sferra un singolo colpo potentissimo, massima espressione dello stile di tipo Buio. Brutto colpo assicurato.",
+ },
+ surgingStrikes: {
+ name: "Idroraffica",
+ effect: "Il Pokémon sferra una fluida serie di tre attacchi, massima espressione dello stile di tipo Acqua. Brutto colpo assicurato.",
+ },
+ thunderCage: {
+ name: "Elettrogabbia",
+ effect: "Il Pokémon attacca il bersaglio imprigionandolo in una gabbia di elettricità, che sprigiona corrente per quattro o cinque turni.",
+ },
+ dragonEnergy: {
+ name: "Dragoenergia",
+ effect: " Il Pokémon attacca il bersaglio convertendo la propria forza vitale in energia. Più i suoi PS sono bassi, più la potenza della mossa diminuisce.",
+ },
+ freezingGlare: {
+ name: "Sguardo Gelido",
+ effect: "Il Pokémon attacca rilasciando energia psichica dagli occhi. Può congelare il bersaglio.",
+ },
+ fieryWrath: {
+ name: "Furia Ardente",
+ effect: "ERR Il Pokémon attacca trasformando la sua rabbia in un'aura simile a fiamme. Può anche far tentennare il bersaglio.ORE",
+ },
+ thunderousKick: {
+ name: "Calcio Tonante",
+ effect: "Il Pokémon sferra calci al bersaglio dopo averlo distratto con movimenti fulminei, riducendone la Difesa.",
+ },
+ glacialLance: {
+ name: "Lancia Glaciale",
+ effect: "Il Pokémon attacca il bersaglio scagliando una lancia di ghiaccio accompagnata da una tormenta di neve.",
+ },
+ astralBarrage: {
+ name: "Schegge Astrali",
+ effect: "Il Pokémon attacca il bersaglio scatenandogli contro una miriade di piccoli spettri.",
+ },
+ eerieSpell: {
+ name: "Inquietantesimo",
+ effect: "Il Pokémon attacca con i suoi potenti poteri psichici. Sottrae 3 PP all'ultima mossa usata dall'avversario.",
+ },
+ direClaw: {
+ name: "Artigli Fatali",
+ effect: "Il Pokémon attacca il bersaglio con artigli distruttori. Può anche causargli avvelenamento, paralisi o sonno.",
+ },
+ psyshieldBash: {
+ name: "Barrierassalto",
+ effect: "Il Pokémon si carica di energia psichica per poi schiantarsi sul bersaglio. Inoltre, aumenta la propria Difesa.",
+ },
+ powerShift: {
+ name: "Scambioforza",
+ effect: "Il Pokémon scambia il suo Attacco con la Difesa.",
+ },
+ stoneAxe: {
+ name: "Rocciascure",
+ effect: "Il Pokémon attacca il bersaglio con delle scuri di roccia. I frammenti rocciosi dispersi dall'attacco restano sospesi intorno al bersaglio.",
+ },
+ springtideStorm: {
+ name: "Tempesta Zefirea",
+ effect: "Il Pokémon attacca il bersaglio avvolgendolo con un vento fortissimo di odio e amore. Può anche ridurne l'Attacco.",
+ },
+ mysticalPower: {
+ name: "Forza Mistica",
+ effect: "Il Pokémon attacca emettendo un misterioso potere. Inoltre, aumenta il proprio Attacco Speciale.",
+ },
+ ragingFury: {
+ name: "Ira Furente",
+ effect: "Il Pokémon s'infuria e sputa fiammate per due o tre turni, ma rimane confuso.",
+ },
+ waveCrash: {
+ name: "Ondaschianto",
+ effect: "Il Pokémon si avvolge in uno strato d'acqua e si lancia sul bersaglio, ma subisce seri danni.",
+ },
+ chloroblast: {
+ name: "Clorofillaser",
+ effect: "Il Pokémon attacca concentrando la clorofilla nel proprio corpo per poi lanciarla, ma subisce danni.",
+ },
+ mountainGale: {
+ name: "Soffio d'Iceberg",
+ effect: " Il Pokémon attacca colpendo il bersaglio con un blocco di ghiaccio grande come un iceberg. Può anche far tentennare il bersaglio.",
+ },
+ victoryDance: {
+ name: "Danzavittoria",
+ effect: "Il Pokémon si lancia in una danza sfrenata per invocare la vittoria e aumenta l'Attacco, la Difesa e la Velocità.",
+ },
+ headlongRush: {
+ name: "Scontro Frontale",
+ effect: "Il Pokémon si schianta sul bersaglio con tutte le forze. La sua Difesa e la sua Difesa Speciale diminuiscono.",
+ },
+ barbBarrage: {
+ name: "Mille Fielespine",
+ effect: "Il bersaglio viene colpito da una miriade di spine tossiche che possono anche avvelenarlo. Se il bersaglio è già avvelenato, la potenza della mossa raddoppia.",
+ },
+ esperWing: {
+ name: "Ali d'Aura",
+ effect: "Il Pokémon falcia il bersaglio con ali rafforzate da un'aura. Probabile brutto colpo. Inoltre, la Velocità aumenta.",
+ },
+ bitterMalice: {
+ name: "Livore",
+ effect: "Il Pokémon attacca con una furia che fa raggelare il sangue nelle vene del bersaglio, riducendone l'Attacco.",
+ },
+ shelter: {
+ name: "Barricata",
+ effect: "Il Pokémon indurisce la propria pelle come uno scudo di ferro, aumentando di molto la Difesa.",
+ },
+ tripleArrows: {
+ name: "Triplodardo",
+ effect: "Il Pokémon sferra un calcio per poi scoccare tre dardi insieme. Può ridurre la Difesa del bersaglio o farlo tentennare. Probabile brutto colpo.",
+ },
+ infernalParade: {
+ name: "Corteo Spettrale",
+ effect: "Il Pokémon attacca con innumerevoli sfere di fuoco che possono anche scottare il bersaglio. Se questo è affetto da problemi di stato, la potenza della mossa raddoppia.",
+ },
+ ceaselessEdge: {
+ name: "Lama Milleflutti",
+ effect: "Il Pokémon attacca il bersaglio con la spada conchiglia. I frammenti di conchiglie formano una trappola di punte ai piedi del bersaglio.",
+ },
+ bleakwindStorm: {
+ name: "Tempesta Boreale",
+ effect: "Il Pokémon attacca il bersaglio con venti gelidi e sferzanti che lo fanno tremare anima e corpo. Può anche ridurne la Velocità.",
+ },
+ wildboltStorm: {
+ name: "Tempesta Tonante",
+ effect: "Il Pokémon chiama a sé una tempesta di fulmini e raffiche di vento con cui attacca violentemente il bersaglio. Può anche paralizzarlo.",
+ },
+ sandsearStorm: {
+ name: "Tempesta Ardente",
+ effect: "Il Pokémon attacca il bersaglio avvolgendolo con sabbia ardente e un vento fortissimo che possono scottarlo.",
+ },
+ lunarBlessing: {
+ name: "Invocaluna",
+ effect: " Il Pokémon rivolge una preghiera alla luna crescente, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.",
+ },
+ takeHeart: {
+ name: "Baldimpulso",
+ effect: "Il Pokémon prende coraggio e guarisce dai problemi di stato. Inoltre, aumenta l'Attacco Speciale e la Difesa Speciale.",
+ },
+ gMaxWildfire: {
+ name: "Gigavampa",
+ effect: "Attacco di tipo Fuoco eseguito da Charizard Gigamax. Infligge danni per quattro turni.",
+ },
+ gMaxBefuddle: {
+ name: "Gigastupore",
+ effect: "Attacco di tipo Coleottero eseguito da Butterfree Gigamax. Avvelena, paralizza o addormenta i nemici.",
+ },
+ gMaxVoltCrash: {
+ name: "Gigapikafolgori",
+ effect: "Attacco di tipo Elettro eseguito da Pikachu Gigamax. Paralizza i nemici.",
+ },
+ gMaxGoldRush: {
+ name: "Gigamonete",
+ effect: "Attacco di tipo Normale eseguito da Meowth Gigamax. Confonde i nemici e permette anche di ricevere una ricompensa maggiore.",
+ },
+ gMaxChiStrike: {
+ name: "Gigapugnointuito",
+ effect: "Attacco di tipo Lotta eseguito da Machamp Gigamax. Aumenta la probabilità di sferrare brutti colpi.",
+ },
+ gMaxTerror: {
+ name: "Gigaillusione",
+ effect: "Attacco di tipo Spettro eseguito da Gengar Gigamax. Il Pokémon calpesta l'ombra del nemico impedendogli la fuga o la sostituzione.",
+ },
+ gMaxResonance: {
+ name: "Gigamelodia",
+ effect: "Attacco di tipo Ghiaccio eseguito da Lapras Gigamax. Riduce i danni subiti per cinque turni.",
+ },
+ gMaxCuddle: {
+ name: "Gigabbraccio",
+ effect: "Attacco di tipo Normale eseguito da Eevee Gigamax. Fa infatuare i nemici.",
+ },
+ gMaxReplenish: {
+ name: "Gigarinnovamento",
+ effect: "Attacco di tipo Normale eseguito da Snorlax Gigamax. Rigenera le bacche mangiate.",
+ },
+ gMaxMalodor: {
+ name: "Gigafetore",
+ effect: "Attacco di tipo Veleno eseguito da Garbodor Gigamax. Avvelena i nemici.",
+ },
+ gMaxStonesurge: {
+ name: "Gigarocciagetto",
+ effect: "Attacco di tipo Acqua eseguito da Drednaw Gigamax. Sparge rocce aguzze sul campo di lotta.",
+ },
+ gMaxWindRage: {
+ name: "Gigaciclone",
+ effect: "Attacco di tipo Volante eseguito da Corviknight Gigamax. Annulla l'effetto di mosse come Riflesso e Schermoluce.",
+ },
+ gMaxStunShock: {
+ name: "Gigatoxiscossa",
+ effect: "Attacco di tipo Elettro eseguito da Toxtricity Gigamax. Avvelena o paralizza i nemici.",
+ },
+ gMaxFinale: {
+ name: "Gigagranfinale",
+ effect: "Attacco di tipo Folletto eseguito da Alcremie Gigamax. Fa recuperare PS agli alleati.",
+ },
+ gMaxDepletion: {
+ name: "Gigalogoramento",
+ effect: "Attacco di tipo Drago eseguito da Duraludon Gigamax. Toglie PP all'ultima mossa usata dai nemici.",
+ },
+ gMaxGravitas: {
+ name: "Gigagravitoforza",
+ effect: "Attacco di tipo Psico eseguito da Orbeetle Gigamax. Cambia la gravità per cinque turni.",
+ },
+ gMaxVolcalith: {
+ name: "Gigalapilli",
+ effect: "Attacco di tipo Roccia eseguito da Coalossal Gigamax. Infligge danni per quattro turni.",
+ },
+ gMaxSandblast: {
+ name: "Gigavortisabbia",
+ effect: "Attacco di tipo Terra eseguito da Sandaconda Gigamax. Scatena un turbine di sabbia per quattro o cinque turni.",
+ },
+ gMaxSnooze: {
+ name: "Gigatorpore",
+ effect: "Attacco di tipo Buio eseguito da Grimmsnarl Gigamax. Chi la usa fa un grande sbadiglio che fa addormentare il nemico al turno successivo.",
+ },
+ gMaxTartness: {
+ name: "Gigattaccoacido",
+ effect: "Attacco di tipo Erba eseguito da Flapple Gigamax. Riduce l’elusione dei nemici.",
+ },
+ gMaxSweetness: {
+ name: "Gigambrosia",
+ effect: "Attacco di tipo Erba eseguito da Appletun Gigamax. Cura i problemi di stato degli alleati.",
+ },
+ gMaxSmite: {
+ name: "Gigacastigo",
+ effect: "Attacco di tipo Folletto eseguito da Hatterene Gigamax. Confonde i nemici.",
+ },
+ gMaxSteelsurge: {
+ name: "Gigaferroaculei",
+ effect: "Attacco di tipo Acciaio eseguito da Copperajah Gigamax. Sparge pezzi di metallo acuminati sul campo di lotta.",
+ },
+ gMaxMeltdown: {
+ name: "Gigaliquefazione",
+ effect: "ERAttacco di tipo Acciaio eseguito da Melmetal Gigamax. Impedisce ai nemici di usare la stessa mossa due volte di seguito.RORE",
+ },
+ gMaxFoamBurst: {
+ name: "Gigaschiuma",
+ effect: "Attacco di tipo Acqua eseguito da Kingler Gigamax. Riduce di molto la Velocità dei nemici.",
+ },
+ gMaxCentiferno: {
+ name: "Gigamillefiamme",
+ effect: "Attacco di tipo Fuoco eseguito da Centiskorch Gigamax. Intrappola i nemici nelle fiamme per quattro o cinque turni.",
+ },
+ gMaxVineLash: {
+ name: "Gigasferzata",
+ effect: "Attacco di tipo Erba eseguito da Venusaur Gigamax. Infligge danni per quattro turni.",
+ },
+ gMaxCannonade: {
+ name: "Gigacannonata",
+ effect: "Attacco di tipo Acqua eseguito da Blastoise Gigamax. Infligge danni per quattro turni.",
+ },
+ gMaxDrumSolo: {
+ name: "Gigarullio",
+ effect: "Attacco di tipo Erba eseguito da Rillaboom Gigamax. Ignora le abilità dei nemici.",
+ },
+ gMaxFireball: {
+ name: "Gigafiammopalla",
+ effect: "Attacco di tipo Fuoco eseguito da Cinderace Gigamax. Ignora le abilità dei nemici.",
+ },
+ gMaxHydrosnipe: {
+ name: "Gigasparomirato",
+ effect: "Attacco di tipo Acqua eseguito da Inteleon Gigamax. Ignora le abilità dei nemici.",
+ },
+ gMaxOneBlow: {
+ name: "Gigasingolcolpo",
+ effect: "Attacco di tipo Buio eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.",
+ },
+ gMaxRapidFlow: {
+ name: "Gigapluricolpo",
+ effect: " Attacco di tipo Acqua eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.",
+ },
+ teraBlast: {
+ name: "Terascoppio",
+ effect: "Se il Pokémon è teracristallizzato, attacca con l'energia del suo teratipo. Infligge danni in base all'Attacco o all'Attacco Speciale scegliendo il più alto tra i due.",
+ },
+ silkTrap: {
+ name: "Telatrappola",
+ effect: "Il Pokémon tesse una trappola di tela che lo protegge dagli attacchi e riduce la Velocità di chi entra in contatto con lui.",
+ },
+ axeKick: {
+ name: "Calcio ad Ascia",
+ effect: "Il Pokémon attacca sferrando un calcio dall'alto verso il basso che può confondere il bersaglio. Se la mossa fallisce, il Pokémon subisce dei danni.",
+ },
+ lastRespects: {
+ name: "Omaggio ai KO",
+ effect: "Il Pokémon attacca per placare il risentimento dei suoi compagni di squadra. Più sono quelli andati KO, più la potenza della mossa aumenta.",
+ },
+ luminaCrash: {
+ name: "Fotocollisione",
+ effect: "Il Pokémon attacca sparando una luce bizzarra che agisce anche sulla psiche. Riduce di molto la Difesa Speciale del bersaglio.",
+ },
+ orderUp: {
+ name: "Alta Cucina",
+ effect: "Il Pokémon attacca con deliziose movenze. Se ha in bocca un Tatsugiri, una sua statistica aumenta in base alla forma di quest'ultimo.",
+ },
+ jetPunch: {
+ name: "Pugnojet",
+ effect: "Il Pokémon avvolge il pugno in una corrente impetuosa e sferra un colpo a una tale velocità da rendersi quasi invisibile. Questo attacco ha priorità alta.",
+ },
+ spicyExtract: {
+ name: "Essenza Piccante",
+ effect: "Il Pokémon secerne un'essenza straordinariamente piccante. Aumenta di molto l'Attacco del bersaglio ma ne diminuisce di molto la Difesa.",
+ },
+ spinOut: {
+ name: "Slittaruote",
+ effect: "Il Pokémon infligge danni caricando le estremità e ruotandole vorticosamente. La sua Velocità diminuisce di molto.",
+ },
+ populationBomb: {
+ name: "Infestazione",
+ effect: "Il Pokémon si riunisce con i suoi simili in un gruppo brulicante che collabora per attaccare e colpisce da una a dieci volte di fila.",
+ },
+ iceSpinner: {
+ name: "Vortighiaccio",
+ effect: "Il Pokémon avvolge gli arti inferiori in un sottile strato di ghiaccio e si scontra con il bersaglio piroettando. Il movimento rotatorio distrugge il terreno di lotta.",
+ },
+ glaiveRush: {
+ name: "Spadoncarica",
+ effect: "Il Pokémon si lancia in una carica avventata. Fino al suo prossimo turno, il Pokémon riceverà il doppio dei danni dagli attacchi altrui, che andranno sempre a segno.",
+ },
+ revivalBlessing: {
+ name: "Preghiera Vitale",
+ effect: "Il Pokémon intona una preghiera compassionevole, rianimando un Pokémon della squadra esausto e restituendogli metà dei suoi PS.",
+ },
+ saltCure: {
+ name: "Sotto Sale",
+ effect: "Il Pokémon mette sotto sale il bersaglio, infliggendogli danni a ogni turno. I Pokémon di tipo Acciaio e di tipo Acqua sono particolarmente vulnerabili a questa mossa.",
+ },
+ tripleDive: {
+ name: "Triplo Tuffo",
+ effect: "Il Pokémon si lancia in un triplo tuffo perfettamente coordinato, colpendo il bersaglio con degli schizzi d'acqua e infliggendogli danni tre volte di fila.",
+ },
+ mortalSpin: {
+ name: "Glitturbine",
+ effect: "Attacco rotante che elimina gli effetti di mosse come Legatutto, Avvolgibotta e Parassiseme. Aumenta anche la Velocità di chi la usa.",
+ },
+ doodle: {
+ name: "Ricalco",
+ effect: "Il Pokémon cattura l'essenza del bersaglio con un ricalco, copiandone l'abilità e applicandola a se stesso e ai suoi alleati.",
+ },
+ filletAway: {
+ name: "Alleggerimento",
+ effect: "Il Pokémon sacrifica dei PS per far aumentare di molto l'Attacco, l'Attacco Speciale e la Velocità.",
+ },
+ kowtowCleave: {
+ name: "Genufendente",
+ effect: "Il Pokémon si genuflette per far abbassare la guardia al bersaglio e poi fenderlo. Questo attacco va sempre a segno.",
+ },
+ flowerTrick: {
+ name: "Prestigiafiore",
+ effect: " Il Pokémon attacca il bersaglio lanciandogli addosso un mazzo di fiori truccato. Questo attacco va sempre a segno, infliggendo anche un brutto colpo.",
+ },
+ torchSong: {
+ name: "Canzone Ardente",
+ effect: "Il Pokémon abbrustolisce il bersaglio soffiandogli addosso fiamme ardenti come se intonasse una canzone. Inoltre, il suo Attacco Speciale aumenta.",
+ },
+ aquaStep: {
+ name: "Idroballetto",
+ effect: "Il Pokémon si prende gioco del bersaglio con passi di danza leggiadri e fluidi come l’acqua, infliggendogli danni. Inoltre, la sua Velocità aumenta.",
+ },
+ ragingBull: {
+ name: "Scatenatoro",
+ effect: "Il Pokémon carica il bersaglio con furia cieca, rompendo barriere come Schermoluce e Riflesso. Il tipo di questa mossa dipende dalla forma di chi la usa.",
+ },
+ makeItRain: {
+ name: "Corsa all'Oro",
+ effect: "Il Pokémon attacca lanciando una gran quantità di monete recuperabili dopo la lotta, ma riduce il proprio Attacco Speciale.",
+ },
+ psyblade: {
+ name: "Psicolama",
+ effect: "Il Pokémon falcia il bersaglio con una lama eterea. La potenza della mossa aumenta del 50% quando è attivo un Campo Elettrico.",
+ },
+ hydroSteam: {
+ name: "Idrovapore",
+ effect: "Il Pokémon ricopre con forza il bersaglio di acqua bollente. Con la luce solare intensa, la potenza di questa mossa aumenta del 50% anziché diminuire.",
+ },
+ ruination: {
+ name: "Catastrofe",
+ effect: "Il Pokémon invoca una terribile disgrazia, dimezzando i PS del bersaglio.",
+ },
+ collisionCourse: {
+ name: "Turboschianto",
+ effect: "Il Pokémon si schianta al suolo mentre si trasforma, causando un'esplosione primordiale. La potenza della mossa aumenta se questa è superefficace sul bersaglio.",
+ },
+ electroDrift: {
+ name: "Fulmiscatto",
+ effect: "Il Pokémon saetta mentre si trasforma, trafiggendo il bersaglio con una scossa futuristica. La potenza della mossa aumenta se questa è superefficace sul bersaglio.",
+ },
+ shedTail: {
+ name: "Tagliacoda",
+ effect: "Chi la usa crea una copia di se stesso usando parte dei suoi PS e si fa sostituire da un altro Pokémon della squadra.",
+ },
+ chillyReception: {
+ name: "Freddura",
+ effect: "Chi la usa dice una freddura che fa raggelare i presenti per poi farsi sostituire da un altro Pokémon della squadra. Causa una nevicata che dura per cinque turni.",
+ },
+ tidyUp: {
+ name: "Pulizie",
+ effect: "Il Pokémon fa le pulizie, annullando gli effetti di Punte, Levitoroccia, Rete Vischiosa, Fielepunte e Sostituto. Inoltre, aumenta il suo Attacco e la sua Velocità.",
+ },
+ snowscape: {
+ name: "Vista Innevata",
+ effect: "Il Pokémon causa una nevicata che dura per cinque turni e aumenta la Difesa dei Pokémon di tipo Ghiaccio.",
+ },
+ pounce: {
+ name: "Balzo",
+ effect: "Il Pokémon fa un balzo e attacca il bersaglio, riducendone inoltre la Velocità.",
+ },
+ trailblaze: {
+ name: "Apripista",
+ effect: "Il Pokémon attacca come se saltasse fuori dall'erba alta e si muove con passo leggiadro, aumentando la propria Velocità.",
+ },
+ chillingWater: {
+ name: "Doccia Fredda",
+ effect: "Il Pokémon attacca il bersaglio con una doccia d'acqua talmente fredda da farlo demoralizzare, riducendone l'Attacco.",
+ },
+ hyperDrill: {
+ name: "Ipertrapano",
+ effect: "Il Pokémon fa roteare rapidamente la parte appuntita del suo corpo, perforando il bersaglio ed eludendo mosse come Protezione e Individua.",
+ },
+ twinBeam: {
+ name: "Doppioraggio",
+ effect: "Il Pokémon attacca il bersaglio con misteriosi raggi di luce emessi dagli occhi che infliggono danni due volte di fila.",
+ },
+ rageFist: {
+ name: "Pugno Furibondo",
+ effect: "Il Pokémon trasforma la sua furia in energia e la utilizza per attaccare. Più attacchi ha subito il Pokémon, più la potenza della mossa aumenta.",
+ },
+ armorCannon: {
+ name: "Corazza Cannone",
+ effect: "Il Pokémon si libera della sua corazza, scagliandola sul bersaglio come una raffica di proiettili incandescenti. La sua Difesa e la sua Difesa Speciale diminuiscono.",
+ },
+ bitterBlade: {
+ name: "Lama del Rimorso",
+ effect: "Il Pokémon concentra nelle lame tutti i rimorsi accumulati nel mondo dei vivi e assale il bersaglio, recuperando una quantità di PS pari a metà del danno inflitto.",
+ },
+ doubleShock: {
+ name: "Doppiolampo",
+ effect: "Il Pokémon libera tutta la sua potenza elettrica per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Elettro.",
+ },
+ gigatonHammer: {
+ name: "Granmartello",
+ effect: "Chi la usa attacca il bersaglio brandendo un enorme martello. La mossa non può essere usata per due volte di fila.",
+ },
+ comeuppance: {
+ name: "Ritorsione",
+ effect: "Il Pokémon restituisce con gli interessi i danni subiti all'ultimo avversario che l'ha colpito.",
+ },
+ aquaCutter: {
+ name: "Idrotaglio",
+ effect: " Il Pokémon espelle acqua ad alta pressione e falcia il bersaglio con un fendente tagliente quanto una lama. Probabile brutto colpo.",
+ },
+ blazingTorque: {
+ name: "Turboustione",
+ effect: "L'utilizzatore accende il suo motore ardente verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio con una bruciatura.",
+ },
+ wickedTorque: {
+ name: "Turbotenebra",
+ effect: "L'utente accende il proprio motore nel bersaglio con intenti dannosi. Ciò potrebbe addormentare il bersaglio.",
+ },
+ noxiousTorque: {
+ name: "Turbotossina",
+ effect: "L'utilizzatore fa girare il suo motore velenoso verso il bersaglio. Ciò potrebbe anche avvelenare il bersaglio.",
+ },
+ combatTorque: {
+ name: "Turborissa",
+ effect: "L'utente accelera con forza il proprio motore verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio paralizzato.",
+ },
+ magicalTorque: {
+ name: "Turboincanto",
+ effect: "L'utilizzatore fa girare il proprio motore fatato verso il bersaglio. Ciò potrebbe anche confondere l'obiettivo.",
+ },
+ bloodMoon: {
+ name: "Luna Rossa",
+ effect: "Il Pokémon attacca rilasciando tutta la sua energia, confluita in una luna piena rossa come il sangue. Questa mossa non può essere usata due volte di fila.",
+ },
+ matchaGotcha: {
+ name: "Spruzzatè",
+ effect: "Il Pokémon attacca mescolando del tè e spruzzandolo, recuperando una quantità di PS pari alla metà del danno inflitto. Può anche scottare il bersaglio.",
+ },
+ syrupBomb: {
+ name: "Bomba Sciroppata",
+ effect: " Il Pokémon fa esplodere dello sciroppo viscoso sul bersaglio, ricoprendolo e facendogli diminuire la Velocità per tre turni.",
+ },
+ ivyCudgel: {
+ name: "Clava di Liane",
+ effect: "Il Pokémon colpisce con una clava avvolta da liane. Il tipo della mossa varia in base alla maschera indossata. Probabile brutto colpo.",
+ },
+ electroShot: {
+ name: "Elettroraggio",
+ effect: "Il Pokémon accumula elettricità e aumenta l'Attacco Speciale al primo turno, per poi rilasciare una potente scarica al turno successivo o, se piove, immediatamente.",
+ },
+ teraStarstorm: {
+ name: "Teracluster",
+ effect: "Il Pokémon elimina il bersaglio irradiando il potere dei cristalli. Se Terapagos assume la Forma Astrale, la mossa infligge danni a tutti gli avversari.",
+ },
+ fickleBeam: {
+ name: "Irregolaser",
+ effect: "Il Pokémon attacca rilasciando raggi di luce. Talvolta i laser vengono emessi da tutte le teste, contribuendo a raddoppiare la potenza della mossa.",
+ },
+ burningBulwark: {
+ name: "Egida Ignea",
+ effect: "Il Pokémon blocca gli attacchi avversari con la pelliccia incandescente che scotta chi entra in contatto con lui.",
+ },
+ thunderclap: {
+ name: "Saetta",
+ effect: "Il Pokémon abbatte una scarica elettrica sul bersaglio prima che questi possa attaccare. La mossa fallisce se il bersaglio sferra una mossa che non è di attacco.",
+ },
+ mightyCleave: {
+ name: "Taglio Poderoso",
+ effect: "Il Pokémon fende il bersaglio con la luce immagazzinata nella testa, ignorando gli effetti delle mosse protettive.",
+ },
+ tachyonCutter: {
+ name: "Tachiontaglio",
+ effect: "Il Pokémon emette delle lame particellari in successione, infliggendo danni due volte di fila. Questo attacco va sempre a segno.",
+ },
+ hardPress: {
+ name: "Pressa d'Acciaio",
+ effect: "Il Pokémon schiaccia il bersaglio usando i propri arti. Più PS rimangono al bersaglio, maggiore è la potenza della mossa.",
+ },
+ dragonCheer: {
+ name: "Grido del Drago",
+ effect: "Il Pokémon incita gli alleati con un inno ai draghi, aumentando la probabilità che sferrino brutti colpi. Particolarmente efficace con alleati di tipo Drago.",
+ },
+ alluringVoice: {
+ name: "Ammaliavoce",
+ effect: "Il Pokémon attacca sfruttando il suo canto angelico, confondendo il bersaglio se le sue statistiche sono aumentate nello stesso turno.",
+ },
+ temperFlare: {
+ name: "Rabbia Bruciante",
+ effect: "Il Pokémon attacca con l'impeto di chi è pronto a tutto. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.",
+ },
+ supercellSlam: {
+ name: "Elettrotuffo",
+ effect: "Il Pokémon si schianta sul bersaglio dopo essersi elettrificato. Se la mossa fallisce, il Pokémon subisce dei danni.",
+ },
+ psychicNoise: {
+ name: "Psicorumore",
+ effect: " l Pokémon investe il bersaglio con insopportabili onde sonore che gli impediscono di recuperare PS con mosse, abilità o strumenti che ha con sé per due turni.",
+ },
+ upperHand: {
+ name: "Colpo di Mano",
+ effect: "Il Pokémon reagisce al movimento del bersaglio e, colpendo con il palmo, lo fa tentennare. Se il bersaglio non sferra un attacco ad alta priorità, la mossa fallisce.",
+ },
+ malignantChain: {
+ name: "Intossicatena",
+ effect: "Il Pokémon logora il bersaglio avvolgendolo con le sue catene fatte di veleno e iniettandogli delle tossine che possono anche iperavvelenarlo.",
+ },
+} as const;
\ No newline at end of file
diff --git a/src/locales/it/pokeball.ts b/src/locales/it/pokeball.ts
new file mode 100644
index 000000000..4b4c2be4d
--- /dev/null
+++ b/src/locales/it/pokeball.ts
@@ -0,0 +1,10 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const pokeball: SimpleTranslationEntries = {
+ "pokeBall": "Poké Ball",
+ "greatBall": "Mega Ball",
+ "ultraBall": "Ultra Ball",
+ "rogueBall": "Rogue Ball",
+ "masterBall": "Master Ball",
+ "luxuryBall": "Chich Ball",
+} as const;
\ No newline at end of file
diff --git a/src/locales/it/pokemon-stat.ts b/src/locales/it/pokemon-stat.ts
index 7a209461b..b2c023aa3 100644
--- a/src/locales/it/pokemon-stat.ts
+++ b/src/locales/it/pokemon-stat.ts
@@ -1,16 +1,16 @@
import { SimpleTranslationEntries } from "#app/plugins/i18n";
export const pokemonStat: SimpleTranslationEntries = {
- "HP": "Max. HP",
- "HPshortened": "MaxHP",
- "ATK": "Attack",
- "ATKshortened": "Atk",
- "DEF": "Defense",
- "DEFshortened": "Def",
- "SPATK": "Sp. Atk",
- "SPATKshortened": "SpAtk",
- "SPDEF": "Sp. Def",
- "SPDEFshortened": "SpDef",
- "SPD": "Speed",
- "SPDshortened": "Spd"
-} as const;
\ No newline at end of file
+ "HP": "PS Max",
+ "HPshortened": "PS",
+ "ATK": "Attacco",
+ "ATKshortened": "Att",
+ "DEF": "Difesa",
+ "DEFshortened": "Dif",
+ "SPATK": "Att. Sp.",
+ "SPATKshortened": "AttSp",
+ "SPDEF": "Dif. Sp.",
+ "SPDEFshortened": "DifSp",
+ "SPD": "Velocità",
+ "SPDshortened": "Vel"
+} as const;
diff --git a/src/locales/it/pokemon.ts b/src/locales/it/pokemon.ts
new file mode 100644
index 000000000..ddc2b2c91
--- /dev/null
+++ b/src/locales/it/pokemon.ts
@@ -0,0 +1,1086 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+export const pokemon: SimpleTranslationEntries = {
+ "bulbasaur": "Bulbasaur",
+ "ivysaur": "Ivysaur",
+ "venusaur": "Venusaur",
+ "charmander": "Charmander",
+ "charmeleon": "Charmeleon",
+ "charizard": "Charizard",
+ "squirtle": "Squirtle",
+ "wartortle": "Wartortle",
+ "blastoise": "Blastoise",
+ "caterpie": "Caterpie",
+ "metapod": "Metapod",
+ "butterfree": "Butterfree",
+ "weedle": "Weedle",
+ "kakuna": "Kakuna",
+ "beedrill": "Beedrill",
+ "pidgey": "Pidgey",
+ "pidgeotto": "Pidgeotto",
+ "pidgeot": "Pidgeot",
+ "rattata": "Rattata",
+ "raticate": "Raticate",
+ "spearow": "Spearow",
+ "fearow": "Fearow",
+ "ekans": "Ekans",
+ "arbok": "Arbok",
+ "pikachu": "Pikachu",
+ "raichu": "Raichu",
+ "sandshrew": "Sandshrew",
+ "sandslash": "Sandslash",
+ "nidoran_f": "Nidoran♀",
+ "nidorina": "Nidorina",
+ "nidoqueen": "Nidoqueen",
+ "nidoran_m": "Nidoran♂",
+ "nidorino": "Nidorino",
+ "nidoking": "Nidoking",
+ "clefairy": "Clefairy",
+ "clefable": "Clefable",
+ "vulpix": "Vulpix",
+ "ninetales": "Ninetales",
+ "jigglypuff": "Jigglypuff",
+ "wigglytuff": "Wigglytuff",
+ "zubat": "Zubat",
+ "golbat": "Golbat",
+ "oddish": "Oddish",
+ "gloom": "Gloom",
+ "vileplume": "Vileplume",
+ "paras": "Paras",
+ "parasect": "Parasect",
+ "venonat": "Venonat",
+ "venomoth": "Venomoth",
+ "diglett": "Diglett",
+ "dugtrio": "Dugtrio",
+ "meowth": "Meowth",
+ "persian": "Persian",
+ "psyduck": "Psyduck",
+ "golduck": "Golduck",
+ "mankey": "Mankey",
+ "primeape": "Primeape",
+ "growlithe": "Growlithe",
+ "arcanine": "Arcanine",
+ "poliwag": "Poliwag",
+ "poliwhirl": "Poliwhirl",
+ "poliwrath": "Poliwrath",
+ "abra": "Abra",
+ "kadabra": "Kadabra",
+ "alakazam": "Alakazam",
+ "machop": "Machop",
+ "machoke": "Machoke",
+ "machamp": "Machamp",
+ "bellsprout": "Bellsprout",
+ "weepinbell": "Weepinbell",
+ "victreebel": "Victreebel",
+ "tentacool": "Tentacool",
+ "tentacruel": "Tentacruel",
+ "geodude": "Geodude",
+ "graveler": "Graveler",
+ "golem": "Golem",
+ "ponyta": "Ponyta",
+ "rapidash": "Rapidash",
+ "slowpoke": "Slowpoke",
+ "slowbro": "Slowbro",
+ "magnemite": "Magnemite",
+ "magneton": "Magneton",
+ "farfetchd": "Farfetch'd",
+ "doduo": "Doduo",
+ "dodrio": "Dodrio",
+ "seel": "Seel",
+ "dewgong": "Dewgong",
+ "grimer": "Grimer",
+ "muk": "Muk",
+ "shellder": "Shellder",
+ "cloyster": "Cloyster",
+ "gastly": "Gastly",
+ "haunter": "Haunter",
+ "gengar": "Gengar",
+ "onix": "Onix",
+ "drowzee": "Drowzee",
+ "hypno": "Hypno",
+ "krabby": "Krabby",
+ "kingler": "Kingler",
+ "voltorb": "Voltorb",
+ "electrode": "Electrode",
+ "exeggcute": "Exeggcute",
+ "exeggutor": "Exeggutor",
+ "cubone": "Cubone",
+ "marowak": "Marowak",
+ "hitmonlee": "Hitmonlee",
+ "hitmonchan": "Hitmonchan",
+ "lickitung": "Lickitung",
+ "koffing": "Koffing",
+ "weezing": "Weezing",
+ "rhyhorn": "Rhyhorn",
+ "rhydon": "Rhydon",
+ "chansey": "Chansey",
+ "tangela": "Tangela",
+ "kangaskhan": "Kangaskhan",
+ "horsea": "Horsea",
+ "seadra": "Seadra",
+ "goldeen": "Goldeen",
+ "seaking": "Seaking",
+ "staryu": "Staryu",
+ "starmie": "Starmie",
+ "mr_mime": "Mr. Mime",
+ "scyther": "Scyther",
+ "jynx": "Jynx",
+ "electabuzz": "Electabuzz",
+ "magmar": "Magmar",
+ "pinsir": "Pinsir",
+ "tauros": "Tauros",
+ "magikarp": "Magikarp",
+ "gyarados": "Gyarados",
+ "lapras": "Lapras",
+ "ditto": "Ditto",
+ "eevee": "Eevee",
+ "vaporeon": "Vaporeon",
+ "jolteon": "Jolteon",
+ "flareon": "Flareon",
+ "porygon": "Porygon",
+ "omanyte": "Omanyte",
+ "omastar": "Omastar",
+ "kabuto": "Kabuto",
+ "kabutops": "Kabutops",
+ "aerodactyl": "Aerodactyl",
+ "snorlax": "Snorlax",
+ "articuno": "Articuno",
+ "zapdos": "Zapdos",
+ "moltres": "Moltres",
+ "dratini": "Dratini",
+ "dragonair": "Dragonair",
+ "dragonite": "Dragonite",
+ "mewtwo": "Mewtwo",
+ "mew": "Mew",
+ "chikorita": "Chikorita",
+ "bayleef": "Bayleef",
+ "meganium": "Meganium",
+ "cyndaquil": "Cyndaquil",
+ "quilava": "Quilava",
+ "typhlosion": "Typhlosion",
+ "totodile": "Totodile",
+ "croconaw": "Croconaw",
+ "feraligatr": "Feraligatr",
+ "sentret": "Sentret",
+ "furret": "Furret",
+ "hoothoot": "Hoothoot",
+ "noctowl": "Noctowl",
+ "ledyba": "Ledyba",
+ "ledian": "Ledian",
+ "spinarak": "Spinarak",
+ "ariados": "Ariados",
+ "crobat": "Crobat",
+ "chinchou": "Chinchou",
+ "lanturn": "Lanturn",
+ "pichu": "Pichu",
+ "cleffa": "Cleffa",
+ "igglybuff": "Igglybuff",
+ "togepi": "Togepi",
+ "togetic": "Togetic",
+ "natu": "Natu",
+ "xatu": "Xatu",
+ "mareep": "Mareep",
+ "flaaffy": "Flaaffy",
+ "ampharos": "Ampharos",
+ "bellossom": "Bellossom",
+ "marill": "Marill",
+ "azumarill": "Azumarill",
+ "sudowoodo": "Sudowoodo",
+ "politoed": "Politoed",
+ "hoppip": "Hoppip",
+ "skiploom": "Skiploom",
+ "jumpluff": "Jumpluff",
+ "aipom": "Aipom",
+ "sunkern": "Sunkern",
+ "sunflora": "Sunflora",
+ "yanma": "Yanma",
+ "wooper": "Wooper",
+ "quagsire": "Quagsire",
+ "espeon": "Espeon",
+ "umbreon": "Umbreon",
+ "murkrow": "Murkrow",
+ "slowking": "Slowking",
+ "misdreavus": "Misdreavus",
+ "unown": "Unown",
+ "wobbuffet": "Wobbuffet",
+ "girafarig": "Girafarig",
+ "pineco": "Pineco",
+ "forretress": "Forretress",
+ "dunsparce": "Dunsparce",
+ "gligar": "Gligar",
+ "steelix": "Steelix",
+ "snubbull": "Snubbull",
+ "granbull": "Granbull",
+ "qwilfish": "Qwilfish",
+ "scizor": "Scizor",
+ "shuckle": "Shuckle",
+ "heracross": "Heracross",
+ "sneasel": "Sneasel",
+ "teddiursa": "Teddiursa",
+ "ursaring": "Ursaring",
+ "slugma": "Slugma",
+ "magcargo": "Magcargo",
+ "swinub": "Swinub",
+ "piloswine": "Piloswine",
+ "corsola": "Corsola",
+ "remoraid": "Remoraid",
+ "octillery": "Octillery",
+ "delibird": "Delibird",
+ "mantine": "Mantine",
+ "skarmory": "Skarmory",
+ "houndour": "Houndour",
+ "houndoom": "Houndoom",
+ "kingdra": "Kingdra",
+ "phanpy": "Phanpy",
+ "donphan": "Donphan",
+ "porygon2": "Porygon2",
+ "stantler": "Stantler",
+ "smeargle": "Smeargle",
+ "tyrogue": "Tyrogue",
+ "hitmontop": "Hitmontop",
+ "smoochum": "Smoochum",
+ "elekid": "Elekid",
+ "magby": "Magby",
+ "miltank": "Miltank",
+ "blissey": "Blissey",
+ "raikou": "Raikou",
+ "entei": "Entei",
+ "suicune": "Suicune",
+ "larvitar": "Larvitar",
+ "pupitar": "Pupitar",
+ "tyranitar": "Tyranitar",
+ "lugia": "Lugia",
+ "ho_oh": "Ho-Oh",
+ "celebi": "Celebi",
+ "treecko": "Treecko",
+ "grovyle": "Grovyle",
+ "sceptile": "Sceptile",
+ "torchic": "Torchic",
+ "combusken": "Combusken",
+ "blaziken": "Blaziken",
+ "mudkip": "Mudkip",
+ "marshtomp": "Marshtomp",
+ "swampert": "Swampert",
+ "poochyena": "Poochyena",
+ "mightyena": "Mightyena",
+ "zigzagoon": "Zigzagoon",
+ "linoone": "Linoone",
+ "wurmple": "Wurmple",
+ "silcoon": "Silcoon",
+ "beautifly": "Beautifly",
+ "cascoon": "Cascoon",
+ "dustox": "Dustox",
+ "lotad": "Lotad",
+ "lombre": "Lombre",
+ "ludicolo": "Ludicolo",
+ "seedot": "Seedot",
+ "nuzleaf": "Nuzleaf",
+ "shiftry": "Shiftry",
+ "taillow": "Taillow",
+ "swellow": "Swellow",
+ "wingull": "Wingull",
+ "pelipper": "Pelipper",
+ "ralts": "Ralts",
+ "kirlia": "Kirlia",
+ "gardevoir": "Gardevoir",
+ "surskit": "Surskit",
+ "masquerain": "Masquerain",
+ "shroomish": "Shroomish",
+ "breloom": "Breloom",
+ "slakoth": "Slakoth",
+ "vigoroth": "Vigoroth",
+ "slaking": "Slaking",
+ "nincada": "Nincada",
+ "ninjask": "Ninjask",
+ "shedinja": "Shedinja",
+ "whismur": "Whismur",
+ "loudred": "Loudred",
+ "exploud": "Exploud",
+ "makuhita": "Makuhita",
+ "hariyama": "Hariyama",
+ "azurill": "Azurill",
+ "nosepass": "Nosepass",
+ "skitty": "Skitty",
+ "delcatty": "Delcatty",
+ "sableye": "Sableye",
+ "mawile": "Mawile",
+ "aron": "Aron",
+ "lairon": "Lairon",
+ "aggron": "Aggron",
+ "meditite": "Meditite",
+ "medicham": "Medicham",
+ "electrike": "Electrike",
+ "manectric": "Manectric",
+ "plusle": "Plusle",
+ "minun": "Minun",
+ "volbeat": "Volbeat",
+ "illumise": "Illumise",
+ "roselia": "Roselia",
+ "gulpin": "Gulpin",
+ "swalot": "Swalot",
+ "carvanha": "Carvanha",
+ "sharpedo": "Sharpedo",
+ "wailmer": "Wailmer",
+ "wailord": "Wailord",
+ "numel": "Numel",
+ "camerupt": "Camerupt",
+ "torkoal": "Torkoal",
+ "spoink": "Spoink",
+ "grumpig": "Grumpig",
+ "spinda": "Spinda",
+ "trapinch": "Trapinch",
+ "vibrava": "Vibrava",
+ "flygon": "Flygon",
+ "cacnea": "Cacnea",
+ "cacturne": "Cacturne",
+ "swablu": "Swablu",
+ "altaria": "Altaria",
+ "zangoose": "Zangoose",
+ "seviper": "Seviper",
+ "lunatone": "Lunatone",
+ "solrock": "Solrock",
+ "barboach": "Barboach",
+ "whiscash": "Whiscash",
+ "corphish": "Corphish",
+ "crawdaunt": "Crawdaunt",
+ "baltoy": "Baltoy",
+ "claydol": "Claydol",
+ "lileep": "Lileep",
+ "cradily": "Cradily",
+ "anorith": "Anorith",
+ "armaldo": "Armaldo",
+ "feebas": "Feebas",
+ "milotic": "Milotic",
+ "castform": "Castform",
+ "kecleon": "Kecleon",
+ "shuppet": "Shuppet",
+ "banette": "Banette",
+ "duskull": "Duskull",
+ "dusclops": "Dusclops",
+ "tropius": "Tropius",
+ "chimecho": "Chimecho",
+ "absol": "Absol",
+ "wynaut": "Wynaut",
+ "snorunt": "Snorunt",
+ "glalie": "Glalie",
+ "spheal": "Spheal",
+ "sealeo": "Sealeo",
+ "walrein": "Walrein",
+ "clamperl": "Clamperl",
+ "huntail": "Huntail",
+ "gorebyss": "Gorebyss",
+ "relicanth": "Relicanth",
+ "luvdisc": "Luvdisc",
+ "bagon": "Bagon",
+ "shelgon": "Shelgon",
+ "salamence": "Salamence",
+ "beldum": "Beldum",
+ "metang": "Metang",
+ "metagross": "Metagross",
+ "regirock": "Regirock",
+ "regice": "Regice",
+ "registeel": "Registeel",
+ "latias": "Latias",
+ "latios": "Latios",
+ "kyogre": "Kyogre",
+ "groudon": "Groudon",
+ "rayquaza": "Rayquaza",
+ "jirachi": "Jirachi",
+ "deoxys": "Deoxys",
+ "turtwig": "Turtwig",
+ "grotle": "Grotle",
+ "torterra": "Torterra",
+ "chimchar": "Chimchar",
+ "monferno": "Monferno",
+ "infernape": "Infernape",
+ "piplup": "Piplup",
+ "prinplup": "Prinplup",
+ "empoleon": "Empoleon",
+ "starly": "Starly",
+ "staravia": "Staravia",
+ "staraptor": "Staraptor",
+ "bidoof": "Bidoof",
+ "bibarel": "Bibarel",
+ "kricketot": "Kricketot",
+ "kricketune": "Kricketune",
+ "shinx": "Shinx",
+ "luxio": "Luxio",
+ "luxray": "Luxray",
+ "budew": "Budew",
+ "roserade": "Roserade",
+ "cranidos": "Cranidos",
+ "rampardos": "Rampardos",
+ "shieldon": "Shieldon",
+ "bastiodon": "Bastiodon",
+ "burmy": "Burmy",
+ "wormadam": "Wormadam",
+ "mothim": "Mothim",
+ "combee": "Combee",
+ "vespiquen": "Vespiquen",
+ "pachirisu": "Pachirisu",
+ "buizel": "Buizel",
+ "floatzel": "Floatzel",
+ "cherubi": "Cherubi",
+ "cherrim": "Cherrim",
+ "shellos": "Shellos",
+ "gastrodon": "Gastrodon",
+ "ambipom": "Ambipom",
+ "drifloon": "Drifloon",
+ "drifblim": "Drifblim",
+ "buneary": "Buneary",
+ "lopunny": "Lopunny",
+ "mismagius": "Mismagius",
+ "honchkrow": "Honchkrow",
+ "glameow": "Glameow",
+ "purugly": "Purugly",
+ "chingling": "Chingling",
+ "stunky": "Stunky",
+ "skuntank": "Skuntank",
+ "bronzor": "Bronzor",
+ "bronzong": "Bronzong",
+ "bonsly": "Bonsly",
+ "mime_jr": "Mime Jr.",
+ "happiny": "Happiny",
+ "chatot": "Chatot",
+ "spiritomb": "Spiritomb",
+ "gible": "Gible",
+ "gabite": "Gabite",
+ "garchomp": "Garchomp",
+ "munchlax": "Munchlax",
+ "riolu": "Riolu",
+ "lucario": "Lucario",
+ "hippopotas": "Hippopotas",
+ "hippowdon": "Hippowdon",
+ "skorupi": "Skorupi",
+ "drapion": "Drapion",
+ "croagunk": "Croagunk",
+ "toxicroak": "Toxicroak",
+ "carnivine": "Carnivine",
+ "finneon": "Finneon",
+ "lumineon": "Lumineon",
+ "mantyke": "Mantyke",
+ "snover": "Snover",
+ "abomasnow": "Abomasnow",
+ "weavile": "Weavile",
+ "magnezone": "Magnezone",
+ "lickilicky": "Lickilicky",
+ "rhyperior": "Rhyperior",
+ "tangrowth": "Tangrowth",
+ "electivire": "Electivire",
+ "magmortar": "Magmortar",
+ "togekiss": "Togekiss",
+ "yanmega": "Yanmega",
+ "leafeon": "Leafeon",
+ "glaceon": "Glaceon",
+ "gliscor": "Gliscor",
+ "mamoswine": "Mamoswine",
+ "porygon_z": "Porygon-Z",
+ "gallade": "Gallade",
+ "probopass": "Probopass",
+ "dusknoir": "Dusknoir",
+ "froslass": "Froslass",
+ "rotom": "Rotom",
+ "uxie": "Uxie",
+ "mesprit": "Mesprit",
+ "azelf": "Azelf",
+ "dialga": "Dialga",
+ "palkia": "Palkia",
+ "heatran": "Heatran",
+ "regigigas": "Regigigas",
+ "giratina": "Giratina",
+ "cresselia": "Cresselia",
+ "phione": "Phione",
+ "manaphy": "Manaphy",
+ "darkrai": "Darkrai",
+ "shaymin": "Shaymin",
+ "arceus": "Arceus",
+ "victini": "Victini",
+ "snivy": "Snivy",
+ "servine": "Servine",
+ "serperior": "Serperior",
+ "tepig": "Tepig",
+ "pignite": "Pignite",
+ "emboar": "Emboar",
+ "oshawott": "Oshawott",
+ "dewott": "Dewott",
+ "samurott": "Samurott",
+ "patrat": "Patrat",
+ "watchog": "Watchog",
+ "lillipup": "Lillipup",
+ "herdier": "Herdier",
+ "stoutland": "Stoutland",
+ "purrloin": "Purrloin",
+ "liepard": "Liepard",
+ "pansage": "Pansage",
+ "simisage": "Simisage",
+ "pansear": "Pansear",
+ "simisear": "Simisear",
+ "panpour": "Panpour",
+ "simipour": "Simipour",
+ "munna": "Munna",
+ "musharna": "Musharna",
+ "pidove": "Pidove",
+ "tranquill": "Tranquill",
+ "unfezant": "Unfezant",
+ "blitzle": "Blitzle",
+ "zebstrika": "Zebstrika",
+ "roggenrola": "Roggenrola",
+ "boldore": "Boldore",
+ "gigalith": "Gigalith",
+ "woobat": "Woobat",
+ "swoobat": "Swoobat",
+ "drilbur": "Drilbur",
+ "excadrill": "Excadrill",
+ "audino": "Audino",
+ "timburr": "Timburr",
+ "gurdurr": "Gurdurr",
+ "conkeldurr": "Conkeldurr",
+ "tympole": "Tympole",
+ "palpitoad": "Palpitoad",
+ "seismitoad": "Seismitoad",
+ "throh": "Throh",
+ "sawk": "Sawk",
+ "sewaddle": "Sewaddle",
+ "swadloon": "Swadloon",
+ "leavanny": "Leavanny",
+ "venipede": "Venipede",
+ "whirlipede": "Whirlipede",
+ "scolipede": "Scolipede",
+ "cottonee": "Cottonee",
+ "whimsicott": "Whimsicott",
+ "petilil": "Petilil",
+ "lilligant": "Lilligant",
+ "basculin": "Basculin",
+ "sandile": "Sandile",
+ "krokorok": "Krokorok",
+ "krookodile": "Krookodile",
+ "darumaka": "Darumaka",
+ "darmanitan": "Darmanitan",
+ "maractus": "Maractus",
+ "dwebble": "Dwebble",
+ "crustle": "Crustle",
+ "scraggy": "Scraggy",
+ "scrafty": "Scrafty",
+ "sigilyph": "Sigilyph",
+ "yamask": "Yamask",
+ "cofagrigus": "Cofagrigus",
+ "tirtouga": "Tirtouga",
+ "carracosta": "Carracosta",
+ "archen": "Archen",
+ "archeops": "Archeops",
+ "trubbish": "Trubbish",
+ "garbodor": "Garbodor",
+ "zorua": "Zorua",
+ "zoroark": "Zoroark",
+ "minccino": "Minccino",
+ "cinccino": "Cinccino",
+ "gothita": "Gothita",
+ "gothorita": "Gothorita",
+ "gothitelle": "Gothitelle",
+ "solosis": "Solosis",
+ "duosion": "Duosion",
+ "reuniclus": "Reuniclus",
+ "ducklett": "Ducklett",
+ "swanna": "Swanna",
+ "vanillite": "Vanillite",
+ "vanillish": "Vanillish",
+ "vanilluxe": "Vanilluxe",
+ "deerling": "Deerling",
+ "sawsbuck": "Sawsbuck",
+ "emolga": "Emolga",
+ "karrablast": "Karrablast",
+ "escavalier": "Escavalier",
+ "foongus": "Foongus",
+ "amoonguss": "Amoonguss",
+ "frillish": "Frillish",
+ "jellicent": "Jellicent",
+ "alomomola": "Alomomola",
+ "joltik": "Joltik",
+ "galvantula": "Galvantula",
+ "ferroseed": "Ferroseed",
+ "ferrothorn": "Ferrothorn",
+ "klink": "Klink",
+ "klang": "Klang",
+ "klinklang": "Klinklang",
+ "tynamo": "Tynamo",
+ "eelektrik": "Eelektrik",
+ "eelektross": "Eelektross",
+ "elgyem": "Elgyem",
+ "beheeyem": "Beheeyem",
+ "litwick": "Litwick",
+ "lampent": "Lampent",
+ "chandelure": "Chandelure",
+ "axew": "Axew",
+ "fraxure": "Fraxure",
+ "haxorus": "Haxorus",
+ "cubchoo": "Cubchoo",
+ "beartic": "Beartic",
+ "cryogonal": "Cryogonal",
+ "shelmet": "Shelmet",
+ "accelgor": "Accelgor",
+ "stunfisk": "Stunfisk",
+ "mienfoo": "Mienfoo",
+ "mienshao": "Mienshao",
+ "druddigon": "Druddigon",
+ "golett": "Golett",
+ "golurk": "Golurk",
+ "pawniard": "Pawniard",
+ "bisharp": "Bisharp",
+ "bouffalant": "Bouffalant",
+ "rufflet": "Rufflet",
+ "braviary": "Braviary",
+ "vullaby": "Vullaby",
+ "mandibuzz": "Mandibuzz",
+ "heatmor": "Heatmor",
+ "durant": "Durant",
+ "deino": "Deino",
+ "zweilous": "Zweilous",
+ "hydreigon": "Hydreigon",
+ "larvesta": "Larvesta",
+ "volcarona": "Volcarona",
+ "cobalion": "Cobalion",
+ "terrakion": "Terrakion",
+ "virizion": "Virizion",
+ "tornadus": "Tornadus",
+ "thundurus": "Thundurus",
+ "reshiram": "Reshiram",
+ "zekrom": "Zekrom",
+ "landorus": "Landorus",
+ "kyurem": "Kyurem",
+ "keldeo": "Keldeo",
+ "meloetta": "Meloetta",
+ "genesect": "Genesect",
+ "chespin": "Chespin",
+ "quilladin": "Quilladin",
+ "chesnaught": "Chesnaught",
+ "fennekin": "Fennekin",
+ "braixen": "Braixen",
+ "delphox": "Delphox",
+ "froakie": "Froakie",
+ "frogadier": "Frogadier",
+ "greninja": "Greninja",
+ "bunnelby": "Bunnelby",
+ "diggersby": "Diggersby",
+ "fletchling": "Fletchling",
+ "fletchinder": "Fletchinder",
+ "talonflame": "Talonflame",
+ "scatterbug": "Scatterbug",
+ "spewpa": "Spewpa",
+ "vivillon": "Vivillon",
+ "litleo": "Litleo",
+ "pyroar": "Pyroar",
+ "flabebe": "Flabébé",
+ "floette": "Floette",
+ "florges": "Florges",
+ "skiddo": "Skiddo",
+ "gogoat": "Gogoat",
+ "pancham": "Pancham",
+ "pangoro": "Pangoro",
+ "furfrou": "Furfrou",
+ "espurr": "Espurr",
+ "meowstic": "Meowstic",
+ "honedge": "Honedge",
+ "doublade": "Doublade",
+ "aegislash": "Aegislash",
+ "spritzee": "Spritzee",
+ "aromatisse": "Aromatisse",
+ "swirlix": "Swirlix",
+ "slurpuff": "Slurpuff",
+ "inkay": "Inkay",
+ "malamar": "Malamar",
+ "binacle": "Binacle",
+ "barbaracle": "Barbaracle",
+ "skrelp": "Skrelp",
+ "dragalge": "Dragalge",
+ "clauncher": "Clauncher",
+ "clawitzer": "Clawitzer",
+ "helioptile": "Helioptile",
+ "heliolisk": "Heliolisk",
+ "tyrunt": "Tyrunt",
+ "tyrantrum": "Tyrantrum",
+ "amaura": "Amaura",
+ "aurorus": "Aurorus",
+ "sylveon": "Sylveon",
+ "hawlucha": "Hawlucha",
+ "dedenne": "Dedenne",
+ "carbink": "Carbink",
+ "goomy": "Goomy",
+ "sliggoo": "Sliggoo",
+ "goodra": "Goodra",
+ "klefki": "Klefki",
+ "phantump": "Phantump",
+ "trevenant": "Trevenant",
+ "pumpkaboo": "Pumpkaboo",
+ "gourgeist": "Gourgeist",
+ "bergmite": "Bergmite",
+ "avalugg": "Avalugg",
+ "noibat": "Noibat",
+ "noivern": "Noivern",
+ "xerneas": "Xerneas",
+ "yveltal": "Yveltal",
+ "zygarde": "Zygarde",
+ "diancie": "Diancie",
+ "hoopa": "Hoopa",
+ "volcanion": "Volcanion",
+ "rowlet": "Rowlet",
+ "dartrix": "Dartrix",
+ "decidueye": "Decidueye",
+ "litten": "Litten",
+ "torracat": "Torracat",
+ "incineroar": "Incineroar",
+ "popplio": "Popplio",
+ "brionne": "Brionne",
+ "primarina": "Primarina",
+ "pikipek": "Pikipek",
+ "trumbeak": "Trumbeak",
+ "toucannon": "Toucannon",
+ "yungoos": "Yungoos",
+ "gumshoos": "Gumshoos",
+ "grubbin": "Grubbin",
+ "charjabug": "Charjabug",
+ "vikavolt": "Vikavolt",
+ "crabrawler": "Crabrawler",
+ "crabominable": "Crabominable",
+ "oricorio": "Oricorio",
+ "cutiefly": "Cutiefly",
+ "ribombee": "Ribombee",
+ "rockruff": "Rockruff",
+ "lycanroc": "Lycanroc",
+ "wishiwashi": "Wishiwashi",
+ "mareanie": "Mareanie",
+ "toxapex": "Toxapex",
+ "mudbray": "Mudbray",
+ "mudsdale": "Mudsdale",
+ "dewpider": "Dewpider",
+ "araquanid": "Araquanid",
+ "fomantis": "Fomantis",
+ "lurantis": "Lurantis",
+ "morelull": "Morelull",
+ "shiinotic": "Shiinotic",
+ "salandit": "Salandit",
+ "salazzle": "Salazzle",
+ "stufful": "Stufful",
+ "bewear": "Bewear",
+ "bounsweet": "Bounsweet",
+ "steenee": "Steenee",
+ "tsareena": "Tsareena",
+ "comfey": "Comfey",
+ "oranguru": "Oranguru",
+ "passimian": "Passimian",
+ "wimpod": "Wimpod",
+ "golisopod": "Golisopod",
+ "sandygast": "Sandygast",
+ "palossand": "Palossand",
+ "pyukumuku": "Pyukumuku",
+ "type_null": "Tipo Zero",
+ "silvally": "Silvally",
+ "minior": "Minior",
+ "komala": "Komala",
+ "turtonator": "Turtonator",
+ "togedemaru": "Togedemaru",
+ "mimikyu": "Mimikyu",
+ "bruxish": "Bruxish",
+ "drampa": "Drampa",
+ "dhelmise": "Dhelmise",
+ "jangmo_o": "Jangmo-o",
+ "hakamo_o": "Hakamo-o",
+ "kommo_o": "Kommo-o",
+ "tapu_koko": "Tapu Koko",
+ "tapu_lele": "Tapu Lele",
+ "tapu_bulu": "Tapu Bulu",
+ "tapu_fini": "Tapu Fini",
+ "cosmog": "Cosmog",
+ "cosmoem": "Cosmoem",
+ "solgaleo": "Solgaleo",
+ "lunala": "Lunala",
+ "nihilego": "Nihilego",
+ "buzzwole": "Buzzwole",
+ "pheromosa": "Pheromosa",
+ "xurkitree": "Xurkitree",
+ "celesteela": "Celesteela",
+ "kartana": "Kartana",
+ "guzzlord": "Guzzlord",
+ "necrozma": "Necrozma",
+ "magearna": "Magearna",
+ "marshadow": "Marshadow",
+ "poipole": "Poipole",
+ "naganadel": "Naganadel",
+ "stakataka": "Stakataka",
+ "blacephalon": "Blacephalon",
+ "zeraora": "Zeraora",
+ "meltan": "Meltan",
+ "melmetal": "Melmetal",
+ "grookey": "Grookey",
+ "thwackey": "Thwackey",
+ "rillaboom": "Rillaboom",
+ "scorbunny": "Scorbunny",
+ "raboot": "Raboot",
+ "cinderace": "Cinderace",
+ "sobble": "Sobble",
+ "drizzile": "Drizzile",
+ "inteleon": "Inteleon",
+ "skwovet": "Skwovet",
+ "greedent": "Greedent",
+ "rookidee": "Rookidee",
+ "corvisquire": "Corvisquire",
+ "corviknight": "Corviknight",
+ "blipbug": "Blipbug",
+ "dottler": "Dottler",
+ "orbeetle": "Orbeetle",
+ "nickit": "Nickit",
+ "thievul": "Thievul",
+ "gossifleur": "Gossifleur",
+ "eldegoss": "Eldegoss",
+ "wooloo": "Wooloo",
+ "dubwool": "Dubwool",
+ "chewtle": "Chewtle",
+ "drednaw": "Drednaw",
+ "yamper": "Yamper",
+ "boltund": "Boltund",
+ "rolycoly": "Rolycoly",
+ "carkol": "Carkol",
+ "coalossal": "Coalossal",
+ "applin": "Applin",
+ "flapple": "Flapple",
+ "appletun": "Appletun",
+ "silicobra": "Silicobra",
+ "sandaconda": "Sandaconda",
+ "cramorant": "Cramorant",
+ "arrokuda": "Arrokuda",
+ "barraskewda": "Barraskewda",
+ "toxel": "Toxel",
+ "toxtricity": "Toxtricity",
+ "sizzlipede": "Sizzlipede",
+ "centiskorch": "Centiskorch",
+ "clobbopus": "Clobbopus",
+ "grapploct": "Grapploct",
+ "sinistea": "Sinistea",
+ "polteageist": "Polteageist",
+ "hatenna": "Hatenna",
+ "hattrem": "Hattrem",
+ "hatterene": "Hatterene",
+ "impidimp": "Impidimp",
+ "morgrem": "Morgrem",
+ "grimmsnarl": "Grimmsnarl",
+ "obstagoon": "Obstagoon",
+ "perrserker": "Perrserker",
+ "cursola": "Cursola",
+ "sirfetchd": "Sirfetch'd",
+ "mr_rime": "Mr. Rime",
+ "runerigus": "Runerigus",
+ "milcery": "Milcery",
+ "alcremie": "Alcremie",
+ "falinks": "Falinks",
+ "pincurchin": "Pincurchin",
+ "snom": "Snom",
+ "frosmoth": "Frosmoth",
+ "stonjourner": "Stonjourner",
+ "eiscue": "Eiscue",
+ "indeedee": "Indeedee",
+ "morpeko": "Morpeko",
+ "cufant": "Cufant",
+ "copperajah": "Copperajah",
+ "dracozolt": "Dracozolt",
+ "arctozolt": "Arctozolt",
+ "dracovish": "Dracovish",
+ "arctovish": "Arctovish",
+ "duraludon": "Duraludon",
+ "dreepy": "Dreepy",
+ "drakloak": "Drakloak",
+ "dragapult": "Dragapult",
+ "zacian": "Zacian",
+ "zamazenta": "Zamazenta",
+ "eternatus": "Eternatus",
+ "kubfu": "Kubfu",
+ "urshifu": "Urshifu",
+ "zarude": "Zarude",
+ "regieleki": "Regieleki",
+ "regidrago": "Regidrago",
+ "glastrier": "Glastrier",
+ "spectrier": "Spectrier",
+ "calyrex": "Calyrex",
+ "wyrdeer": "Wyrdeer",
+ "kleavor": "Kleavor",
+ "ursaluna": "Ursaluna",
+ "basculegion": "Basculegion",
+ "sneasler": "Sneasler",
+ "overqwil": "Overqwil",
+ "enamorus": "Enamorus",
+ "sprigatito": "Sprigatito",
+ "floragato": "Floragato",
+ "meowscarada": "Meowscarada",
+ "fuecoco": "Fuecoco",
+ "crocalor": "Crocalor",
+ "skeledirge": "Skeledirge",
+ "quaxly": "Quaxly",
+ "quaxwell": "Quaxwell",
+ "quaquaval": "Quaquaval",
+ "lechonk": "Lechonk",
+ "oinkologne": "Oinkologne",
+ "tarountula": "Tarountula",
+ "spidops": "Spidops",
+ "nymble": "Nymble",
+ "lokix": "Lokix",
+ "pawmi": "Pawmi",
+ "pawmo": "Pawmo",
+ "pawmot": "Pawmot",
+ "tandemaus": "Tandemaus",
+ "maushold": "Maushold",
+ "fidough": "Fidough",
+ "dachsbun": "Dachsbun",
+ "smoliv": "Smoliv",
+ "dolliv": "Dolliv",
+ "arboliva": "Arboliva",
+ "squawkabilly": "Squawkabilly",
+ "nacli": "Nacli",
+ "naclstack": "Naclstack",
+ "garganacl": "Garganacl",
+ "charcadet": "Charcadet",
+ "armarouge": "Armarouge",
+ "ceruledge": "Ceruledge",
+ "tadbulb": "Tadbulb",
+ "bellibolt": "Bellibolt",
+ "wattrel": "Wattrel",
+ "kilowattrel": "Kilowattrel",
+ "maschiff": "Maschiff",
+ "mabosstiff": "Mabosstiff",
+ "shroodle": "Shroodle",
+ "grafaiai": "Grafaiai",
+ "bramblin": "Bramblin",
+ "brambleghast": "Brambleghast",
+ "toedscool": "Toedscool",
+ "toedscruel": "Toedscruel",
+ "klawf": "Klawf",
+ "capsakid": "Capsakid",
+ "scovillain": "Scovillain",
+ "rellor": "Rellor",
+ "rabsca": "Rabsca",
+ "flittle": "Flittle",
+ "espathra": "Espathra",
+ "tinkatink": "Tinkatink",
+ "tinkatuff": "Tinkatuff",
+ "tinkaton": "Tinkaton",
+ "wiglett": "Wiglett",
+ "wugtrio": "Wugtrio",
+ "bombirdier": "Bombirdier",
+ "finizen": "Finizen",
+ "palafin": "Palafin",
+ "varoom": "Varoom",
+ "revavroom": "Revavroom",
+ "cyclizar": "Cyclizar",
+ "orthworm": "Orthworm",
+ "glimmet": "Glimmet",
+ "glimmora": "Glimmora",
+ "greavard": "Greavard",
+ "houndstone": "Houndstone",
+ "flamigo": "Flamigo",
+ "cetoddle": "Cetoddle",
+ "cetitan": "Cetitan",
+ "veluza": "Veluza",
+ "dondozo": "Dondozo",
+ "tatsugiri": "Tatsugiri",
+ "annihilape": "Annihilape",
+ "clodsire": "Clodsire",
+ "farigiraf": "Farigiraf",
+ "dudunsparce": "Dudunsparce",
+ "kingambit": "Kingambit",
+ "great_tusk": "Grandizanne",
+ "scream_tail": "Codaurlante",
+ "brute_bonnet": "Fungofurioso",
+ "flutter_mane": "Crinealato",
+ "slither_wing": "Alirasenti",
+ "sandy_shocks": "Peldisabbia",
+ "iron_treads": "Solcoferreo",
+ "iron_bundle": "Saccoferreo",
+ "iron_hands": "Manoferrea",
+ "iron_jugulis": "Colloferreo",
+ "iron_moth": "Falenaferrea",
+ "iron_thorns": "Spineferree",
+ "frigibax": "Frigibax",
+ "arctibax": "Arctibax",
+ "baxcalibur": "Baxcalibur",
+ "gimmighoul": "Gimmighoul",
+ "gholdengo": "Gholdengo",
+ "wo_chien": "Wo-Chien",
+ "chien_pao": "Chien-Pao",
+ "ting_lu": "Ting-Lu",
+ "chi_yu": "Chi-Yu",
+ "roaring_moon": "Lunaruggente",
+ "iron_valiant": "Eroeferreo",
+ "koraidon": "Koraidon",
+ "miraidon": "Miraidon",
+ "walking_wake": "Acquecrespe",
+ "iron_leaves": "Fogliaferrea",
+ "dipplin": "Dipplin",
+ "poltchageist": "Poltchageist",
+ "sinistcha": "Sinistcha",
+ "okidogi": "Okidogi",
+ "munkidori": "Munkidori",
+ "fezandipiti": "Fezandipiti",
+ "ogerpon": "Ogerpon",
+ "archaludon": "Archaludon",
+ "hydrapple": "Hydrapple",
+ "gouging_fire": "Vampeaguzze",
+ "raging_bolt": "Furiatonante",
+ "iron_boulder": "Massoferreo",
+ "iron_crown": "Capoferreo",
+ "terapagos": "Terapagos",
+ "pecharunt": "Pecharunt",
+ "alola_rattata": "Rattata",
+ "alola_raticate": "Raticate",
+ "alola_raichu": "Raichu",
+ "alola_sandshrew": "Sandshrew",
+ "alola_sandslash": "Sandslash",
+ "alola_vulpix": "Vulpix",
+ "alola_ninetales": "Ninetales",
+ "alola_diglett": "Diglett",
+ "alola_dugtrio": "Dugtrio",
+ "alola_meowth": "Meowth",
+ "alola_persian": "Persian",
+ "alola_geodude": "Geodude",
+ "alola_graveler": "Graveler",
+ "alola_golem": "Golem",
+ "alola_grimer": "Grimer",
+ "alola_muk": "Muk",
+ "alola_exeggutor": "Exeggutor",
+ "alola_marowak": "Marowak",
+ "eternal_floette": "Floette",
+ "galar_meowth": "Meowth",
+ "galar_ponyta": "Ponyta",
+ "galar_rapidash": "Rapidash",
+ "galar_slowpoke": "Slowpoke",
+ "galar_slowbro": "Slowbro",
+ "galar_farfetchd": "Farfetch'd",
+ "galar_weezing": "Weezing",
+ "galar_mr_mime": "Mr. Mime",
+ "galar_articuno": "Articuno",
+ "galar_zapdos": "Zapdos",
+ "galar_moltres": "Moltres",
+ "galar_slowking": "Slowking",
+ "galar_corsola": "Corsola",
+ "galar_zigzagoon": "Zigzagoon",
+ "galar_linoone": "Linoone",
+ "galar_darumaka": "Darumaka",
+ "galar_darmanitan": "Darmanitan",
+ "galar_yamask": "Yamask",
+ "galar_stunfisk": "Stunfisk",
+ "hisui_growlithe": "Growlithe",
+ "hisui_arcanine": "Arcanine",
+ "hisui_voltorb": "Voltorb",
+ "hisui_electrode": "Electrode",
+ "hisui_typhlosion": "Typhlosion",
+ "hisui_qwilfish": "Qwilfish",
+ "hisui_sneasel": "Sneasel",
+ "hisui_samurott": "Samurott",
+ "hisui_lilligant": "Lilligant",
+ "hisui_zorua": "Zorua",
+ "hisui_zoroark": "Zoroark",
+ "hisui_braviary": "Braviary",
+ "hisui_sliggoo": "Sliggoo",
+ "hisui_goodra": "Goodra",
+ "hisui_avalugg": "Avalugg",
+ "hisui_decidueye": "Decidueye",
+ "paldea_tauros": "Tauros",
+ "paldea_wooper": "Wooper",
+ "bloodmoon_ursaluna": "Ursaluna",
+} as const;
diff --git a/src/locales/it/starter-select-ui-handler.ts b/src/locales/it/starter-select-ui-handler.ts
new file mode 100644
index 000000000..1a442ffe9
--- /dev/null
+++ b/src/locales/it/starter-select-ui-handler.ts
@@ -0,0 +1,32 @@
+import { SimpleTranslationEntries } from "#app/plugins/i18n";
+
+/**
+ * The menu namespace holds most miscellaneous text that isn't directly part of the game's
+ * contents or directly related to Pokemon data. This includes menu navigation, settings,
+ * account interactions, descriptive text, etc.
+ */
+export const starterSelectUiHandler: SimpleTranslationEntries = {
+ "confirmStartTeam":'Vuoi iniziare con questi Pokémon?',
+ "growthRate": "Vel. Crescita:",
+ "ability": "Abilità:",
+ "passive": "Passiva:",
+ "nature": "Natura:",
+ "eggMoves": 'Mosse delle uova',
+ "start": "Inizia",
+ "addToParty": "Aggiungi al Gruppo",
+ "toggleIVs": 'Vedi/Nascondi IV',
+ "manageMoves": 'Gestisci Mosse',
+ "useCandies": 'Usa Caramelle',
+ "selectMoveSwapOut": "Seleziona una mossa da scambiare.",
+ "selectMoveSwapWith": "Seleziona una mossa da scambiare con",
+ "unlockPassive": "Sblocca Passiva",
+ "reduceCost": "Riduci Costo",
+ "cycleShiny": "R: Alterna Shiny",
+ "cycleForm": 'F: Alterna Forma',
+ "cycleGender": 'G: Alterna Sesso',
+ "cycleAbility": 'E: Alterna Abilità',
+ "cycleNature": 'N: Alterna Natura',
+ "cycleVariant": 'V: Alterna Variante',
+ "enablePassive": "Attiva Passiva",
+ "disablePassive": "Disattiva Passiva"
+}
\ No newline at end of file
diff --git a/src/locales/it/tutorial.ts b/src/locales/it/tutorial.ts
index 2722c02ad..898dcead8 100644
--- a/src/locales/it/tutorial.ts
+++ b/src/locales/it/tutorial.ts
@@ -1,38 +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.`,
+ "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": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`,
+ "accessMenu": `Per accedere al menù, press M o Esc.\nDal menù puoi cambiare impostazioni, controllare la wiki e accedere a varie 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!`,
+ "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": `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!`,
+ "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": `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!`,
+ "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!`,
- "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.`,
+ "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`,
- "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!`,
+ "selectItem": `Dopo ogni battaglia avrai disponibili tre item.\nPotrai prenderne solo uno.
+ $Questi spaziano tra consumabili, item tenuti da Pokèmon o con un effetto passivo permanente.
+ $La maggior parte degli Item non Consumabili possono stackare in diversi modi.
+ $Alcuni Item risulteranno disponibili solo se possono essere usati, come Item Evolutivi.
+ $Puoi anche passare un Item tenuto da un Pokèmon ad un altro attraverso l'opzione 'trasferisci strumento'.
+ $L'opzione 'trasferisci strumento' sarà disponibile solo dopo aver assegnato uno strumento ad un Pokèmon.
+ $Puoi acquistare consumabili con le monete, progredendo saranno poi disponibili ulteriori oggetti.
+ $Assicurati di fare un acquisto prima di selezionare un item casuale, poichè passerai subito alla lotta successiva.`,
+
+ "eggGacha": `Da questa schermata, puoi riscattare i tuoi vouchers in cambio di\nuova Pokèmon.
+ $Le uova vanno schiuse e saranno sempre più vicine alla schiusura dopo\nogni battaglia. Le uova più rare impiegheranno più battaglie per la schiusura.
+ $I Pokémon schiusi non verranno aggiunti alla tua squadra, saranno\naggiunti ai tuoi starters.
+ $I Pokémon schiusi generalmente hanno IVs migliori rispetto ai\n Pokémon selvatici.
+ $Alcuni Pokémon possono essere ottenuti solo tramite uova.
+ $Ci sono 3 diversi macchinari con differenti\nbonus, scegli quello che preferisci!`,
} as const;
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
index 6a00693fc..b3b4d5f3c 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -9,6 +9,23 @@ import BBCodeText from 'phaser3-rex-plugins/plugins/bbcodetext';
import TransitionImagePackPlugin from 'phaser3-rex-plugins/templates/transitionimagepack/transitionimagepack-plugin.js';
import { LoadingScene } from './loading-scene';
+
+// Catch global errors and display them in an alert so users can report the issue.
+window.onerror = function (message, source, lineno, colno, error) {
+ console.error(error);
+ let errorString = `Received unhandled error. Open browser console and click OK to see details.\nError: ${message}\nSource: ${source}\nLine: ${lineno}\nColumn: ${colno}\nStack: ${error.stack}`;
+ //alert(errorString);
+ // Avoids logging the error a second time.
+ return true;
+};
+
+// Catch global promise rejections and display them in an alert so users can report the issue.
+window.addEventListener('unhandledrejection', (event) => {
+ let errorString = `Received unhandled promise rejection. Open browser console and click OK to see details.\nReason: ${event.reason}`;
+ console.error(event.reason);
+ //alert(errorString);
+});
+
const config: Phaser.Types.Core.GameConfig = {
type: Phaser.WEBGL,
parent: 'app',
diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts
index 6237e8b5a..b28759f23 100644
--- a/src/modifier/modifier-type.ts
+++ b/src/modifier/modifier-type.ts
@@ -144,9 +144,16 @@ class AddPokeballModifierType extends ModifierType implements Localizable {
}
localize(): void {
+ // TODO: Actually use i18n to localize this description.
this.name = `${this.count}x ${getPokeballName(this.pokeballType)}`;
- this.description = `Receive ${getPokeballName(this.pokeballType)} x${this.count}\nCatch Rate: ${getPokeballCatchMultiplier(this.pokeballType) > -1 ? `${getPokeballCatchMultiplier(this.pokeballType)}x` : 'Certain'}`;
+ this.description = `Receive ${getPokeballName(this.pokeballType)} x${this.count} (Inventory: {AMOUNT}) \nCatch Rate: ${getPokeballCatchMultiplier(this.pokeballType) > -1 ? `${getPokeballCatchMultiplier(this.pokeballType)}x` : 'Certain'}`;
}
+
+ getDescription(scene: BattleScene): string {
+ this.localize();
+ return this.description.replace('{AMOUNT}', scene.pokeballCounts[this.pokeballType].toString());
+ }
+
}
class AddVoucherModifierType extends ModifierType {
@@ -299,7 +306,7 @@ export class PokemonNatureChangeModifierType extends PokemonModifierType {
protected nature: Nature;
constructor(nature: Nature) {
- super(`${getNatureName(nature)} Mint`, `Changes a Pokémon\'s nature to ${getNatureName(nature, true, true, true)}`, ((_type, args) => new Modifiers.PokemonNatureChangeModifier(this, (args[0] as PlayerPokemon).id, this.nature)),
+ super(`${getNatureName(nature)} Mint`, `Changes a Pokémon\'s nature to ${getNatureName(nature, true, true, true)} and permanently unlocks the nature for the starter.`, ((_type, args) => new Modifiers.PokemonNatureChangeModifier(this, (args[0] as PlayerPokemon).id, this.nature)),
((pokemon: PlayerPokemon) => {
if (pokemon.getNature() === this.nature)
return PartyUiHandler.NoEffectMessage;
@@ -1058,7 +1065,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 +1084,7 @@ const modifierPool: ModifierPool = {
new WeightedModifierType(modifierTypes.BATON, 2),
new WeightedModifierType(modifierTypes.SOUL_DEW, 8),
//new WeightedModifierType(modifierTypes.OVAL_CHARM, 6),
+ new WeightedModifierType(modifierTypes.SOOTHE_BELL, 4),
new WeightedModifierType(modifierTypes.ABILITY_CHARM, 6),
new WeightedModifierType(modifierTypes.FOCUS_BAND, 5),
new WeightedModifierType(modifierTypes.KINGS_ROCK, 3),
@@ -1151,7 +1158,7 @@ const enemyBuffModifierPool: ModifierPool = {
new WeightedModifierType(modifierTypes.ENEMY_ATTACK_FREEZE_CHANCE, 2),
new WeightedModifierType(modifierTypes.ENEMY_ATTACK_BURN_CHANCE, 2),
new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 10),
- new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 10000),
+ new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 5),
new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 1)
].map(m => { m.setTier(ModifierTier.COMMON); return m; }),
[ModifierTier.GREAT]: [
@@ -1162,12 +1169,12 @@ const enemyBuffModifierPool: ModifierPool = {
new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 1)
].map(m => { m.setTier(ModifierTier.GREAT); return m; }),
[ModifierTier.ULTRA]: [
- new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 5),
- new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 5),
- new WeightedModifierType(modifierTypes.ENEMY_HEAL, 5),
- new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 5),
- new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 5),
- new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 300)
+ new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_BOOSTER, 10),
+ new WeightedModifierType(modifierTypes.ENEMY_DAMAGE_REDUCTION, 10),
+ new WeightedModifierType(modifierTypes.ENEMY_HEAL, 10),
+ new WeightedModifierType(modifierTypes.ENEMY_STATUS_EFFECT_HEAL_CHANCE, 10),
+ new WeightedModifierType(modifierTypes.ENEMY_ENDURE_CHANCE, 10),
+ new WeightedModifierType(modifierTypes.ENEMY_FUSED_CHANCE, 5)
].map(m => { m.setTier(ModifierTier.ULTRA); return m; }),
[ModifierTier.ROGUE]: [ ].map(m => { m.setTier(ModifierTier.ROGUE); return m; }),
[ModifierTier.MASTER]: [ ].map(m => { m.setTier(ModifierTier.MASTER); return m; })
diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts
index d8fad1466..2d76bec34 100644
--- a/src/modifier/modifier.ts
+++ b/src/modifier/modifier.ts
@@ -8,15 +8,14 @@ import { Stat } from "../data/pokemon-stat";
import { addTextObject, TextStyle } from "../ui/text";
import { Type } from '../data/type';
import { EvolutionPhase } from '../evolution-phase';
-import { FusionSpeciesFormEvolution, pokemonEvolutions } from '../data/pokemon-evolutions';
+import { FusionSpeciesFormEvolution, pokemonEvolutions, pokemonPrevolutions } from '../data/pokemon-evolutions';
import { getPokemonMessage } from '../messages';
import * as Utils from "../utils";
import { TempBattleStat } from '../data/temp-battle-stat';
import { BerryType, getBerryEffectFunc, getBerryPredicate } from '../data/berry';
import { StatusEffect, getStatusEffectHealText } from '../data/status-effect';
-import { MoneyAchv, achvs } from '../system/achv';
+import { achvs } from '../system/achv';
import { VoucherType } from '../system/voucher';
-import { PreventBerryUseAbAttr, applyAbAttrs } from '../data/ability';
import { FormChangeItem, SpeciesFormChangeItemTrigger } from '../data/pokemon-forms';
import { Nature } from '#app/data/nature';
import { BattlerTagType } from '#app/data/enums/battler-tag-type';
@@ -1090,6 +1089,13 @@ export class PokemonNatureChangeModifier extends ConsumablePokemonModifier {
apply(args: any[]): boolean {
const pokemon = args[0] as Pokemon;
pokemon.natureOverride = this.nature;
+ let speciesId = pokemon.species.speciesId;
+ pokemon.scene.gameData.dexData[speciesId].natureAttr |= Math.pow(2, this.nature + 1);
+
+ while (pokemonPrevolutions.hasOwnProperty(speciesId)) {
+ speciesId = pokemonPrevolutions[speciesId];
+ pokemon.scene.gameData.dexData[speciesId].natureAttr |= Math.pow(2, this.nature + 1);
+ }
return true;
}
@@ -1111,9 +1117,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 +1396,14 @@ export class PokemonFriendshipBoosterModifier extends PokemonHeldItemModifier {
}
apply(args: any[]): boolean {
- (args[1] as Utils.IntegerHolder).value *= 1 + 0.5 * this.getStackCount();
+ const friendship = args[1] as Utils.IntegerHolder;
+ friendship.value = Math.floor(friendship.value * (1 + 0.5 * this.getStackCount()));
return true;
}
getMaxHeldItemCount(pokemon: Pokemon): integer {
- return 5;
+ return 3;
}
}
diff --git a/src/overrides.ts b/src/overrides.ts
new file mode 100644
index 000000000..7608275ea
--- /dev/null
+++ b/src/overrides.ts
@@ -0,0 +1,28 @@
+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 DOUBLE_BATTLE_OVERRIDE = false;
+
+export const ABILITY_OVERRIDE = Abilities.NONE;
+export const PASSIVE_ABILITY_OVERRIDE = Abilities.NONE;
+export const MOVE_OVERRIDE = Moves.NONE;
+export const MOVE_OVERRIDE_2 = Moves.NONE;
+export const OPP_SPECIES_OVERRIDE = 0;
+export const OPP_ABILITY_OVERRIDE = Abilities.NONE;
+export const OPP_PASSIVE_ABILITY_OVERRIDE = Abilities.NONE;
+export const OPP_MOVE_OVERRIDE = Moves.NONE;
+export const OPP_MOVE_OVERRIDE_2 = Moves.NONE;
+
+export const OPP_SHINY_OVERRIDE = false;
+export const OPP_VARIANT_OVERRIDE = 0;
diff --git a/src/phases.ts b/src/phases.ts
index d52b348f1..97e0f5d7f 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, { AnySound, 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, ForceSwitchOutAttr } from "./data/move";
+import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, FixedDamageAttr, OneHitKOAccuracyAttr, ForceSwitchOutAttr, VariableTargetAttr } from "./data/move";
import { Mode } from './ui/ui';
import { Command } from "./ui/command-ui-handler";
import { Stat } from "./data/pokemon-stat";
-import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, PokemonFriendshipBoosterModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier } from "./modifier/modifier";
+import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier } from "./modifier/modifier";
import PartyUiHandler, { PartyOption, PartyUiMode } from "./ui/party-ui-handler";
import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from "./data/pokeball";
import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from "./data/battle-anims";
@@ -19,7 +19,7 @@ import { BattleStat, getBattleStatLevelChangeDescription, getBattleStatName } fr
import { biomeLinks, getBiomeName } from "./data/biomes";
import { Biome } from "./data/enums/biome";
import { ModifierTier } from "./modifier/modifier-tier";
-import { FusePokemonModifierType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeOption, PokemonModifierType, PokemonMoveModifierType, RememberMoveModifierType, TmModifierType, getDailyRunStarterModifiers, getEnemyBuffModifierForWave, getModifierType, getPlayerModifierTypeOptions, getPlayerShopModifierTypeOptionsForWave, modifierTypes, regenerateModifierPoolThresholds } from "./modifier/modifier-type";
+import { FusePokemonModifierType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeOption, PokemonModifierType, PokemonMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, RememberMoveModifierType, TmModifierType, getDailyRunStarterModifiers, getEnemyBuffModifierForWave, getModifierType, getPlayerModifierTypeOptions, getPlayerShopModifierTypeOptionsForWave, modifierTypes, regenerateModifierPoolThresholds } from "./modifier/modifier-type";
import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
import { BattlerTagLapseType, EncoreTag, HideSpriteTag as HiddenTag, ProtectedTag, TrappedTag } from "./data/battler-tags";
import { BattlerTagType } from "./data/enums/battler-tag-type";
@@ -30,7 +30,7 @@ import { Weather, WeatherType, getRandomWeatherType, getTerrainBlockMessage, get
import { TempBattleStat } from "./data/temp-battle-stat";
import { ArenaTagSide, ArenaTrapTag, MistTag, TrickRoomTag } from "./data/arena-tag";
import { ArenaTagType } from "./data/enums/arena-tag-type";
-import { CheckTrappedAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr } from "./data/ability";
+import { CheckTrappedAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr, StatChangeCopyAbAttr } from "./data/ability";
import { Unlockables, getUnlockableName } from "./system/unlockables";
import { getBiomeKey } from "./field/arena";
import { BattleType, BattlerIndex, TurnCommand } from "./battle";
@@ -55,8 +55,10 @@ import { OptionSelectConfig, OptionSelectItem } from "./ui/abstact-option-select
import { SaveSlotUiMode } from "./ui/save-slot-select-ui-handler";
import { fetchDailyRunSeed, getDailyRunStarters } from "./data/daily-run";
import { GameModes, gameModes } from "./game-mode";
-import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species";
+import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from "./data/pokemon-species";
import i18next from './plugins/i18n';
+import { Abilities } from "./data/enums/abilities";
+import { STARTER_FORM_OVERRIDE, STARTER_SPECIES_OVERRIDE } from './overrides';
export class LoginPhase extends Phase {
private showText: boolean;
@@ -330,6 +332,8 @@ export class TitlePhase extends Phase {
this.scene.sessionPlayTime = 0;
this.end();
});
+ }).catch(err => {
+ console.error("Failed to load daily run:\n", err);
});
});
}
@@ -814,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) {
@@ -1175,18 +1179,30 @@ export class SummonPhase extends PartyMemberPokemonPhase {
this.preSummon();
}
+ /**
+ * Sends out a Pokemon before the battle begins and shows the appropriate messages
+ */
preSummon(): void {
const partyMember = this.getPokemon();
+ // If the Pokemon about to be sent out is fainted, switch to the first non-fainted Pokemon
if (partyMember.isFainted()) {
+ console.warn("The Pokemon about to be sent out is fainted. Attempting to resolve...");
const party = this.getParty();
- const nonFaintedIndex = party.slice(this.partyMemberIndex).findIndex(p => !p.isFainted()) + this.partyMemberIndex;
- const nonFaintedPartyMember = party[nonFaintedIndex];
- party[nonFaintedIndex] = partyMember;
- party[this.partyMemberIndex] = nonFaintedPartyMember;
+
+ // Find the first non-fainted Pokemon index above the current one
+ const nonFaintedIndex = party.findIndex((p, i) => i > this.partyMemberIndex && !p.isFainted());
+ if (nonFaintedIndex === -1) {
+ console.error("Party Details:\n", party);
+ throw new Error("All available Pokemon were fainted!");
+ }
+
+ // Swaps the fainted Pokemon and the first non-fainted Pokemon in the party
+ [party[this.partyMemberIndex], party[nonFaintedIndex]] = [party[nonFaintedIndex], party[this.partyMemberIndex]];
+ console.warn("Swapped %s %O with %s %O", partyMember?.name, partyMember, party[0]?.name, party[0]);
}
if (this.player) {
- this.scene.ui.showText(i18next.t('menu:playerGo', { pokemonName: this.getPokemon().name }));
+ this.scene.ui.showText(i18next.t('battle:playerGo', { pokemonName: this.getPokemon().name }));
if (this.player)
this.scene.pbTray.hide();
this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back_pb`);
@@ -1354,8 +1370,8 @@ export class SwitchSummonPhase extends SummonPhase {
applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, pokemon);
this.scene.ui.showText(this.player ?
- i18next.t('menu:playerComeBack', { pokemonName: pokemon.name }) :
- i18next.t('menu:trainerComeBack', {
+ i18next.t('battle:playerComeBack', { pokemonName: pokemon.name }) :
+ i18next.t('battle:trainerComeBack', {
trainerName: this.scene.currentBattle.trainer.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER),
pokemonName: pokemon.name
})
@@ -1395,8 +1411,8 @@ export class SwitchSummonPhase extends SummonPhase {
party[this.fieldIndex] = switchedPokemon;
const showTextAndSummon = () => {
this.scene.ui.showText(this.player ?
- i18next.t('menu:playerGo', { pokemonName: switchedPokemon.name }) :
- i18next.t('menu:trainerGo', {
+ i18next.t('battle:playerGo', { pokemonName: switchedPokemon.name }) :
+ i18next.t('battle:trainerGo', {
trainerName: this.scene.currentBattle.trainer.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER),
pokemonName: this.getPokemon().name
})
@@ -1543,7 +1559,7 @@ export class CheckSwitchPhase extends BattlePhase {
return;
}
- this.scene.ui.showText(i18next.t('menu:switchQuestion', { pokemonName: this.useName ? pokemon.name : i18next.t('menu:pokemon') }), null, () => {
+ this.scene.ui.showText(i18next.t('battle:switchQuestion', { pokemonName: this.useName ? pokemon.name : i18next.t('battle:pokemon') }), null, () => {
this.scene.ui.setMode(Mode.CONFIRM, () => {
this.scene.ui.setMode(Mode.MESSAGE);
this.scene.tryRemovePhase(p => p instanceof PostSummonPhase && p.player && p.fieldIndex === this.fieldIndex);
@@ -1563,7 +1579,7 @@ export class SummonMissingPhase extends SummonPhase {
}
preSummon(): void {
- this.scene.ui.showText(i18next.t('menu:sendOutPokemon', { pokemonName: this.getPokemon().name}));
+ this.scene.ui.showText(i18next.t('battle:sendOutPokemon', { pokemonName: this.getPokemon().name}));
this.scene.time.delayedCall(250, () => this.summon());
}
}
@@ -1578,7 +1594,7 @@ export class LevelCapPhase extends FieldPhase {
this.scene.ui.setMode(Mode.MESSAGE).then(() => {
this.scene.playSound('level_up_fanfare');
- this.scene.ui.showText(i18next.t('menu:levelCapUp', { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true);
+ this.scene.ui.showText(i18next.t('battle:levelCapUp', { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true);
this.executeForAll(pokemon => pokemon.updateInfo(true));
});
}
@@ -1664,52 +1680,52 @@ export class CommandPhase extends FieldPhase {
switch (command) {
case Command.FIGHT:
let useStruggle = false;
- if (cursor === -1 || playerPokemon.trySelectMove(cursor, args[0] as boolean) || (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length)) {
+ if (cursor === -1 ||
+ playerPokemon.trySelectMove(cursor, args[0] as boolean) ||
+ (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length)) {
const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor].moveId : Moves.NONE : Moves.STRUGGLE;
const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, move: { move: moveId, targets: [], ignorePP: args[0] }, args: args };
const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, moveId) : args[2];
- if (moveId) {
- const move = playerPokemon.getMoveset()[cursor];
- if (move.getName().endsWith(' (N)')) {
- this.scene.ui.setMode(Mode.MESSAGE);
- this.scene.ui.showText(i18next.t('menu:moveNotImplemented', { moveName: move.getName().slice(0, -4) }), null, () => {
- this.scene.ui.clearText();
- this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex);
- }, null, true);
- return;
- }
- } else
+ if (!moveId)
turnCommand.targets = [ this.fieldIndex ];
console.log(moveTargets, playerPokemon.name);
if (moveTargets.targets.length <= 1 || moveTargets.multiple)
turnCommand.move.targets = moveTargets.targets;
+ else if(playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1)
+ turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets;
else
this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex));
this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand;
success = true;
- } else if (cursor < playerPokemon.getMoveset().length) {
+ }
+ else if (cursor < playerPokemon.getMoveset().length) {
const move = playerPokemon.getMoveset()[cursor];
- if (playerPokemon.summonData.disabledMove === move.moveId) {
- this.scene.ui.setMode(Mode.MESSAGE);
- this.scene.ui.showText(i18next.t('menu:moveDisabled', { moveName: move.getName() }), null, () => {
- this.scene.ui.clearText();
- this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex);
- }, null, true);
- }
+ this.scene.ui.setMode(Mode.MESSAGE);
+
+ // Decides between a Disabled, Not Implemented, or No PP translation message
+ const errorMessage =
+ playerPokemon.summonData.disabledMove === move.moveId ? 'battle:moveDisabled' :
+ move.getName().endsWith(' (N)') ? 'battle:moveNotImplemented' : 'battle:moveNoPP';
+ const moveName = move.getName().replace(' (N)', ''); // Trims off the indicator
+
+ this.scene.ui.showText(i18next.t(errorMessage, { moveName: moveName }), null, () => {
+ this.scene.ui.clearText();
+ this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex);
+ }, null, true);
}
break;
case Command.BALL:
if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || (this.scene.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);
@@ -1718,16 +1734,16 @@ export class CommandPhase extends FieldPhase {
if (targets.length > 1) {
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
this.scene.ui.setMode(Mode.MESSAGE);
- this.scene.ui.showText(i18next.t('menu:noPokeballMulti'), null, () => {
+ this.scene.ui.showText(i18next.t('battle:noPokeballMulti'), null, () => {
this.scene.ui.showText(null, 0);
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
}, null, true);
} else if (cursor < 5) {
const targetPokemon = this.scene.getEnemyField().find(p => p.isActive(true));
- if (targetPokemon.isBoss() && targetPokemon.bossSegmentIndex >= 1 && cursor < PokeballType.MASTER_BALL) {
+ if (targetPokemon.isBoss() && targetPokemon.bossSegmentIndex >= 1 && !targetPokemon.hasAbility(Abilities.WONDER_GUARD, false, true) && cursor < PokeballType.MASTER_BALL) {
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
this.scene.ui.setMode(Mode.MESSAGE);
- this.scene.ui.showText(i18next.t('menu:noPokeballStrong'), null, () => {
+ this.scene.ui.showText(i18next.t('battle:noPokeballStrong'), null, () => {
this.scene.ui.showText(null, 0);
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
}, null, true);
@@ -1747,14 +1763,14 @@ export class CommandPhase extends FieldPhase {
if (!isSwitch && this.scene.arena.biomeType === Biome.END) {
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
this.scene.ui.setMode(Mode.MESSAGE);
- this.scene.ui.showText(i18next.t('menu:noEscapeForce'), null, () => {
+ this.scene.ui.showText(i18next.t('battle:noEscapeForce'), null, () => {
this.scene.ui.showText(null, 0);
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
}, null, true);
} else if (!isSwitch && this.scene.currentBattle.battleType === BattleType.TRAINER) {
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
this.scene.ui.setMode(Mode.MESSAGE);
- this.scene.ui.showText(i18next.t('menu:noEscapeTrainer'), null, () => {
+ this.scene.ui.showText(i18next.t('battle:noEscapeTrainer'), null, () => {
this.scene.ui.showText(null, 0);
this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex);
}, null, true);
@@ -1777,10 +1793,10 @@ export class CommandPhase extends FieldPhase {
this.scene.ui.setMode(Mode.MESSAGE);
}
this.scene.ui.showText(
- i18next.t('menu:noEscapePokemon', {
+ i18next.t('battle:noEscapePokemon', {
pokemonName: this.scene.getPokemonById(trapTag.sourceId).name,
moveName: trapTag.getMoveName(),
- escapeVerb: isSwitch ? i18next.t('menu:escapeVerbSwitch') : i18next.t('menu:escapeVerbFlee')
+ escapeVerb: isSwitch ? i18next.t('battle:escapeVerbSwitch') : i18next.t('battle:escapeVerbFlee')
}),
null,
() => {
@@ -2030,7 +2046,7 @@ export class TurnEndPhase extends FieldPhase {
pokemon.lapseTags(BattlerTagLapseType.TURN_END);
if (pokemon.summonData.disabledMove && !--pokemon.summonData.disabledTurns) {
- this.scene.pushPhase(new MessagePhase(this.scene, i18next.t('menu:notDisabled', { moveName: allMoves[pokemon.summonData.disabledMove].name })));
+ this.scene.pushPhase(new MessagePhase(this.scene, i18next.t('battle:notDisabled', { moveName: allMoves[pokemon.summonData.disabledMove].name })));
pokemon.summonData.disabledMove = Moves.NONE;
}
@@ -2260,18 +2276,21 @@ export class MovePhase extends BattlePhase {
// Assume conditions affecting targets only apply to moves with a single target
let success = this.move.getMove().applyConditions(this.pokemon, targets[0], this.move.getMove());
- let failedText = null;
+ let cancelled = new Utils.BooleanHolder(false);
+ let failedText = this.move.getMove().getFailedText(this.pokemon, targets[0], this.move.getMove(), cancelled);
if (success && this.scene.arena.isMoveWeatherCancelled(this.move.getMove()))
success = false;
- else if (success && this.scene.arena.isMoveTerrainCancelled(this.pokemon, this.move.getMove())) {
+ else if (success && this.scene.arena.isMoveTerrainCancelled(this.pokemon, this.targets, this.move.getMove())) {
success = false;
- failedText = getTerrainBlockMessage(targets[0], this.scene.arena.terrain.terrainType);
+ if (failedText == null)
+ failedText = getTerrainBlockMessage(targets[0], this.scene.arena.terrain.terrainType);
}
if (success)
this.scene.unshiftPhase(this.getEffectPhase());
else {
this.pokemon.pushMoveHistory({ move: this.move.moveId, targets: this.targets, result: MoveResult.FAIL, virtual: this.move.virtual });
- this.showFailedText(failedText);
+ if (!cancelled.value)
+ this.showFailedText(failedText);
}
this.end();
@@ -2324,13 +2343,14 @@ export class MovePhase extends BattlePhase {
showMoveText(): void {
if (this.move.getMove().getAttrs(ChargeAttr).length) {
- this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);
const lastMove = this.pokemon.getLastXMoves() as TurnMove[];
- if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER)
+ if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER){
+ this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);
return;
+ }
}
- if (this.pokemon.getTag(BattlerTagType.RECHARGING))
+ if (this.pokemon.getTag(BattlerTagType.RECHARGING || BattlerTagType.INTERRUPTED))
return;
this.scene.queueMessage(getPokemonMessage(this.pokemon, ` used\n${this.move.getName()}!`), 500);
@@ -2338,7 +2358,7 @@ export class MovePhase extends BattlePhase {
}
showFailedText(failedText: string = null): void {
- this.scene.queueMessage(failedText || i18next.t('menu:attackFailed'));
+ this.scene.queueMessage(failedText || i18next.t('battle:attackFailed'));
}
end() {
@@ -2393,7 +2413,7 @@ export class MoveEffectPhase extends PokemonPhase {
const targetHitChecks = Object.fromEntries(targets.map(p => [ p.getBattlerIndex(), this.hitCheck(p) ]));
const activeTargets = targets.map(t => t.isActive(true));
- if (!activeTargets.length || (!this.move.getMove().isMultiTarget() && !targetHitChecks[this.targets[0]])) {
+ if (!activeTargets.length || (!this.move.getMove().getAttrs(VariableTargetAttr).length && !this.move.getMove().isMultiTarget() && !targetHitChecks[this.targets[0]])) {
user.turnData.hitCount = 1;
user.turnData.hitsLeft = 1;
if (activeTargets.length) {
@@ -2401,7 +2421,7 @@ export class MoveEffectPhase extends PokemonPhase {
moveHistoryEntry.result = MoveResult.MISS;
applyMoveAttrs(MissEffectAttr, user, null, this.move.getMove());
} else {
- this.scene.queueMessage(i18next.t('menu:attackFailed'));
+ this.scene.queueMessage(i18next.t('battle:attackFailed'));
moveHistoryEntry.result = MoveResult.FAIL;
}
return this.end();
@@ -2472,6 +2492,9 @@ export class MoveEffectPhase extends PokemonPhase {
});
}));
}
+ // Trigger effect which should only apply one time after all targeted effects have already applied
+ applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.POST_TARGET,
+ user, null, this.move.getMove())
Promise.allSettled(applyAttrs).then(() => this.end());
});
});
@@ -2485,7 +2508,7 @@ export class MoveEffectPhase extends PokemonPhase {
else {
const hitsTotal = user.turnData.hitCount - Math.max(user.turnData.hitsLeft, 0);
if (hitsTotal > 1)
- this.scene.queueMessage(i18next.t('menu:attackHitsCount', { count: hitsTotal }));
+ this.scene.queueMessage(i18next.t('battle:attackHitsCount', { count: hitsTotal }));
this.scene.applyModifiers(HitHealModifier, this.player, user);
}
}
@@ -2547,7 +2570,7 @@ export class MoveEffectPhase extends PokemonPhase {
: 3 / (3 + Math.min(targetEvasionLevel.value - userAccuracyLevel.value, 6));
}
- applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, user, BattleStat.ACC, accuracyMultiplier);
+ applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, user, BattleStat.ACC, accuracyMultiplier, this.move.getMove());
const evasionMultiplier = new Utils.NumberHolder(1);
applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, this.getTarget(), BattleStat.EVA, evasionMultiplier);
@@ -2654,8 +2677,9 @@ export class StatChangePhase extends PokemonPhase {
private levels: integer;
private showMessage: boolean;
private ignoreAbilities: boolean;
+ private canBeCopied: boolean;
- constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], levels: integer, showMessage: boolean = true, ignoreAbilities: boolean = false) {
+ constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], levels: integer, showMessage: boolean = true, ignoreAbilities: boolean = false, canBeCopied: boolean = true) {
super(scene, battlerIndex);
this.selfTarget = selfTarget;
@@ -2663,6 +2687,7 @@ export class StatChangePhase extends PokemonPhase {
this.levels = levels;
this.showMessage = showMessage;
this.ignoreAbilities = ignoreAbilities;
+ this.canBeCopied = canBeCopied;
}
start() {
@@ -2670,7 +2695,6 @@ export class StatChangePhase extends PokemonPhase {
let random = false;
- const allStats = Utils.getEnumValues(BattleStat);
if (this.stats.length === 1 && this.stats[0] === BattleStat.RAND) {
this.stats[0] = this.getRandomStat();
random = true;
@@ -2711,8 +2735,15 @@ export class StatChangePhase extends PokemonPhase {
for (let stat of filteredStats)
pokemon.summonData.battleStats[stat] = Math.max(Math.min(pokemon.summonData.battleStats[stat] + levels.value, 6), -6);
- applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget)
- this.end();
+ if (levels.value > 0 && this.canBeCopied)
+ for (let opponent of pokemon.getOpponents())
+ applyAbAttrs(StatChangeCopyAbAttr, opponent, null, this.stats, levels.value);
+
+ applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget);
+
+ pokemon.updateInfo();
+
+ handleTutorial(this.scene, Tutorial.Stat_Change).then(() => super.end());
};
if (relLevels.filter(l => l).length && this.scene.moveAnimations) {
@@ -2812,7 +2843,7 @@ export class StatChangePhase extends PokemonPhase {
if (relLevelStats.length > 1) {
statsFragment = relLevelStats.length >= 5
? 'stats'
- : `${relLevelStats.slice(0, -1).map(s => getBattleStatName(s)).join(', ')}, and ${getBattleStatName(relLevelStats[relLevelStats.length - 1])}`;
+ : `${relLevelStats.slice(0, -1).map(s => getBattleStatName(s)).join(', ')}${relLevelStats.length > 2 ? ',' : ''} and ${getBattleStatName(relLevelStats[relLevelStats.length - 1])}`;
} else
statsFragment = getBattleStatName(relLevelStats[0]);
messages.push(getPokemonMessage(this.getPokemon(), `'s ${statsFragment} ${getBattleStatLevelChangeDescription(Math.abs(parseInt(rl)), levels >= 1)}!`));
@@ -3149,8 +3180,8 @@ export class FaintPhase extends PokemonPhase {
this.scene.getField(true).filter(p => p !== pokemon).forEach(p => p.removeTagsBySourceId(pokemon.id));
pokemon.faintCry(() => {
- const friendshipDecrease = new Utils.IntegerHolder(10);
- pokemon.friendship = Math.max(pokemon.friendship - friendshipDecrease.value, 0);
+ if (pokemon instanceof PlayerPokemon)
+ pokemon.addFriendship(-10);
pokemon.hideInfo();
this.scene.playSound('faint');
this.scene.tweens.add({
@@ -3211,24 +3242,22 @@ export class VictoryPhase extends PokemonPhase {
const expShareModifier = this.scene.findModifier(m => m instanceof ExpShareModifier) as ExpShareModifier;
const expBalanceModifier = this.scene.findModifier(m => m instanceof ExpBalanceModifier) as ExpBalanceModifier;
const multipleParticipantExpBonusModifier = this.scene.findModifier(m => m instanceof MultipleParticipantExpBonusModifier) as MultipleParticipantExpBonusModifier;
- const expPartyMembers = party.filter(p => p.hp && p.level < this.scene.getMaxExpLevel());
+ const nonFaintedPartyMembers = party.filter(p => p.hp);
+ const expPartyMembers = nonFaintedPartyMembers.filter(p => p.level < this.scene.getMaxExpLevel());
const partyMemberExp = [];
if (participantIds.size) {
let expValue = this.getPokemon().getExpValue();
if (this.scene.currentBattle.battleType === BattleType.TRAINER)
expValue = Math.floor(expValue * 1.5);
- for (let partyMember of expPartyMembers) {
+ for (let partyMember of nonFaintedPartyMembers) {
const pId = partyMember.id;
const participated = participantIds.has(pId);
- if (participated) {
- const friendshipIncrease = new Utils.IntegerHolder(2);
- this.scene.applyModifier(PokemonFriendshipBoosterModifier, true, partyMember, friendshipIncrease);
- partyMember.friendship = Math.min(partyMember.friendship + friendshipIncrease.value, 255);
- if (partyMember.friendship === 255)
- this.scene.validateAchv(achvs.MAX_FRIENDSHIP);
- }
- else if (!expShareModifier) {
+ if (participated)
+ partyMember.addFriendship(2);
+ if (!expPartyMembers.includes(partyMember))
+ continue;
+ if (!participated && !expShareModifier) {
partyMemberExp.push(0);
continue;
}
@@ -3336,10 +3365,10 @@ export class TrainerVictoryPhase extends BattlePhase {
const trainerType = this.scene.currentBattle.trainer.config.trainerType;
if (vouchers.hasOwnProperty(TrainerType[trainerType])) {
if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer.config.isBoss)
- this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.VOUCHER));
+ this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, [ modifierTypes.VOUCHER, modifierTypes.VOUCHER, modifierTypes.VOUCHER_PLUS, modifierTypes.VOUCHER_PREMIUM ][vouchers[TrainerType[trainerType]].voucherType]));
}
- this.scene.ui.showText(i18next.t('menu:trainerDefeated', { trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true) }), null, () => {
+ this.scene.ui.showText(i18next.t('battle:trainerDefeated', { trainerName: this.scene.currentBattle.trainer.getName(TrainerSlot.NONE, true) }), null, () => {
const victoryMessages = this.scene.currentBattle.trainer.getVictoryMessages();
const showMessage = () => {
let message: string;
@@ -3443,8 +3472,40 @@ export class GameOverModifierRewardPhase extends ModifierRewardPhase {
}
}
+export class RibbonModifierRewardPhase extends ModifierRewardPhase {
+ private species: PokemonSpecies;
+
+ constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc, species: PokemonSpecies) {
+ super(scene, modifierTypeFunc);
+
+ this.species = species;
+ }
+
+ doReward(): Promise {
+ return new Promise(resolve => {
+ const newModifier = this.modifierType.newModifier();
+ this.scene.addModifier(newModifier).then(() => {
+ this.scene.gameData.saveSystem().then(success => {
+ if (success) {
+ this.scene.playSound('level_up_fanfare');
+ this.scene.ui.setMode(Mode.MESSAGE);
+ this.scene.arenaBg.setVisible(false);
+ this.scene.ui.fadeIn(250).then(() => {
+ this.scene.ui.showText(`${this.species.name} beat ${this.scene.gameMode.getName()} Mode for the first time!\nYou received ${newModifier.type.name}!`, null, () => {
+ resolve();
+ }, null, true, 1500);
+ });
+ } else
+ this.scene.reset(true);
+ });
+ });
+ })
+ }
+}
+
export class GameOverPhase extends BattlePhase {
private victory: boolean;
+ private firstRibbons: PokemonSpecies[] = [];
constructor(scene: BattleScene, victory?: boolean) {
super(scene);
@@ -3496,6 +3557,13 @@ export class GameOverPhase extends BattlePhase {
if (this.scene.gameMode.isClassic) {
firstClear = this.scene.validateAchv(achvs.CLASSIC_VICTORY);
this.scene.gameData.gameStats.sessionsWon++;
+ for (let pokemon of this.scene.getParty()) {
+ this.awardRibbon(pokemon);
+
+ if (pokemon.species.getRootSpeciesId() != pokemon.species.getRootSpeciesId(true)) {
+ this.awardRibbon(pokemon, true);
+ }
+ }
} else if (this.scene.gameMode.isDaily && success[1])
this.scene.gameData.gameStats.dailyRunSessionsWon++;
}
@@ -3507,8 +3575,11 @@ export class GameOverPhase extends BattlePhase {
this.scene.clearPhaseQueue();
this.scene.ui.clearText();
this.handleUnlocks();
- if (this.victory && !firstClear && success[1])
+ if (this.victory && !firstClear && success[1]) {
+ for (let species of this.firstRibbons)
+ this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species));
this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM));
+ }
this.scene.reset();
this.scene.unshiftPhase(new TitlePhase(this.scene));
this.end();
@@ -3527,6 +3598,15 @@ export class GameOverPhase extends BattlePhase {
this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.MINI_BLACK_HOLE));
}
}
+
+ awardRibbon(pokemon: Pokemon, forStarter: boolean = false): void {
+ const speciesId = getPokemonSpecies(pokemon.species.speciesId)
+ const speciesRibbonCount = this.scene.gameData.incrementRibbonCount(speciesId, forStarter);
+ // first time classic win, award voucher
+ if (speciesRibbonCount === 1) {
+ this.firstRibbons.push(getPokemonSpecies(pokemon.species.getRootSpeciesId(forStarter)));
+ }
+ }
}
export class UnlockPhase extends Phase {
@@ -3606,7 +3686,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);
@@ -3694,7 +3774,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)
@@ -3743,7 +3823,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);
@@ -3752,15 +3832,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));
@@ -3771,7 +3851,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();
@@ -3779,7 +3859,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));
@@ -4084,7 +4164,10 @@ export class AttemptCapturePhase extends PokemonPhase {
if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1)
this.scene.validateAchv(achvs.HIDDEN_ABILITY);
- if (pokemon.species.pseudoLegendary || pokemon.species.legendary)
+ if (pokemon.species.subLegendary)
+ this.scene.validateAchv(achvs.CATCH_SUB_LEGENDARY);
+
+ if (pokemon.species.legendary)
this.scene.validateAchv(achvs.CATCH_LEGENDARY);
if (pokemon.species.mythical)
@@ -4092,9 +4175,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();
@@ -4180,7 +4263,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(),
@@ -4201,7 +4284,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();
}
@@ -4233,7 +4316,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);
@@ -4337,6 +4420,7 @@ export class SelectModifierPhase extends BattlePhase {
const isMoveModifier = modifierType instanceof PokemonMoveModifierType;
const isTmModifier = modifierType instanceof TmModifierType;
const isRememberMoveModifier = modifierType instanceof RememberMoveModifierType;
+ const isPpRestoreModifier = (modifierType instanceof PokemonPpRestoreModifierType || modifierType instanceof PokemonPpUpModifierType);
const partyUiMode = isMoveModifier ? PartyUiMode.MOVE_MODIFIER
: isTmModifier ? PartyUiMode.TM_MODIFIER
: isRememberMoveModifier ? PartyUiMode.REMEMBER_MOVE_MODIFIER
@@ -4356,7 +4440,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());
@@ -4411,7 +4495,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));
@@ -4505,7 +4589,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 b12bda1f4..6265d35cf 100644
--- a/src/plugins/i18n.ts
+++ b/src/plugins/i18n.ts
@@ -1,61 +1,16 @@
import i18next from 'i18next';
-import { menu as enMenu } from '../locales/en/menu';
-import { menu as esMenu } from '../locales/es/menu';
-import { menu as itMenu } from '../locales/it/menu';
-import { menu as frMenu } from '../locales/fr/menu';
-import { menu as deMenu } from '../locales/de/menu';
+import LanguageDetector from 'i18next-browser-languagedetector';
-import { menuUiHandler as enMenuUiHandler } from '../locales/en/menu-ui-handler.js';
-import { menuUiHandler as esMenuUiHandler } from '../locales/es/menu-ui-handler.js';
-import { menuUiHandler as frMenuUiHandler } from '../locales/fr/menu-ui-handler.js';
-import { menuUiHandler as itMenuUiHandler } from '../locales/it/menu-ui-handler.js';
-import { menuUiHandler as deMenuUiHandler } from '../locales/de/menu-ui-handler.js';
-
-import { move as enMove } from '../locales/en/move';
-import { move as esMove } from '../locales/es/move';
-import { move as frMove } from '../locales/fr/move';
-import { move as deMove } from '../locales/de/move';
-
-import { ability as enAbility } from '../locales/en/ability';
-import { ability as esAbility } from '../locales/es/ability';
-import { ability as frAbility } from '../locales/fr/ability';
-import { ability as deAbility } from '../locales/de/ability';
-
-import { pokeball as enPokeball } from '../locales/en/pokeball';
-import { pokeball as esPokeball } from '../locales/es/pokeball';
-import { pokeball as frPokeball } from '../locales/fr/pokeball';
-import { pokeball as dePokeball } from '../locales/de/pokeball';
-
-import { pokemon as enPokemon } from '../locales/en/pokemon';
-import { pokemon as esPokemon } from '../locales/es/pokemon';
-import { pokemon as frPokemon } from '../locales/fr/pokemon';
-import { pokemon as dePokemon } from '../locales/de/pokemon';
-
-import { pokemonStat as enPokemonStat } from '../locales/en/pokemon-stat';
-import { pokemonStat as esPokemonStat } from '../locales/es/pokemon-stat';
-import { pokemonStat as frPokemonStat } from '../locales/fr/pokemon-stat';
-import { pokemonStat as itPokemonStat } from '../locales/it/pokemon-stat';
-import { pokemonStat as dePokemonStat } from '../locales/de/pokemon-stat';
-
-import { commandUiHandler as enCommandUiHandler } from '../locales/en/command-ui-handler';
-import { commandUiHandler as esCommandUiHandler } from '../locales/es/command-ui-handler';
-import { commandUiHandler as frCommandUiHandler } from '../locales/fr/command-ui-handler';
-import { commandUiHandler as deCommandUiHandler } from '../locales/de/command-ui-handler';
-
-import { fightUiHandler as enFightUiHandler } from '../locales/en/fight-ui-handler';
-import { fightUiHandler as frFightUiHandler } from '../locales/fr/fight-ui-handler';
-
-import { tutorial as enTutorial } from '../locales/en/tutorial';
-import { tutorial as esTutorial } from '../locales/es/tutorial';
-import { tutorial as frTutorial } from '../locales/fr/tutorial';
-import { tutorial as itTutorial} from '../locales/it/tutorial';
-import { tutorial as deTutorial } from '../locales/de/tutorial';
+import { deConfig } from '#app/locales/de/config.js';
+import { enConfig } from '#app/locales/en/config.js';
+import { esConfig } from '#app/locales/es/config.js';
+import { frConfig } from '#app/locales/fr/config.js';
+import { itConfig } from '#app/locales/it/config.js';
export interface SimpleTranslationEntries {
[key: string]: string
}
-
export interface MoveTranslationEntry {
name: string,
effect: string
@@ -78,10 +33,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');
@@ -92,74 +45,39 @@ 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,
},
resources: {
en: {
- menu: enMenu,
- menuUiHandler: enMenuUiHandler,
- move: enMove,
- ability: enAbility,
- pokeball: enPokeball,
- pokemon: enPokemon,
- pokemonStat: enPokemonStat,
- commandUiHandler: enCommandUiHandler,
- fightUiHandler: enFightUiHandler,
- tutorial: enTutorial,
+ ...enConfig
},
es: {
- menu: esMenu,
- menuUiHandler: esMenuUiHandler,
- move: esMove,
- ability: esAbility,
- pokeball: esPokeball,
- pokemon: esPokemon,
- pokemonStat: esPokemonStat,
- commandUiHandler: esCommandUiHandler,
- tutorial: esTutorial,
+ ...esConfig
},
fr: {
- menu: frMenu,
- menuUiHandler: frMenuUiHandler,
- move: frMove,
- ability: frAbility,
- pokeball: frPokeball,
- pokemon: frPokemon,
- pokemonStat: frPokemonStat,
- commandUiHandler: frCommandUiHandler,
- fightUiHandler: frFightUiHandler,
- tutorial: frTutorial,
+ ...frConfig
},
it: {
- menu: itMenu,
- menuUiHandler: itMenuUiHandler,
- pokemonStat: itPokemonStat,
- tutorial: itTutorial,
+ ...itConfig
},
de: {
- menu: deMenu,
- menuUiHandler: deMenuUiHandler,
- move: deMove,
- ability: deAbility,
- pokeball: dePokeball,
- pokemon: dePokemon,
- pokemonStat: dePokemonStat,
- commandUiHandler: deCommandUiHandler,
- tutorial: deTutorial,
+ ...deConfig
}
},
});
@@ -169,16 +87,18 @@ export function initI18n(): void {
declare module 'i18next' {
interface CustomTypeOptions {
resources: {
- menu: typeof enMenu;
- menuUiHandler: typeof enMenuUiHandler;
- move: typeof enMove;
- ability: typeof enAbility;
- pokeball: typeof enPokeball;
- pokemon: typeof enPokemon;
- pokemonStat: typeof enPokemonStat;
- commandUiHandler: typeof enCommandUiHandler;
- fightUiHandler: typeof enFightUiHandler;
- tutorial: typeof enTutorial;
+ menu: SimpleTranslationEntries;
+ menuUiHandler: SimpleTranslationEntries;
+ move: MoveTranslationEntries;
+ battle: SimpleTranslationEntries,
+ ability: AbilityTranslationEntries;
+ pokeball: SimpleTranslationEntries;
+ pokemon: SimpleTranslationEntries;
+ pokemonStat: SimpleTranslationEntries;
+ commandUiHandler: SimpleTranslationEntries;
+ fightUiHandler: SimpleTranslationEntries;
+ tutorial: SimpleTranslationEntries;
+ starterSelectUiHandler: SimpleTranslationEntries;
};
}
}
diff --git a/src/system/achv.ts b/src/system/achv.ts
index 2307347db..9a6e43965 100644
--- a/src/system/achv.ts
+++ b/src/system/achv.ts
@@ -7,6 +7,7 @@ export enum AchvTier {
COMMON,
GREAT,
ULTRA,
+ ROGUE,
MASTER
}
@@ -52,6 +53,8 @@ export class Achv {
getTier(): AchvTier {
if (this.score >= 100)
return AchvTier.MASTER;
+ if (this.score >= 75)
+ return AchvTier.ROGUE;
if (this.score >= 50)
return AchvTier.ULTRA;
if (this.score >= 25)
@@ -70,6 +73,16 @@ export class MoneyAchv extends Achv {
}
}
+export class RibbonAchv extends Achv {
+ private ribbonAmount: integer;
+
+ constructor(name: string, ribbonAmount: integer, iconImage: string, score: integer) {
+ super(name, `Accumulate a total of ${ribbonAmount.toLocaleString('en-US')} Ribbons`, iconImage, score, (scene: BattleScene, _args: any[]) => scene.gameData.gameStats.ribbonsOwned >= this.ribbonAmount);
+
+ this.ribbonAmount = ribbonAmount;
+ }
+}
+
export class DamageAchv extends Achv {
private damageAmount: integer;
@@ -122,6 +135,11 @@ export const achvs = {
LV_100: new LevelAchv('But Wait, There\'s More!', 100, 'rare_candy', 25).setSecret(),
LV_250: new LevelAchv('Elite', 250, 'rarer_candy', 50).setSecret(true),
LV_1000: new LevelAchv('To Go Even Further Beyond', 1000, 'candy_jar', 100).setSecret(true),
+ _10_RIBBONS: new RibbonAchv('Pokémon League Champion', 10, 'bronze_ribbon', 10),
+ _25_RIBBONS: new RibbonAchv('Great League Champion', 25, 'great_ribbon', 25).setSecret(true),
+ _50_RIBBONS: new RibbonAchv('Ultra League Champion', 50, 'ultra_ribbon', 50).setSecret(true),
+ _75_RIBBONS: new RibbonAchv('Rogue League Champion', 75, 'rogue_ribbon', 75).setSecret(true),
+ _100_RIBBONS: new RibbonAchv('Master League Champion', 100, 'master_ribbon', 100).setSecret(true),
TRANSFER_MAX_BATTLE_STAT: new Achv('Teamwork', 'Baton pass to another party member with at least one stat maxed out', 'stick', 20),
MAX_FRIENDSHIP: new Achv('Friendmaxxing', 'Reach max friendship on a Pokémon', 'soothe_bell', 25),
MEGA_EVOLVE: new Achv('Megamorph', 'Mega evolve a Pokémon', 'mega_bracelet', 50),
@@ -131,11 +149,13 @@ export const achvs = {
SPLICE: new Achv('Infinite Fusion', 'Splice two Pokémon together with DNA Splicers', 'dna_splicers', 10),
MINI_BLACK_HOLE: new ModifierAchv('A Hole Lot of Items', 'Acquire a Mini Black Hole', 'mini_black_hole', 25, modifier => modifier instanceof TurnHeldItemTransferModifier).setSecret(),
CATCH_MYTHICAL: new Achv('Mythical', 'Catch a mythical Pokémon', 'strange_ball', 50).setSecret(),
- CATCH_LEGENDARY: new Achv('Legendary', 'Catch a legendary Pokémon', 'mb', 75).setSecret(),
+ CATCH_SUB_LEGENDARY: new Achv('(Sub-)Legendary', 'Catch a sub-legendary Pokémon', 'rb', 75).setSecret(),
+ CATCH_LEGENDARY: new Achv('Legendary', 'Catch a legendary Pokémon', 'mb', 100).setSecret(),
SEE_SHINY: new Achv('Shiny', 'Find a shiny Pokémon in the wild', 'pb_gold', 75),
SHINY_PARTY: new Achv('That\'s Dedication', 'Have a full party of shiny Pokémon', 'shiny_charm', 100).setSecret(true),
HATCH_MYTHICAL: new Achv('Mythical Egg', 'Hatch a mythical Pokémon from an egg', 'pair_of_tickets', 75).setSecret(),
- HATCH_LEGENDARY: new Achv('Legendary Egg', 'Hatch a legendary Pokémon from an egg', 'mystic_ticket', 100).setSecret(),
+ HATCH_SUB_LEGENDARY: new Achv('Sub-Legendary Egg', 'Hatch a sub-legendary Pokémon from an egg', 'mystic_ticket', 100).setSecret(),
+ HATCH_LEGENDARY: new Achv('Legendary Egg', 'Hatch a legendary Pokémon from an egg', 'mystic_ticket', 125).setSecret(),
HATCH_SHINY: new Achv('Shiny Egg', 'Hatch a shiny Pokémon from an egg', 'golden_mystic_ticket', 100).setSecret(),
HIDDEN_ABILITY: new Achv('Hidden Potential', 'Catch a Pokémon with a hidden ability', 'ability_charm', 75),
PERFECT_IVS: new Achv('Certificate of Authenticity', 'Get perfect IVs on a Pokémon', 'blunder_policy', 100),
diff --git a/src/system/game-data.ts b/src/system/game-data.ts
index e11c2dcc5..fff09f83f 100644
--- a/src/system/game-data.ts
+++ b/src/system/game-data.ts
@@ -169,9 +169,11 @@ export interface StarterDataEntry {
moveset: StarterMoveset | StarterFormMoveData;
eggMoves: integer;
candyCount: integer;
+ friendship: integer;
abilityAttr: integer;
passiveAttr: integer;
valueReduction: integer;
+ classicWinCount: integer;
}
export interface StarterData {
@@ -193,7 +195,8 @@ const systemShortKeys = {
eggMoves: '$em',
candyCount: '$x',
passive: '$p',
- valueReduction: '$vr'
+ valueReduction: '$vr',
+ classicWinCount: '$wc'
};
export class GameData {
@@ -357,8 +360,11 @@ export class GameData {
this.starterData = systemData.starterData;
}
- if (systemData.gameStats)
+ if (systemData.gameStats) {
+ if (systemData.gameStats.legendaryPokemonCaught !== undefined && systemData.gameStats.subLegendaryPokemonCaught === undefined)
+ this.fixLegendaryStats(systemData);
this.gameStats = systemData.gameStats;
+ }
if (systemData.unlocks) {
for (let key of Object.keys(systemData.unlocks)) {
@@ -988,9 +994,11 @@ export class GameData {
moveset: null,
eggMoves: 0,
candyCount: 0,
+ friendship: 0,
abilityAttr: defaultStarterSpecies.includes(speciesId) ? AbilityAttr.ABILITY_1 : 0,
passiveAttr: 0,
- valueReduction: 0
+ valueReduction: 0,
+ classicWinCount: 0
};
}
@@ -1003,7 +1011,9 @@ export class GameData {
if (incrementCount) {
dexEntry.seenCount++;
this.gameStats.pokemonSeen++;
- if (!trainer && pokemon.species.pseudoLegendary || pokemon.species.legendary)
+ if (!trainer && pokemon.species.subLegendary)
+ this.gameStats.subLegendaryPokemonSeen++;
+ else if (!trainer && pokemon.species.legendary)
this.gameStats.legendaryPokemonSeen++;
else if (!trainer && pokemon.species.mythical)
this.gameStats.mythicalPokemonSeen++;
@@ -1035,12 +1045,15 @@ export class GameData {
const hasPrevolution = pokemonPrevolutions.hasOwnProperty(species.speciesId);
const newCatch = !caughtAttr;
+ const hasNewAttr = (caughtAttr & dexAttr) !== dexAttr;
if (incrementCount) {
if (!fromEgg) {
dexEntry.caughtCount++;
this.gameStats.pokemonCaught++;
- if (pokemon.species.pseudoLegendary || pokemon.species.legendary)
+ if (pokemon.species.subLegendary)
+ this.gameStats.subLegendaryPokemonCaught++;
+ else if (pokemon.species.legendary)
this.gameStats.legendaryPokemonCaught++;
else if (pokemon.species.mythical)
this.gameStats.mythicalPokemonCaught++;
@@ -1049,7 +1062,9 @@ export class GameData {
} else {
dexEntry.hatchedCount++;
this.gameStats.pokemonHatched++;
- if (pokemon.species.pseudoLegendary || pokemon.species.legendary)
+ if (pokemon.species.subLegendary)
+ this.gameStats.subLegendaryPokemonHatched++;
+ else if (pokemon.species.legendary)
this.gameStats.legendaryPokemonHatched++;
else if (pokemon.species.mythical)
this.gameStats.mythicalPokemonHatched++;
@@ -1057,7 +1072,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));
}
@@ -1077,6 +1092,32 @@ export class GameData {
});
}
+ incrementRibbonCount(species: PokemonSpecies, forStarter: boolean = false): integer {
+ const speciesIdToIncrement: Species = species.getRootSpeciesId(forStarter);
+
+ if (!this.starterData[speciesIdToIncrement].classicWinCount) {
+ this.starterData[speciesIdToIncrement].classicWinCount = 0;
+ }
+
+ if (!this.starterData[speciesIdToIncrement].classicWinCount)
+ this.scene.gameData.gameStats.ribbonsOwned++;
+
+ const ribbonsInStats: integer = this.scene.gameData.gameStats.ribbonsOwned;
+
+ if (ribbonsInStats >= 100)
+ this.scene.validateAchv(achvs._100_RIBBONS);
+ if (ribbonsInStats >= 75)
+ this.scene.validateAchv(achvs._75_RIBBONS);
+ if (ribbonsInStats >= 50)
+ this.scene.validateAchv(achvs._50_RIBBONS);
+ if (ribbonsInStats >= 25)
+ this.scene.validateAchv(achvs._25_RIBBONS);
+ if (ribbonsInStats >= 10)
+ this.scene.validateAchv(achvs._10_RIBBONS);
+
+ return ++this.starterData[speciesIdToIncrement].classicWinCount;
+ }
+
addStarterCandy(species: PokemonSpecies, count: integer): void {
this.scene.candyBar.showStarterSpeciesCandy(species.speciesId, count);
this.starterData[species.speciesId].candyCount += count;
@@ -1308,4 +1349,22 @@ export class GameData {
for (let starterId of defaultStarterSpecies)
systemData.starterData[starterId].abilityAttr |= AbilityAttr.ABILITY_1;
}
+
+ fixLegendaryStats(systemData: SystemSaveData): void {
+ systemData.gameStats.subLegendaryPokemonSeen = 0;
+ systemData.gameStats.subLegendaryPokemonCaught = 0;
+ systemData.gameStats.subLegendaryPokemonHatched = 0;
+ allSpecies.filter(s => s.subLegendary).forEach(s => {
+ const dexEntry = systemData.dexData[s.speciesId];
+ systemData.gameStats.subLegendaryPokemonSeen += dexEntry.seenCount;
+ systemData.gameStats.legendaryPokemonSeen = Math.max(systemData.gameStats.legendaryPokemonSeen - dexEntry.seenCount, 0);
+ systemData.gameStats.subLegendaryPokemonCaught += dexEntry.caughtCount;
+ systemData.gameStats.legendaryPokemonCaught = Math.max(systemData.gameStats.legendaryPokemonCaught - dexEntry.caughtCount, 0);
+ systemData.gameStats.subLegendaryPokemonHatched += dexEntry.hatchedCount;
+ systemData.gameStats.legendaryPokemonHatched = Math.max(systemData.gameStats.legendaryPokemonHatched - dexEntry.hatchedCount, 0);
+ });
+ systemData.gameStats.subLegendaryPokemonSeen = Math.max(systemData.gameStats.subLegendaryPokemonSeen, systemData.gameStats.subLegendaryPokemonCaught);
+ systemData.gameStats.legendaryPokemonSeen = Math.max(systemData.gameStats.legendaryPokemonSeen, systemData.gameStats.legendaryPokemonCaught);
+ systemData.gameStats.mythicalPokemonSeen = Math.max(systemData.gameStats.mythicalPokemonSeen, systemData.gameStats.mythicalPokemonCaught);
+ }
}
\ No newline at end of file
diff --git a/src/system/game-stats.ts b/src/system/game-stats.ts
index 9a564b3c3..c67bd6d23 100644
--- a/src/system/game-stats.ts
+++ b/src/system/game-stats.ts
@@ -6,6 +6,7 @@ export class GameStats {
public battles: integer;
public classicSessionsPlayed: integer;
public sessionsWon: integer;
+ public ribbonsOwned: integer;
public dailyRunSessionsPlayed: integer;
public dailyRunSessionsWon: integer;
public endlessSessionsPlayed: integer;
@@ -18,6 +19,9 @@ export class GameStats {
public pokemonDefeated: integer;
public pokemonCaught: integer;
public pokemonHatched: integer;
+ public subLegendaryPokemonSeen: integer;
+ public subLegendaryPokemonCaught: integer;
+ public subLegendaryPokemonHatched: integer;
public legendaryPokemonSeen: integer;
public legendaryPokemonCaught: integer;
public legendaryPokemonHatched: integer;
@@ -40,6 +44,7 @@ export class GameStats {
this.battles = source?.battles || 0;
this.classicSessionsPlayed = source?.classicSessionsPlayed || 0;
this.sessionsWon = source?.sessionsWon || 0;
+ this.ribbonsOwned = source?.ribbonsOwned || 0;
this.dailyRunSessionsPlayed = source?.dailyRunSessionsPlayed || 0;
this.dailyRunSessionsWon = source?.dailyRunSessionsWon || 0;
this.endlessSessionsPlayed = source?.endlessSessionsPlayed || 0;
@@ -52,6 +57,10 @@ export class GameStats {
this.pokemonDefeated = source?.pokemonDefeated || 0;
this.pokemonCaught = source?.pokemonCaught || 0;
this.pokemonHatched = source?.pokemonHatched || 0;
+ // Currently handled by migration
+ this.subLegendaryPokemonSeen = source?.subLegendaryPokemonSeen;
+ this.subLegendaryPokemonCaught = source?.subLegendaryPokemonCaught;
+ this.subLegendaryPokemonHatched = source?.subLegendaryPokemonHatched;
this.legendaryPokemonSeen = source?.legendaryPokemonSeen || 0;
this.legendaryPokemonCaught = source?.legendaryPokemonCaught || 0;
this.legendaryPokemonHatched = source?.legendaryPokemonHatched || 0;
diff --git a/src/system/settings.ts b/src/system/settings.ts
index df4f894c9..3805a35bb 100644
--- a/src/system/settings.ts
+++ b/src/system/settings.ts
@@ -25,6 +25,7 @@ export enum Setting {
Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS",
Player_Gender = "PLAYER_GENDER",
Gamepad_Support = "GAMEPAD_SUPPORT",
+ Swap_A_and_B = "SWAP_A_B", // Swaps which gamepad button handles ACTION and CANCEL
Touch_Controls = "TOUCH_CONTROLS",
Vibration = "VIBRATION"
}
@@ -56,6 +57,7 @@ export const settingOptions: SettingOptions = {
[Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ],
[Setting.Player_Gender]: [ 'Boy', 'Girl' ],
[Setting.Gamepad_Support]: [ 'Auto', 'Disabled' ],
+ [Setting.Swap_A_and_B]: [ 'Enabled', 'Disabled' ],
[Setting.Touch_Controls]: [ 'Auto', 'Disabled' ],
[Setting.Vibration]: [ 'Auto', 'Disabled' ]
};
@@ -79,6 +81,7 @@ export const settingDefaults: SettingDefaults = {
[Setting.Fusion_Palette_Swaps]: 1,
[Setting.Player_Gender]: 0,
[Setting.Gamepad_Support]: 0,
+ [Setting.Swap_A_and_B]: 1, // Set to 'Disabled' by default
[Setting.Touch_Controls]: 0,
[Setting.Vibration]: 0
};
@@ -148,6 +151,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer)
case Setting.Gamepad_Support:
scene.gamepadSupport = settingOptions[setting][value] !== 'Disabled';
break;
+ case Setting.Swap_A_and_B:
+ scene.abSwapped = settingOptions[setting][value] !== 'Disabled';
+ break;
case Setting.Touch_Controls:
scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen();
const touchControls = document.getElementById('touchControls');
@@ -180,6 +186,10 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer)
label: 'Spanish',
handler: () => changeLocaleHandler('es')
},
+ {
+ label: 'Italian',
+ handler: () => changeLocaleHandler('it')
+ },
{
label: 'French',
handler: () => changeLocaleHandler('fr')
diff --git a/src/system/voucher.ts b/src/system/voucher.ts
index c3bae6f08..276e74eeb 100644
--- a/src/system/voucher.ts
+++ b/src/system/voucher.ts
@@ -44,7 +44,7 @@ export class Voucher {
case VoucherType.PREMIUM:
return AchvTier.ULTRA;
case VoucherType.GOLDEN:
- return AchvTier.MASTER;
+ return AchvTier.ROGUE;
}
}
}
diff --git a/src/tutorial.ts b/src/tutorial.ts
index 918c68b9b..88e88fa80 100644
--- a/src/tutorial.ts
+++ b/src/tutorial.ts
@@ -9,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"
}
@@ -42,6 +43,11 @@ const tutorialHandlers = {
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(() => {
diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts
new file mode 100644
index 000000000..38d8e7830
--- /dev/null
+++ b/src/ui-inputs.ts
@@ -0,0 +1,154 @@
+import Phaser from "phaser";
+import {Mode} from "./ui/ui";
+import {InputsController} from "./inputs-controller";
+import MessageUiHandler from "./ui/message-ui-handler";
+import StarterSelectUiHandler from "./ui/starter-select-ui-handler";
+import {Setting, settingOptions} from "./system/settings";
+import SettingsUiHandler from "./ui/settings-ui-handler";
+import {Button} from "./enums/buttons";
+
+export interface ActionKeys {
+ [key in Button]: () => void;
+}
+
+export class UiInputs {
+ private scene: Phaser.Scene;
+ private events: Phaser.Events;
+ private inputsController: InputsController;
+
+ constructor(scene: Phaser.Scene, inputsController: InputsController) {
+ this.scene = scene;
+ this.inputsController = inputsController;
+ this.init();
+ }
+
+ init(): void {
+ this.events = this.inputsController.events;
+ this.listenInputs();
+ }
+
+ listenInputs(): void {
+ this.events.on('input_down', (event) => {
+ const actions = this.getActionsKeyDown();
+ if (!actions.hasOwnProperty(event.button)) return;
+ actions[event.button]();
+ }, this);
+
+ this.events.on('input_up', (event) => {
+ const actions = this.getActionsKeyUp();
+ if (!actions.hasOwnProperty(event.button)) return;
+ actions[event.button]();
+ }, this);
+ }
+
+ doVibration(inputSuccess: boolean, vibrationLength: number): void {
+ if (inputSuccess && this.scene.enableVibration && typeof navigator.vibrate !== 'undefined')
+ navigator.vibrate(vibrationLength);
+ }
+
+ getActionsKeyDown(): ActionKeys {
+ const actions = {};
+ actions[Button.UP] = () => this.buttonDirection(Button.UP);
+ actions[Button.DOWN] = () => this.buttonDirection(Button.DOWN);
+ actions[Button.LEFT] = () => this.buttonDirection(Button.LEFT);
+ actions[Button.RIGHT] = () => this.buttonDirection(Button.RIGHT);
+ actions[Button.SUBMIT] = () => this.buttonTouch();
+ actions[Button.ACTION] = () => this.buttonAb(Button.ACTION);
+ actions[Button.CANCEL] = () => this.buttonAb(Button.CANCEL);
+ actions[Button.MENU] = () => this.buttonMenu();
+ actions[Button.STATS] = () => this.buttonStats(true);
+ actions[Button.CYCLE_SHINY] = () => this.buttonCycleOption(Button.CYCLE_SHINY);
+ actions[Button.CYCLE_FORM] = () => this.buttonCycleOption(Button.CYCLE_FORM);
+ actions[Button.CYCLE_GENDER] = () => this.buttonCycleOption(Button.CYCLE_GENDER);
+ actions[Button.CYCLE_ABILITY] = () => this.buttonCycleOption(Button.CYCLE_ABILITY);
+ actions[Button.CYCLE_NATURE] = () => this.buttonCycleOption(Button.CYCLE_NATURE);
+ actions[Button.CYCLE_VARIANT] = () => this.buttonCycleOption(Button.CYCLE_VARIANT);
+ actions[Button.SPEED_UP] = () => this.buttonSpeedChange();
+ actions[Button.SLOW_DOWN] = () => this.buttonSpeedChange(false);
+ return actions;
+ }
+
+ getActionsKeyUp(): ActionKeys {
+ const actions = {};
+ actions[Button.STATS] = () => this.buttonStats(false);
+ return actions;
+ }
+
+ buttonDirection(direction: Button): void {
+ const inputSuccess = this.scene.ui.processInput(direction);
+ const vibrationLength = 5;
+ this.doVibration(inputSuccess, vibrationLength);
+ }
+
+ buttonAb(button: Button): void {
+ this.scene.ui.processInput(button);
+ }
+
+ buttonTouch(): void {
+ this.scene.ui.processInput(Button.SUBMIT) || this.scene.ui.processInput(Button.ACTION);
+ }
+
+ buttonStats(pressed: boolean = true): void {
+ if (pressed) {
+ for (let p of this.scene.getField().filter(p => p?.isActive(true)))
+ p.toggleStats(true);
+ } else {
+ for (let p of this.scene.getField().filter(p => p?.isActive(true)))
+ p.toggleStats(false);
+ }
+ }
+
+ buttonMenu(): void {
+ if (this.scene.disableMenu)
+ return;
+ switch (this.scene.ui?.getMode()) {
+ case Mode.MESSAGE:
+ if (!(this.scene.ui.getHandler() as MessageUiHandler).pendingPrompt)
+ return;
+ case Mode.TITLE:
+ case Mode.COMMAND:
+ case Mode.FIGHT:
+ case Mode.BALL:
+ case Mode.TARGET_SELECT:
+ case Mode.SAVE_SLOT:
+ case Mode.PARTY:
+ case Mode.SUMMARY:
+ case Mode.STARTER_SELECT:
+ case Mode.CONFIRM:
+ case Mode.OPTION_SELECT:
+ this.scene.ui.setOverlayMode(Mode.MENU);
+ break;
+ case Mode.MENU:
+ case Mode.SETTINGS:
+ case Mode.ACHIEVEMENTS:
+ this.scene.ui.revertMode();
+ this.scene.playSound('select');
+ break;
+ default:
+ return
+ }
+ }
+
+ buttonCycleOption(button: Button): void {
+ if (this.scene.ui?.getHandler() instanceof StarterSelectUiHandler) {
+ this.scene.ui.processInput(button);
+ }
+ }
+
+ buttonSpeedChange(up = true): void {
+ if (up) {
+ if (this.scene.gameSpeed < 5) {
+ this.scene.gameData.saveSetting(Setting.Game_Speed, settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) + 1);
+ if (this.scene.ui?.getMode() === Mode.SETTINGS)
+ (this.scene.ui.getHandler() as SettingsUiHandler).show([]);
+ }
+ return;
+ }
+ if (this.scene.gameSpeed > 1) {
+ this.scene.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) - 1, 0));
+ if (this.scene.ui?.getMode() === Mode.SETTINGS)
+ (this.scene.ui.getHandler() as SettingsUiHandler).show([]);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts
index 2f2c4face..ffc0cabc8 100644
--- a/src/ui/abstact-option-select-ui-handler.ts
+++ b/src/ui/abstact-option-select-ui-handler.ts
@@ -1,10 +1,11 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import { addWindow } from "./ui-theme";
import * as Utils from "../utils";
import { argbFromRgba } from "@material/material-color-utilities";
+import {Button} from "../enums/buttons";
export interface OptionSelectConfig {
xOffset?: number;
diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts
index cadda64e0..561b09171 100644
--- a/src/ui/achvs-ui-handler.ts
+++ b/src/ui/achvs-ui-handler.ts
@@ -1,9 +1,10 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Achv, achvs } from "../system/achv";
import MessageUiHandler from "./message-ui-handler";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
import { addWindow } from "./ui-theme";
+import {Button} from "../enums/buttons";
export default class AchvsUiHandler extends MessageUiHandler {
private achvsContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/awaitable-ui-handler.ts b/src/ui/awaitable-ui-handler.ts
index e8cc979e4..532ca1115 100644
--- a/src/ui/awaitable-ui-handler.ts
+++ b/src/ui/awaitable-ui-handler.ts
@@ -1,6 +1,7 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
+import {Button} from "../enums/buttons";
export default abstract class AwaitableUiHandler extends UiHandler {
protected awaitingActionInput: boolean;
diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts
index f2ebdc342..06729151d 100644
--- a/src/ui/ball-ui-handler.ts
+++ b/src/ui/ball-ui-handler.ts
@@ -1,11 +1,12 @@
import { CommandPhase } from "../phases";
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { getPokeballName } from "../data/pokeball";
import { addTextObject, TextStyle } from "./text";
import { Command } from "./command-ui-handler";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import { addWindow } from "./ui-theme";
+import {Button} from "../enums/buttons";
export default class BallUiHandler extends UiHandler {
private pokeballSelectContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts
index ae794a256..2ca0457c8 100644
--- a/src/ui/battle-info.ts
+++ b/src/ui/battle-info.ts
@@ -7,6 +7,9 @@ import { StatusEffect } from '../data/status-effect';
import BattleScene from '../battle-scene';
import { Type, getTypeRgb } from '../data/type';
import { getVariantTint } from '#app/data/variant';
+import { BattleStat } from '#app/data/battle-stat';
+
+const battleStatOrder = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.ACC, BattleStat.EVA, BattleStat.SPD ];
export default class BattleInfo extends Phaser.GameObjects.Container {
private player: boolean;
@@ -24,6 +27,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
private lastLevelExp: integer;
private lastLevel: integer;
private lastLevelCapped: boolean;
+ private lastBattleStats: string;
private box: Phaser.GameObjects.Sprite;
private nameText: Phaser.GameObjects.Text;
@@ -46,6 +50,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
public expMaskRect: Phaser.GameObjects.Graphics;
+ private statsContainer: Phaser.GameObjects.Container;
+ private statsBox: Phaser.GameObjects.Sprite;
+ private statValuesContainer: Phaser.GameObjects.Container;
+ private statNumbers: Phaser.GameObjects.Sprite[];
+
constructor(scene: Phaser.Scene, x: number, y: number, player: boolean) {
super(scene, x, y);
this.player = player;
@@ -138,18 +147,6 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.levelNumbersContainer = this.scene.add.container(9.5, (this.scene as BattleScene).uiTheme ? 0 : -0.5);
this.levelContainer.add(this.levelNumbersContainer);
- this.type1Icon = this.scene.add.sprite(player ? -139 : -15, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type1`);
- this.type1Icon.setOrigin(0, 0);
- this.add(this.type1Icon);
-
- this.type2Icon = this.scene.add.sprite(player ? -139 : -15, player ? -1 : -2.5, `pbinfo_${player ? 'player' : 'enemy'}_type2`);
- this.type2Icon.setOrigin(0, 0);
- this.add(this.type2Icon);
-
- this.type3Icon = this.scene.add.sprite(player ? -154 : 0, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type`);
- this.type3Icon.setOrigin(0, 0);
- this.add(this.type3Icon);
-
if (this.player) {
this.hpNumbersContainer = this.scene.add.container(-15, 10);
this.add(this.hpNumbersContainer);
@@ -171,6 +168,46 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.expBar = expBar;
this.expMaskRect = expMaskRect;
}
+
+ this.statsContainer = this.scene.add.container(0, 0);
+ this.statsContainer.setAlpha(0);
+ this.add(this.statsContainer);
+
+ this.statsBox = this.scene.add.sprite(0, 0, `${this.getTextureName()}_stats`);
+ this.statsBox.setOrigin(1, 0.5);
+ this.statsContainer.add(this.statsBox);
+
+ const statLabels: Phaser.GameObjects.Sprite[] = [];
+ this.statNumbers = [];
+
+ this.statValuesContainer = this.scene.add.container(0, 0);
+ this.statsContainer.add(this.statValuesContainer);
+
+ battleStatOrder.map((s, i) => {
+ const statX = i > 1 ? this.statNumbers[i - 2].x + this.statNumbers[i - 2].width + 4 : -this.statsBox.width + 8;
+ const statY = -this.statsBox.height / 2 + 4 + (i < battleStatOrder.length - 1 ? (i % 2 ? 10 : 0) : 5);
+ const statLabel = this.scene.add.sprite(statX, statY, 'pbinfo_stat', BattleStat[s]);
+ statLabel.setOrigin(0, 0);
+ statLabels.push(statLabel);
+ this.statValuesContainer.add(statLabel);
+
+ const statNumber = this.scene.add.sprite(statX + statLabel.width, statY, 'pbinfo_stat_numbers', '3');
+ statNumber.setOrigin(0, 0);
+ this.statNumbers.push(statNumber);
+ this.statValuesContainer.add(statNumber);
+ });
+
+ this.type1Icon = this.scene.add.sprite(player ? -139 : -15, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type1`);
+ this.type1Icon.setOrigin(0, 0);
+ this.add(this.type1Icon);
+
+ this.type2Icon = this.scene.add.sprite(player ? -139 : -15, player ? -1 : -2.5, `pbinfo_${player ? 'player' : 'enemy'}_type2`);
+ this.type2Icon.setOrigin(0, 0);
+ this.add(this.type2Icon);
+
+ this.type3Icon = this.scene.add.sprite(player ? -154 : 0, player ? -17 : -15.5, `pbinfo_${player ? 'player' : 'enemy'}_type`);
+ this.type3Icon.setOrigin(0, 0);
+ this.add(this.type3Icon);
}
initInfo(pokemon: Pokemon) {
@@ -258,7 +295,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.expMaskRect.x = (pokemon.levelExp / getLevelTotalExp(pokemon.level, pokemon.species.growthRate)) * 510;
this.lastExp = pokemon.exp;
this.lastLevelExp = pokemon.levelExp;
+
+ this.statValuesContainer.setPosition(8, 7)
}
+
+ const battleStats = battleStatOrder.map(() => 0);
+
+ this.lastBattleStats = battleStats.join('');
+ this.updateBattleStats(battleStats);
}
getTextureName(): string {
@@ -272,6 +316,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.mini = mini;
this.box.setTexture(this.getTextureName());
+ this.statsBox.setTexture(`${this.getTextureName()}_stats`);
if (this.player)
this.y -= 12 * (mini ? 1 : -1);
@@ -284,21 +329,34 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
el.y += -8 * (mini ? 1 : -1);
});
+ this.statValuesContainer.x += 2 * (mini ? 1 : -1);
+ this.statValuesContainer.y += -7 * (mini ? 1 : -1);
+
const toggledElements = [ this.hpNumbersContainer, this.expBar ];
toggledElements.forEach(el => el.setVisible(!mini));
}
+ toggleStats(visible: boolean): void {
+ this.scene.tweens.add({
+ targets: this.statsContainer,
+ duration: Utils.fixedInt(125),
+ ease: 'Sine.easeInOut',
+ alpha: visible ? 1 : 0
+ });
+ }
+
updateBossSegments(pokemon: EnemyPokemon): void {
const boss = !!pokemon.bossSegments;
if (boss !== this.boss) {
this.boss = boss;
- [ this.nameText, this.genderText, this.teraIcon, this.splicedIcon, this.shinyIcon, this.ownedIcon, this.statusIndicator, this.levelContainer ].map(e => e.x += 48 * (boss ? -1 : 1));
+ [ this.nameText, this.genderText, this.teraIcon, this.splicedIcon, this.shinyIcon, this.ownedIcon, this.statusIndicator, this.levelContainer, this.statValuesContainer ].map(e => e.x += 48 * (boss ? -1 : 1));
this.hpBar.x += 38 * (boss ? -1 : 1);
this.hpBar.y += 2 * (this.boss ? -1 : 1);
this.hpBar.setTexture(`overlay_hp${boss ? '_boss' : ''}`);
this.box.setTexture(this.getTextureName());
+ this.statsBox.setTexture(`${this.getTextureName()}_stats`);
}
this.bossSegments = boss ? pokemon.bossSegments : 0;
@@ -317,6 +375,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height - (uiTheme ? 0 : 1), pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040)
divider.setOrigin(0.5, 0);
this.add(divider);
+ this.moveBelow(divider as Phaser.GameObjects.GameObject, this.statsContainer);
divider.setPositionRelative(this.hpBar, dividerX, uiTheme ? 0 : 1);
this.hpBarSegmentDividers.push(divider);
@@ -439,6 +498,16 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.lastLevel = pokemon.level;
}
+ const battleStats = pokemon.summonData
+ ? pokemon.summonData.battleStats
+ : battleStatOrder.map(() => 0);
+ const battleStatsStr = battleStats.join('');
+
+ if (this.lastBattleStats !== battleStatsStr) {
+ this.updateBattleStats(battleStats);
+ this.lastBattleStats = battleStatsStr;
+ }
+
this.shinyIcon.setVisible(pokemon.isShiny());
resolve();
@@ -513,7 +582,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
});
}
- setLevel(level: integer) {
+ setLevel(level: integer): void {
const isCapped = level >= (this.scene as BattleScene).getMaxExpLevel();
this.levelNumbersContainer.removeAll(true);
const levelStr = level.toString();
@@ -522,7 +591,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
this.levelContainer.setX((this.player ? -41 : -50) - 8 * Math.max(levelStr.length - 3, 0));
}
- setHpNumbers(hp: integer, maxHp: integer) {
+ setHpNumbers(hp: integer, maxHp: integer): void {
if (!this.player || !this.scene)
return;
this.hpNumbersContainer.removeAll(true);
@@ -535,6 +604,12 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
for (let i = hpStr.length - 1; i >= 0; i--)
this.hpNumbersContainer.add(this.scene.add.image(offset++ * -8, 0, 'numbers', hpStr[i]));
}
+
+ updateBattleStats(battleStats: integer[]): void {
+ battleStatOrder.map((s, i) => {
+ this.statNumbers[i].setFrame(battleStats[s].toString());
+ });
+ }
}
export class PlayerBattleInfo extends BattleInfo {
diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts
index 7bf983c34..d04a98ea8 100644
--- a/src/ui/battle-message-ui-handler.ts
+++ b/src/ui/battle-message-ui-handler.ts
@@ -1,15 +1,17 @@
-import BattleScene, { Button } from "../battle-scene";
-import { addTextObject, TextStyle } from "./text";
+import BattleScene from "../battle-scene";
+import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text";
import { Mode } from "./ui";
import * as Utils from "../utils";
import MessageUiHandler from "./message-ui-handler";
import { getStatName, Stat } from "../data/pokemon-stat";
import { addWindow } from "./ui-theme";
+import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
+import {Button} from "../enums/buttons";
export default class BattleMessageUiHandler extends MessageUiHandler {
private levelUpStatsContainer: Phaser.GameObjects.Container;
private levelUpStatsIncrContent: Phaser.GameObjects.Text;
- private levelUpStatsValuesContent: Phaser.GameObjects.Text;
+ private levelUpStatsValuesContent: BBCodeText;
private nameBox: Phaser.GameObjects.NineSlice;
private nameText: Phaser.GameObjects.Text;
@@ -29,7 +31,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
this.textCallbackTimer = null;
const bg = this.scene.add.sprite(0, 0, 'bg', this.scene.windowType);
- bg.setOrigin(0, 1);
+ bg.setOrigin(0, 1);
ui.add(bg);
this.bg = bg;
@@ -95,18 +97,19 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
this.levelUpStatsContainer = levelUpStatsContainer;
- const levelUpStatsBg = addWindow(this.scene, (this.scene.game.canvas.width / 6), -100, 128, 100);
- levelUpStatsBg.setOrigin(1, 0);
- levelUpStatsContainer.add(levelUpStatsBg);
-
- const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 121, -94, '', TextStyle.WINDOW, { maxLines: 6 });
+ const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 73, -94, '', TextStyle.WINDOW, { maxLines: 6 });
let levelUpStatsLabelText = '';
const stats = Utils.getEnumValues(Stat);
for (let s of stats)
levelUpStatsLabelText += `${getStatName(s)}\n`;
-
levelUpStatsLabelsContent.text = levelUpStatsLabelText;
+ levelUpStatsLabelsContent.x -= levelUpStatsLabelsContent.displayWidth;
+
+ const levelUpStatsBg = addWindow(this.scene, (this.scene.game.canvas.width / 6), -100, 80 + levelUpStatsLabelsContent.displayWidth, 100);
+ levelUpStatsBg.setOrigin(1, 0);
+ levelUpStatsContainer.add(levelUpStatsBg);
+
levelUpStatsContainer.add(levelUpStatsLabelsContent);
const levelUpStatsIncrContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 50, -94, '+\n+\n+\n+\n+\n+', TextStyle.WINDOW, { maxLines: 6 });
@@ -114,7 +117,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
this.levelUpStatsIncrContent = levelUpStatsIncrContent;
- const levelUpStatsValuesContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 7, -94, '', TextStyle.WINDOW, { maxLines: 6 });
+ const levelUpStatsValuesContent = addBBCodeTextObject(this.scene, (this.scene.game.canvas.width / 6) - 7, -94, '', TextStyle.WINDOW, { maxLines: 6 , lineSpacing: 5});
levelUpStatsValuesContent.setOrigin(1, 0);
levelUpStatsValuesContent.setAlign('right');
levelUpStatsContainer.add(levelUpStatsValuesContent);
@@ -208,7 +211,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
} else
shownStats = stats;
for (let s of stats)
- levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s]) : '???'}\n`;
+ levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s], s, pokemonId) : '???'}\n`;
this.levelUpStatsValuesContent.text = levelUpStatsValuesText;
this.levelUpStatsIncrContent.setVisible(false);
this.levelUpStatsContainer.setVisible(true);
@@ -221,18 +224,30 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
});
}
- getIvDescriptor(value: integer): string {
+ getIvDescriptor(value: integer, typeIv: integer, pokemonId: integer): string {
+ const starterSpecies = this.scene.getPokemonById(pokemonId).species.getRootSpeciesId(true);
+ const starterIvs: number[] = this.scene.gameData.dexData[starterSpecies].ivs;
+ const uiTheme = (this.scene as BattleScene).uiTheme; // Assuming uiTheme is accessible
+
+ // Function to wrap text in color based on comparison
+ const coloredText = (text: string, isBetter: boolean) => {
+ const textStyle: TextStyle = isBetter ? TextStyle.SUMMARY_GREEN : TextStyle.SUMMARY;
+ const color = getTextColor(textStyle, false, uiTheme);
+ return `[color=${color}][shadow=${getTextColor(textStyle, true, uiTheme)}]${text}[/shadow][/color]`;
+ };
+
if (value > 30)
- return 'Best';
+ return coloredText('Best', value > starterIvs[typeIv]);
if (value === 30)
- return 'Fantastic';
+ return coloredText('Fantastic', value > starterIvs[typeIv]);
if (value > 20)
- return 'Very Good';
+ return coloredText('Very Good', value > starterIvs[typeIv]);
if (value > 10)
- return 'Pretty Good';
- if (value)
- return 'Decent';
- return 'No Good';
+ return coloredText('Pretty Good', value > starterIvs[typeIv]);
+ if (value > 0)
+ return coloredText('Decent', value > starterIvs[typeIv]);
+
+ return coloredText('No Good', value > starterIvs[typeIv]);
}
showNameText(name: string): void {
@@ -244,4 +259,4 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
hideNameText(): void {
this.nameBoxContainer.setVisible(false);
}
-}
\ No newline at end of file
+}
diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts
index 2219e0747..a4cc12950 100644
--- a/src/ui/candy-bar.ts
+++ b/src/ui/candy-bar.ts
@@ -69,6 +69,8 @@ export default class CandyBar extends Phaser.GameObjects.Container {
if (this.tween)
this.tween.stop();
+ (this.scene as BattleScene).playSound('shing');
+
this.tween = this.scene.tweens.add({
targets: this,
x: (this.scene.game.canvas.width / 6) - (this.bg.width - 5),
diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts
index b8223694b..a27053015 100644
--- a/src/ui/command-ui-handler.ts
+++ b/src/ui/command-ui-handler.ts
@@ -1,10 +1,11 @@
import { CommandPhase } from "../phases";
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { addTextObject, TextStyle } from "./text";
import PartyUiHandler, { PartyUiMode } from "./party-ui-handler";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import i18next from '../plugins/i18n';
+import {Button} from "../enums/buttons";
export enum Command {
FIGHT = 0,
diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts
index d9e7726d8..bac980db9 100644
--- a/src/ui/confirm-ui-handler.ts
+++ b/src/ui/confirm-ui-handler.ts
@@ -1,6 +1,8 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import AbstractOptionSelectUiHandler, { OptionSelectConfig } from "./abstact-option-select-ui-handler";
import { Mode } from "./ui";
+import i18next from "i18next";
+import {Button} from "../enums/buttons";
export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler {
private switchCheck: boolean;
@@ -19,14 +21,14 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler {
const config: OptionSelectConfig = {
options: [
{
- label: 'Yes',
+ label: i18next.t("menu:yes"),
handler: () => {
args[0]();
return true;
}
},
{
- label: 'No',
+ label: i18next.t("menu:no"),
handler: () => {
args[1]();
return true;
diff --git a/src/ui/daily-run-scoreboard.ts b/src/ui/daily-run-scoreboard.ts
index 90fef5ba5..8b258b3a7 100644
--- a/src/ui/daily-run-scoreboard.ts
+++ b/src/ui/daily-run-scoreboard.ts
@@ -2,6 +2,7 @@ import BattleScene from "../battle-scene";
import { TextStyle, addTextObject } from "./text";
import { WindowVariant, addWindow } from "./ui-theme";
import * as Utils from "../utils";
+import i18next from "i18next";
interface RankingEntry {
rank: integer,
@@ -10,6 +11,7 @@ interface RankingEntry {
wave: integer
}
+// Don't forget to update translations when adding a new category
enum ScoreboardCategory {
DAILY,
WEEKLY
@@ -39,7 +41,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
const titleWindow = addWindow(this.scene, 0, 0, 114, 18, false, false, null, null, WindowVariant.THIN);
this.add(titleWindow);
- this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, 'Daily Rankings', TextStyle.WINDOW, { fontSize: '64px' });
+ this.titleLabel = addTextObject(this.scene, titleWindow.displayWidth / 2, titleWindow.displayHeight / 2, i18next.t('menu:loading'), TextStyle.WINDOW, { fontSize: '64px' });
this.titleLabel.setOrigin(0.5, 0.5);
this.add(this.titleLabel);
@@ -141,7 +143,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
update(category: ScoreboardCategory = this.category, page: integer = this.page) {
this.rankingsContainer.removeAll(true);
- this.loadingLabel.setText('Loading…');
+ this.loadingLabel.setText(i18next.t('menu:loading'));
this.loadingLabel.setVisible(true);
if (category !== this.category)
@@ -155,7 +157,7 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
.then(jsonResponse => {
this.page = page;
this.category = category;
- this.titleLabel.setText(`${Utils.toReadableString(ScoreboardCategory[category])} Rankings`);
+ this.titleLabel.setText(`${i18next.t(`menu:${ScoreboardCategory[category].toLowerCase()}Rankings`)}`);
this.prevPageButton.setAlpha(page > 1 ? 1 : 0.5);
this.nextPageButton.setAlpha(page < this.pageCount ? 1 : 0.5);
this.pageNumberLabel.setText(page.toString());
@@ -163,9 +165,9 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container {
this.loadingLabel.setVisible(false);
this.updateRankings(jsonResponse);
} else
- this.loadingLabel.setText('No Rankings');
+ this.loadingLabel.setText(i18next.t('menu:noRankings'));
});
- });
+ }).catch(err => { console.error("Failed to load daily rankings:\n", err) });
}
}
diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts
index f0e32dbc2..315dfdbd3 100644
--- a/src/ui/egg-gacha-ui-handler.ts
+++ b/src/ui/egg-gacha-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Mode } from "./ui";
import { TextStyle, addTextObject, getEggTierTextTint } from "./text";
import MessageUiHandler from "./message-ui-handler";
@@ -9,6 +9,7 @@ import { getPokemonSpecies } from "../data/pokemon-species";
import { addWindow } from "./ui-theme";
import { Tutorial, handleTutorial } from "../tutorial";
import { EggTier } from "../data/enums/egg-type";
+import {Button} from "../enums/buttons";
const defaultText = 'Select a machine.';
diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts
index f841bafc2..ea8df429c 100644
--- a/src/ui/egg-hatch-scene-handler.ts
+++ b/src/ui/egg-hatch-scene-handler.ts
@@ -1,7 +1,8 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { EggHatchPhase } from "../egg-hatch-phase";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
+import {Button} from "../enums/buttons";
export default class EggHatchSceneHandler extends UiHandler {
public eggHatchContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts
index 7537b8dee..edeac7d71 100644
--- a/src/ui/egg-list-ui-handler.ts
+++ b/src/ui/egg-list-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Mode } from "./ui";
import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler";
import { TextStyle, addTextObject } from "./text";
@@ -6,6 +6,7 @@ import MessageUiHandler from "./message-ui-handler";
import { EGG_SEED, Egg, GachaType, getEggGachaTypeDescriptor, getEggHatchWavesMessage, getEggDescriptor } from "../data/egg";
import * as Utils from "../utils";
import { addWindow } from "./ui-theme";
+import {Button} from "../enums/buttons";
export default class EggListUiHandler extends MessageUiHandler {
private eggListContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts
index 7e0ef063e..3361e9038 100644
--- a/src/ui/evolution-scene-handler.ts
+++ b/src/ui/evolution-scene-handler.ts
@@ -1,7 +1,8 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import MessageUiHandler from "./message-ui-handler";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
+import {Button} from "../enums/buttons";
export default class EvolutionSceneHandler extends MessageUiHandler {
public evolutionContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts
index 1a7a8bef5..ee7e413db 100644
--- a/src/ui/fight-ui-handler.ts
+++ b/src/ui/fight-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { addTextObject, TextStyle } from "./text";
import { Type } from "../data/type";
import { Command } from "./command-ui-handler";
@@ -8,6 +8,7 @@ import * as Utils from "../utils";
import { CommandPhase } from "../phases";
import { MoveCategory } from "#app/data/move.js";
import i18next from '../plugins/i18n';
+import {Button} from "../enums/buttons";
export default class FightUiHandler extends UiHandler {
private movesContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts
index ec5f4147c..b2c2c1181 100644
--- a/src/ui/form-modal-ui-handler.ts
+++ b/src/ui/form-modal-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { ModalConfig, ModalUiHandler } from "./modal-ui-handler";
import { Mode } from "./ui";
import { TextStyle, addTextInputObject, addTextObject } from "./text";
@@ -6,6 +6,7 @@ import { WindowVariant, addWindow } from "./ui-theme";
import InputText from "phaser3-rex-plugins/plugins/inputtext";
import * as Utils from "../utils";
import i18next from '../plugins/i18n';
+import {Button} from "../enums/buttons";
export interface FormModalConfig extends ModalConfig {
errorMessage?: string;
diff --git a/src/ui/game-stats-ui-handler.ts b/src/ui/game-stats-ui-handler.ts
index 00e358ff8..c053d5700 100644
--- a/src/ui/game-stats-ui-handler.ts
+++ b/src/ui/game-stats-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { TextStyle, addTextObject, getTextColor } from "./text";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
@@ -6,6 +6,7 @@ import { addWindow } from "./ui-theme";
import * as Utils from "../utils";
import { DexAttr, GameData } from "../system/game-data";
import { speciesStarters } from "../data/pokemon-species";
+import {Button} from "../enums/buttons";
interface DisplayStat {
label?: string;
@@ -50,6 +51,7 @@ const displayStats: DisplayStats = {
return `${caughtCount} (${Math.floor((caughtCount / Object.keys(gameData.dexData).length) * 1000) / 10}%)`;
}
},
+ ribbonsOwned: 'Ribbons Owned',
classicSessionsPlayed: 'Classic Runs',
sessionsWon: 'Classic Wins',
dailyRunSessionsPlayed: 'Daily Run Attempts',
@@ -63,13 +65,16 @@ const displayStats: DisplayStats = {
pokemonDefeated: 'Pokémon Defeated',
pokemonCaught: 'Pokémon Caught',
pokemonHatched: 'Eggs Hatched',
- legendaryPokemonSeen: 'Legendary Encounters?',
- legendaryPokemonCaught: 'Legendaries Caught?',
- legendaryPokemonHatched: 'Legendaries Hatched?',
- mythicalPokemonSeen: 'Mythical Encounters?',
+ subLegendaryPokemonSeen: 'Sub-Legends Seen?',
+ subLegendaryPokemonCaught: 'Sub-Legends Caught?',
+ subLegendaryPokemonHatched: 'Sub-Legends Hatched?',
+ legendaryPokemonSeen: 'Legends Seen?',
+ legendaryPokemonCaught: 'Legends Caught?',
+ legendaryPokemonHatched: 'Legends Hatched?',
+ mythicalPokemonSeen: 'Mythicals Seen?',
mythicalPokemonCaught: 'Mythicals Caught?',
mythicalPokemonHatched: 'Mythicals Hatched?',
- shinyPokemonSeen: 'Shiny Encounters?',
+ shinyPokemonSeen: 'Shinies Seen?',
shinyPokemonCaught: 'Shinies Caught?',
shinyPokemonHatched: 'Shinies Hatched?',
pokemonFused: 'Pokémon Fused?',
diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts
index 03d93699e..bf0326676 100644
--- a/src/ui/menu-ui-handler.ts
+++ b/src/ui/menu-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button, bypassLogin } from "../battle-scene";
+import BattleScene, { bypassLogin } from "../battle-scene";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
import * as Utils from "../utils";
@@ -9,6 +9,7 @@ import { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui
import { Tutorial, handleTutorial } from "../tutorial";
import { updateUserInfo } from "../account";
import i18next from '../plugins/i18n';
+import {Button} from "../enums/buttons";
export enum MenuOptions {
GAME_SETTINGS,
diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts
index f193a3db5..77a3c14bd 100644
--- a/src/ui/modal-ui-handler.ts
+++ b/src/ui/modal-ui-handler.ts
@@ -1,8 +1,9 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import { WindowVariant, addWindow } from "./ui-theme";
+import {Button} from "../enums/buttons";
export interface ModalConfig {
buttonActions: Function[];
diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts
index e5252e02a..8af13d8f6 100644
--- a/src/ui/modifier-select-ui-handler.ts
+++ b/src/ui/modifier-select-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { getPlayerShopModifierTypeOptionsForWave, ModifierTypeOption } from "../modifier/modifier-type";
import { getPokeballAtlasKey, PokeballType } from "../data/pokeball";
import { addTextObject, getModifierTierTextTint, getTextColor, TextStyle } from "./text";
@@ -6,6 +6,7 @@ import AwaitableUiHandler from "./awaitable-ui-handler";
import { Mode } from "./ui";
import { LockModifierTiersModifier, PokemonHeldItemModifier } from "../modifier/modifier";
import { handleTutorial, Tutorial } from "../tutorial";
+import {Button} from "../enums/buttons";
export const SHOP_OPTIONS_ROW_LIMIT = 6;
diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts
index 30558b5bd..8b497655a 100644
--- a/src/ui/party-ui-handler.ts
+++ b/src/ui/party-ui-handler.ts
@@ -1,5 +1,5 @@
import { CommandPhase } from "../phases";
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { PlayerPokemon, PokemonMove } from "../field/pokemon";
import { addTextObject, TextStyle } from "./text";
import { Command } from "./command-ui-handler";
@@ -16,6 +16,7 @@ import { pokemonEvolutions } from "../data/pokemon-evolutions";
import { addWindow } from "./ui-theme";
import { SpeciesFormChangeItemTrigger } from "../data/pokemon-forms";
import { getVariantTint } from "#app/data/variant";
+import {Button} from "../enums/buttons";
const defaultMessage = 'Choose a Pokémon.';
@@ -90,6 +91,7 @@ export default class PartyUiHandler extends MessageUiHandler {
private selectFilter: PokemonSelectFilter | PokemonModifierTransferSelectFilter;
private moveSelectFilter: PokemonMoveSelectFilter;
private tmMoveId: Moves;
+ private showMovePp: boolean;
private iconAnimHandler: PokemonIconAnimHandler;
@@ -185,6 +187,7 @@ export default class PartyUiHandler extends MessageUiHandler {
? args[4] as PokemonMoveSelectFilter
: PartyUiHandler.FilterAllMoves;
this.tmMoveId = args.length > 5 && args[5] ? args[5] : Moves.NONE;
+ this.showMovePp = args.length > 6 && args[6];
this.partyContainer.setVisible(true);
this.partyBg.setTexture(`party_bg${this.scene.currentBattle.double ? '_double' : ''}`);
@@ -383,6 +386,7 @@ export default class PartyUiHandler extends MessageUiHandler {
}
const slotCount = this.partySlots.length;
+ const battlerCount = this.scene.currentBattle.getBattlerCount();
switch (button) {
case Button.UP:
@@ -392,14 +396,20 @@ export default class PartyUiHandler extends MessageUiHandler {
success = this.setCursor(this.cursor < 6 ? this.cursor < slotCount - 1 ? this.cursor + 1 : 6 : 0);
break;
case Button.LEFT:
- if (this.cursor >= this.scene.currentBattle.getBattlerCount() && this.cursor < 6)
+ if (this.cursor >= battlerCount && this.cursor <= 6)
success = this.setCursor(0);
break;
case Button.RIGHT:
- const battlerCount = this.scene.currentBattle.getBattlerCount();
- if (slotCount > battlerCount && this.cursor < battlerCount)
- success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount);
+ if (slotCount === battlerCount){
+ success = this.setCursor(6);
break;
+ } else if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1){
+ success = this.setCursor(2);
+ break;
+ } else if (slotCount > battlerCount && this.cursor < battlerCount){
+ success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount);
+ break;
+ }
}
}
@@ -656,7 +666,14 @@ export default class PartyUiHandler extends MessageUiHandler {
case PartyOption.MOVE_2:
case PartyOption.MOVE_3:
case PartyOption.MOVE_4:
- optionName = pokemon.moveset[option - PartyOption.MOVE_1].getName();
+ const move = pokemon.moveset[option - PartyOption.MOVE_1];
+ if(this.showMovePp) {
+ const maxPP = move.getMovePp();
+ const currPP = maxPP - move.ppUsed;
+ optionName = `${move.getName()} ${currPP}/${maxPP}`;
+ } else {
+ optionName = move.getName();
+ }
break;
default:
if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) {
diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts
index 4d8ecfe0b..572a28f10 100644
--- a/src/ui/pokemon-info-container.ts
+++ b/src/ui/pokemon-info-container.ts
@@ -161,8 +161,9 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container {
if (isFusion)
this.pokemonFusionShinyIcon.setTint(getVariantTint(pokemon.fusionVariant));
- const originalIvs: integer[] = this.scene.gameData.dexData[pokemon.species.speciesId].caughtAttr
- ? this.scene.gameData.dexData[pokemon.species.speciesId].ivs
+ const starterSpeciesId = pokemon.species.getRootSpeciesId(true);
+ const originalIvs: integer[] = this.scene.gameData.dexData[starterSpeciesId].caughtAttr
+ ? this.scene.gameData.dexData[starterSpeciesId].ivs
: null;
this.statsContainer.updateIvs(pokemon.ivs, originalIvs);
diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts
index 181b0643c..a30e21c8f 100644
--- a/src/ui/save-slot-select-ui-handler.ts
+++ b/src/ui/save-slot-select-ui-handler.ts
@@ -1,4 +1,4 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { gameModes } from "../game-mode";
import { SessionSaveData } from "../system/game-data";
import { TextStyle, addTextObject } from "./text";
@@ -8,6 +8,8 @@ import * as Utils from "../utils";
import PokemonData from "../system/pokemon-data";
import { PokemonHeldItemModifier } from "../modifier/modifier";
import MessageUiHandler from "./message-ui-handler";
+import i18next from "i18next";
+import {Button} from "../enums/buttons";
const sessionSlotCount = 5;
@@ -258,7 +260,7 @@ class SessionSlot extends Phaser.GameObjects.Container {
async setupWithData(data: SessionSaveData) {
this.remove(this.loadingLabel, true);
- const gameModeLabel = addTextObject(this.scene, 8, 5, `${gameModes[data.gameMode].getName()} - Wave ${data.waveIndex}`, TextStyle.WINDOW);
+ const gameModeLabel = addTextObject(this.scene, 8, 5, `${gameModes[data.gameMode]?.getName() || 'Unknown'} - Wave ${data.waveIndex}`, TextStyle.WINDOW);
this.add(gameModeLabel);
const timestampLabel = addTextObject(this.scene, 8, 19, new Date(data.timestamp).toLocaleString(), TextStyle.WINDOW);
@@ -314,7 +316,7 @@ class SessionSlot extends Phaser.GameObjects.Container {
this.scene.gameData.getSession(this.slotId).then(async sessionData => {
if (!sessionData) {
this.hasData = false;
- this.loadingLabel.setText('Empty');
+ this.loadingLabel.setText(i18next.t("menu:empty"));
resolve(false);
return;
}
diff --git a/src/ui/settings-ui-handler.ts b/src/ui/settings-ui-handler.ts
index 8f43b377d..3ed83268e 100644
--- a/src/ui/settings-ui-handler.ts
+++ b/src/ui/settings-ui-handler.ts
@@ -1,10 +1,11 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Setting, reloadSettings, settingDefaults, settingOptions } from "../system/settings";
import { hasTouchscreen, isMobile } from "../touch-controls";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import { addWindow } from "./ui-theme";
+import {Button} from "../enums/buttons";
export default class SettingsUiHandler extends UiHandler {
private settingsContainer: Phaser.GameObjects.Container;
diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts
index 2fd67ac04..0de2ba9ac 100644
--- a/src/ui/starter-select-ui-handler.ts
+++ b/src/ui/starter-select-ui-handler.ts
@@ -1,5 +1,5 @@
-import BattleScene, { Button, starterColors } from "../battle-scene";
-import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters, starterPassiveAbilities } from "../data/pokemon-species";
+import BattleScene, { starterColors } from "../battle-scene";
+import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters, starterPassiveAbilities, getStarterValueFriendshipCap } from "../data/pokemon-species";
import { Species } from "../data/enums/species";
import { TextStyle, addBBCodeTextObject, addTextObject } from "./text";
import { Mode } from "./ui";
@@ -27,6 +27,8 @@ import { argbFromRgba } from "@material/material-color-utilities";
import { OptionSelectItem } from "./abstact-option-select-ui-handler";
import { pokemonPrevolutions } from "#app/data/pokemon-evolutions";
import { Variant, getVariantTint } from "#app/data/variant";
+import i18next from "i18next";
+import {Button} from "../enums/buttons";
export type StarterSelectCallback = (starters: Starter[]) => void;
@@ -117,6 +119,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
private pokemonEggMoveBgs: Phaser.GameObjects.NineSlice[];
private pokemonEggMoveLabels: Phaser.GameObjects.Text[];
private pokemonCandyIcon: Phaser.GameObjects.Sprite;
+ private pokemonCandyDarknessOverlay: Phaser.GameObjects.Sprite;
private pokemonCandyOverlayIcon: Phaser.GameObjects.Sprite;
private pokemonCandyCountText: Phaser.GameObjects.Text;
private pokemonCaughtHatchedContainer: Phaser.GameObjects.Container;
@@ -127,6 +130,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
private starterSelectMessageBox: Phaser.GameObjects.NineSlice;
private starterSelectMessageBoxContainer: Phaser.GameObjects.Container;
private statsContainer: StatsContainer;
+ private pokemonFormText: Phaser.GameObjects.Text;
private genMode: boolean;
private statsMode: boolean;
@@ -170,6 +174,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
private starterValueLabels: Phaser.GameObjects.Text[];
private shinyIcons: Phaser.GameObjects.Image[][];
private hiddenAbilityIcons: Phaser.GameObjects.Image[];
+ private classicWinIcons: Phaser.GameObjects.Image[];
private iconAnimHandler: PokemonIconAnimHandler;
@@ -203,7 +208,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));
@@ -223,7 +228,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonNameText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonNameText);
- this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, 'Growth Rate:', TextStyle.SUMMARY_ALT, { fontSize: '36px' });
+ this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, i18next.t("starterSelectUiHandler:growthRate"), TextStyle.SUMMARY_ALT, { fontSize: '36px' });
this.pokemonGrowthRateLabelText.setOrigin(0, 0);
this.pokemonGrowthRateLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonGrowthRateLabelText);
@@ -240,7 +245,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonUncaughtText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonUncaughtText);
- this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127, 'Ability:', TextStyle.SUMMARY_ALT, { fontSize: '56px' });
+ this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: '56px' });
this.pokemonAbilityLabelText.setOrigin(0, 0);
this.pokemonAbilityLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonAbilityLabelText);
@@ -249,7 +254,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonAbilityText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonAbilityText);
- this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136, 'Passive:', TextStyle.SUMMARY_ALT, { fontSize: '56px' });
+ this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: '56px' });
this.pokemonPassiveLabelText.setOrigin(0, 0);
this.pokemonPassiveLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonPassiveLabelText);
@@ -258,7 +263,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonPassiveText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonPassiveText);
- this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145, 'Nature:', TextStyle.SUMMARY_ALT, { fontSize: '56px' });
+ this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: '56px' });
this.pokemonNatureLabelText.setOrigin(0, 0);
this.pokemonNatureLabelText.setVisible(false);
this.starterSelectContainer.add(this.pokemonNatureLabelText);
@@ -318,12 +323,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.genCursorObj.setVisible(false);
this.genCursorObj.setOrigin(0, 0);
this.starterSelectContainer.add(this.genCursorObj);
-
+
this.valueLimitLabel = addTextObject(this.scene, 124, 150, '0/10', TextStyle.TOOLTIP_CONTENT);
this.valueLimitLabel.setOrigin(0.5, 0);
this.starterSelectContainer.add(this.valueLimitLabel);
- const startLabel = addTextObject(this.scene, 124, 162, 'Start', TextStyle.TOOLTIP_CONTENT);
+ const startLabel = addTextObject(this.scene, 124, 162, i18next.t("starterSelectUiHandler:start"), TextStyle.TOOLTIP_CONTENT);
startLabel.setOrigin(0.5, 0);
this.starterSelectContainer.add(startLabel);
@@ -333,7 +338,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([]);
@@ -406,6 +411,17 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
return ret;
});
+ this.classicWinIcons = new Array(81).fill(null).map((_, i) => {
+ const x = (i % 9) * 18;
+ const y = Math.floor(i / 9) * 18;
+ const ret = this.scene.add.image(x + 152, y + 16, 'champion_ribbon');
+ ret.setOrigin(0, 0);
+ ret.setScale(0.5);
+ ret.setVisible(false);
+ this.starterSelectContainer.add(ret);
+ return ret;
+ });
+
this.pokemonSprite = this.scene.add.sprite(53, 63, `pkmn__sub`);
this.pokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true });
this.starterSelectContainer.add(this.pokemonSprite);
@@ -428,16 +444,28 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonLuckText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonLuckText);
- this.pokemonCandyIcon = this.scene.add.sprite(1, 12, 'items', 'candy');
+ this.pokemonCandyIcon = this.scene.add.sprite(4.5, 18, 'candy');
this.pokemonCandyIcon.setScale(0.5);
this.pokemonCandyIcon.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonCandyIcon);
- this.pokemonCandyOverlayIcon = this.scene.add.sprite(1, 12, 'items', 'candy_overlay');
+ this.pokemonFormText = addTextObject(this.scene, 6, 42, 'Form', TextStyle.WINDOW_ALT, { fontSize: '42px' });
+ this.pokemonFormText.setOrigin(0, 0);
+ this.starterSelectContainer.add(this.pokemonFormText);
+
+ this.pokemonCandyOverlayIcon = this.scene.add.sprite(4.5, 18, 'candy_overlay');
this.pokemonCandyOverlayIcon.setScale(0.5);
this.pokemonCandyOverlayIcon.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonCandyOverlayIcon);
+ this.pokemonCandyDarknessOverlay = this.scene.add.sprite(4.5, 18, 'candy');
+ this.pokemonCandyDarknessOverlay.setScale(0.5);
+ this.pokemonCandyDarknessOverlay.setOrigin(0, 0);
+ this.pokemonCandyDarknessOverlay.setTint(0x000000);
+ this.pokemonCandyDarknessOverlay.setAlpha(0.5);
+ this.pokemonCandyDarknessOverlay.setInteractive(new Phaser.Geom.Rectangle(0, 0, 16, 16), Phaser.Geom.Rectangle.Contains);
+ this.starterSelectContainer.add(this.pokemonCandyDarknessOverlay);
+
this.pokemonCandyCountText = addTextObject(this.scene, 14, 18, 'x0', TextStyle.WINDOW_ALT, { fontSize: '56px' });
this.pokemonCandyCountText.setOrigin(0, 0);
this.starterSelectContainer.add(this.pokemonCandyCountText);
@@ -496,9 +524,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonEggMovesContainer = this.scene.add.container(102, 85);
this.pokemonEggMovesContainer.setScale(0.375);
- const eggMovesLabel = addTextObject(this.scene, -46, 0, 'Egg Moves', TextStyle.WINDOW_ALT);
+ const eggMovesLabel = addTextObject(this.scene, -46, 0, i18next.t("starterSelectUiHandler:eggMoves"), TextStyle.WINDOW_ALT);
eggMovesLabel.setOrigin(0.5, 0);
-
+
this.pokemonEggMovesContainer.add(eggMovesLabel);
for (let m = 0; m < 4; m++) {
@@ -552,7 +580,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
species = getPokemonSpecies(randomSpeciesId);
pokerusCursor = this.genSpecies[species.generation - 1].indexOf(species);
};
-
+
let dupe = false;
do {
@@ -718,7 +746,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
else if (this.starterCursors.length < 6) {
const options = [
{
- label: 'Add to Party',
+ label: i18next.t("starterSelectUiHandler:addToParty"),
handler: () => {
ui.setMode(Mode.STARTER_SELECT);
let isDupe = false;
@@ -755,7 +783,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
overrideSound: true
},
{
- label: 'Toggle IVs',
+ label: i18next.t("starterSelectUiHandler:toggleIVs"),
handler: () => {
this.toggleStatsMode();
ui.setMode(Mode.STARTER_SELECT);
@@ -766,14 +794,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (this.speciesStarterMoves.length > 1) {
const showSwapOptions = (moveset: StarterMoveset) => {
ui.setMode(Mode.STARTER_SELECT).then(() => {
- ui.showText('Select a move to swap out.', null, () => {
+ ui.showText(i18next.t("starterSelectUiHandler:selectMoveSwapOut"), null, () => {
ui.setModeWithoutClear(Mode.OPTION_SELECT, {
options: moveset.map((m: Moves, i: number) => {
const option: OptionSelectItem = {
label: allMoves[m].name,
handler: () => {
ui.setMode(Mode.STARTER_SELECT).then(() => {
- ui.showText(`Select a move to swap with ${allMoves[m].name}.`, null, () => {
+ ui.showText(`${i18next.t("starterSelectUiHandler:selectMoveSwapWith")} ${allMoves[m].name}.`, null, () => {
ui.setModeWithoutClear(Mode.OPTION_SELECT, {
options: this.speciesStarterMoves.filter((sm: Moves) => sm !== m).map(sm => {
// make an option for each available starter move
@@ -787,7 +815,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
};
return option;
}).concat({
- label: 'Cancel',
+ label: i18next.t("menu:cancel"),
handler: () => {
showSwapOptions(this.starterMoveset);
return true;
@@ -803,7 +831,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
};
return option;
}).concat({
- label: 'Cancel',
+ label: i18next.t("menu:cancel"),
handler: () => {
this.clearText();
ui.setMode(Mode.STARTER_SELECT);
@@ -817,7 +845,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
});
};
options.push({
- label: 'Manage Moves',
+ label: i18next.t("starterSelectUiHandler:manageMoves"),
handler: () => {
showSwapOptions(this.starterMoveset);
return true;
@@ -830,7 +858,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (passiveAttr & PassiveAttr.UNLOCKED) {
if (!(passiveAttr & PassiveAttr.ENABLED)) {
options.push({
- label: 'Enable Passive',
+ label: i18next.t("starterSelectUiHandler:enablePassive"),
handler: () => {
starterData.passiveAttr |= PassiveAttr.ENABLED;
ui.setMode(Mode.STARTER_SELECT);
@@ -840,7 +868,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
});
} else {
options.push({
- label: 'Disable Passive',
+ label: i18next.t("starterSelectUiHandler:disablePassive"),
handler: () => {
starterData.passiveAttr ^= PassiveAttr.ENABLED;
ui.setMode(Mode.STARTER_SELECT);
@@ -855,7 +883,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (!(passiveAttr & PassiveAttr.UNLOCKED)) {
const passiveCost = getPassiveCandyCount(speciesStarters[this.lastSpecies.speciesId]);
options.push({
- label: `x${passiveCost} Unlock Passive (${allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name})`,
+ label: `x${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")} (${allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name})`,
handler: () => {
if (candyCount >= passiveCost) {
starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED;
@@ -879,7 +907,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (valueReduction < 2) {
const reductionCost = getValueReductionCandyCounts(speciesStarters[this.lastSpecies.speciesId])[valueReduction];
options.push({
- label: `x${reductionCost} Reduce Cost`,
+ label: `x${reductionCost} ${i18next.t("starterSelectUiHandler:reduceCost")}`,
handler: () => {
if (candyCount >= reductionCost) {
starterData.valueReduction++;
@@ -902,7 +930,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
});
}
options.push({
- label: 'Cancel',
+ label: i18next.t("menu:cancel"),
handler: () => {
ui.setMode(Mode.STARTER_SELECT);
return true;
@@ -915,7 +943,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
};
if (!pokemonPrevolutions.hasOwnProperty(this.lastSpecies.speciesId)) {
options.push({
- label: 'Use Candies',
+ label: i18next.t("starterSelectUiHandler:useCandies"),
handler: () => {
ui.setMode(Mode.STARTER_SELECT).then(() => showUseCandies());
return true;
@@ -923,7 +951,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
});
}
options.push({
- label: 'Cancel',
+ label: i18next.t("menu:cancel"),
handler: () => {
ui.setMode(Mode.STARTER_SELECT);
return true;
@@ -1049,7 +1077,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
}
}
}
-
+
if (success)
ui.playSelect();
else if (error)
@@ -1086,23 +1114,23 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.scene.gameData.starterData[speciesId].moveset = this.starterMoveset.slice(0) as StarterMoveset;
this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, undefined, undefined, false);
}
-
+
updateInstructions(): void {
let instructionLines = [ ];
let cycleInstructionLines = [];
if (this.speciesStarterDexEntry?.caughtAttr) {
if (this.canCycleShiny)
- cycleInstructionLines.push('R: Cycle Shiny');
+ cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleShiny"));
if (this.canCycleForm)
- cycleInstructionLines.push('F: Cycle Form');
+ cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleForm"));
if (this.canCycleGender)
- cycleInstructionLines.push('G: Cycle Gender');
+ cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleGender"));
if (this.canCycleAbility)
- cycleInstructionLines.push('E: Cycle Ability');
+ cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleAbility"));
if (this.canCycleNature)
- cycleInstructionLines.push('N: Cycle Nature');
+ cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleNature"));
if (this.canCycleVariant)
- cycleInstructionLines.push('V: Cycle Variant');
+ cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleVariant"));
}
if (cycleInstructionLines.length > 2) {
@@ -1176,6 +1204,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.shinyIcons[s][v].setTint(getVariantTint(speciesVariants[v] === DexAttr.DEFAULT_VARIANT ? 0 : speciesVariants[v] === DexAttr.VARIANT_2 ? 1 : 2));
}
this.hiddenAbilityIcons[s].setVisible(slotVisible && !!this.scene.gameData.dexData[speciesId].caughtAttr && !!(this.scene.gameData.starterData[speciesId].abilityAttr & 4));
+ this.classicWinIcons[s].setVisible(slotVisible && this.scene.gameData.starterData[speciesId].classicWinCount > 0);
}
} else {
changed = super.setCursor(cursor);
@@ -1212,7 +1241,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;
@@ -1278,15 +1307,32 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonCaughtHatchedContainer.setVisible(true);
if (pokemonPrevolutions.hasOwnProperty(species.speciesId)) {
this.pokemonCaughtHatchedContainer.setY(16);
- [ this.pokemonCandyIcon, this.pokemonCandyOverlayIcon, this.pokemonCandyCountText ].map(c => c.setVisible(false));
+ [ this.pokemonCandyIcon, this.pokemonCandyOverlayIcon, this.pokemonCandyDarknessOverlay, this.pokemonCandyCountText ].map(c => c.setVisible(false));
} else {
this.pokemonCaughtHatchedContainer.setY(25);
this.pokemonCandyIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[0])));
this.pokemonCandyIcon.setVisible(true);
this.pokemonCandyOverlayIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1])));
this.pokemonCandyOverlayIcon.setVisible(true);
+ this.pokemonCandyDarknessOverlay.setVisible(true);
this.pokemonCandyCountText.setText(`x${this.scene.gameData.starterData[species.speciesId].candyCount}`);
this.pokemonCandyCountText.setVisible(true);
+ this.pokemonFormText.setVisible(true);
+
+ var currentFriendship = this.scene.gameData.starterData[this.lastSpecies.speciesId].friendship;
+ if (!currentFriendship || currentFriendship === undefined)
+ currentFriendship = 0;
+
+ const friendshipCap = getStarterValueFriendshipCap(speciesStarters[this.lastSpecies.speciesId]);
+ const candyCropY = 16 - (16 * (currentFriendship / friendshipCap));
+
+ if (this.pokemonCandyDarknessOverlay.visible) {
+ this.pokemonCandyDarknessOverlay.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(null, `${currentFriendship}/${friendshipCap}`, true));
+ this.pokemonCandyDarknessOverlay.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip());
+ }
+
+ this.pokemonCandyDarknessOverlay.setCrop(0,0,16, candyCropY);
+ this.pokemonCandyDarknessOverlay.setCrop(0,0,16, candyCropY);
}
this.iconAnimHandler.addOrUpdate(this.starterSelectGenIconContainers[species.generation - 1].getAt(this.genSpecies[species.generation - 1].indexOf(species)) as Phaser.GameObjects.Sprite, PokemonIconAnimMode.PASSIVE);
@@ -1311,7 +1357,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 +1365,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('');
@@ -1335,13 +1381,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonCaughtHatchedContainer.setVisible(false);
this.pokemonCandyIcon.setVisible(false);
this.pokemonCandyOverlayIcon.setVisible(false);
+ this.pokemonCandyDarknessOverlay.setVisible(false);
this.pokemonCandyCountText.setVisible(false);
+ this.pokemonFormText.setVisible(false);
const defaultDexAttr = this.scene.gameData.getSpeciesDefaultDexAttr(species, true, true);
const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species);
const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species);
const props = this.scene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr);
-
+
this.setSpeciesDetails(species, props.shiny, props.formIndex, props.female, props.variant, defaultAbilityIndex, defaultNature, true);
this.pokemonSprite.setTint(0x808080);
}
@@ -1361,7 +1409,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.pokemonCaughtHatchedContainer.setVisible(false);
this.pokemonCandyIcon.setVisible(false);
this.pokemonCandyOverlayIcon.setVisible(false);
+ this.pokemonCandyDarknessOverlay.setVisible(false);
this.pokemonCandyCountText.setVisible(false);
+ this.pokemonFormText.setVisible(false);
this.setSpeciesDetails(species, false, 0, false, 0, 0, 0);
this.pokemonSprite.clearTint();
@@ -1507,7 +1557,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)
@@ -1521,6 +1571,13 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.starterMoveset.push(...availableStarterMoves.filter(sm => this.starterMoveset.indexOf(sm) === -1).slice(0, 4 - this.starterMoveset.length));
const speciesForm = getPokemonSpeciesForm(species.speciesId, formIndex);
+
+ const formText = species?.forms[formIndex]?.formKey.split('-');
+ for (let i = 0; i < formText?.length; i++)
+ formText[i] = formText[i].charAt(0).toUpperCase() + formText[i].substring(1);
+
+ this.pokemonFormText.setText(formText?.join(' '));
+
this.setTypeIcons(speciesForm.type1, speciesForm.type2);
} else {
this.pokemonAbilityText.setText('');
@@ -1653,7 +1710,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.clearText();
};
- ui.showText('Begin with these Pokémon?', null, () => {
+ ui.showText(i18next.t("starterSelectUiHandler:confirmStartTeam"), null, () => {
ui.setModeWithoutClear(Mode.CONFIRM, () => {
const startRun = (gameMode: GameModes) => {
this.scene.gameMode = gameModes[gameMode];
@@ -1696,7 +1753,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
this.statsContainer.updateIvs(null);
}
}
-
+
showStats(): void {
if (!this.speciesStarterDexEntry)
return;
diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts
index 014465805..b8d9c59a4 100644
--- a/src/ui/stats-container.ts
+++ b/src/ui/stats-container.ts
@@ -4,7 +4,8 @@ import { Stat, getStatName } from "../data/pokemon-stat";
import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text";
const ivChartSize = 24;
-const ivChartStatCoordMultipliers = [ [ 0, 1 ], [ 0.825, 0.5 ], [ 0.825, -0.5 ], [ 0, -1 ], [ -0.825, -0.5 ], [ -0.825, 0.5 ] ];
+const ivChartStatCoordMultipliers = [ [ 0, -1 ], [ 0.825, -0.5 ], [ 0.825, 0.5 ], [ -0.825, -0.5 ], [ -0.825, 0.5 ], [ 0, 1 ] ];
+const ivChartStatIndexes = [0,1,2,5,4,3] // swap special attack and speed
const defaultIvChartData = new Array(12).fill(null).map(() => 0);
export class StatsContainer extends Phaser.GameObjects.Container {
@@ -22,7 +23,7 @@ export class StatsContainer extends Phaser.GameObjects.Container {
}
setup() {
- const ivChartBgData = new Array(6).fill(null).map((_, i: integer) => [ ivChartSize * ivChartStatCoordMultipliers[i][0], ivChartSize * ivChartStatCoordMultipliers[i][1] ] ).flat();
+ const ivChartBgData = new Array(6).fill(null).map((_, i: integer) => [ ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat();
const ivChartBg = this.scene.add.polygon(48, 44, ivChartBgData, 0xd8e0f0, 0.625);
ivChartBg.setOrigin(0, 0);
@@ -62,7 +63,7 @@ export class StatsContainer extends Phaser.GameObjects.Container {
updateIvs(ivs: integer[], originalIvs?: integer[]): void {
if (ivs) {
- const ivChartData = new Array(6).fill(null).map((_, i) => [ (ivs[i] / 31) * ivChartSize * ivChartStatCoordMultipliers[i][0], (ivs[i] / 31) * ivChartSize * ivChartStatCoordMultipliers[i][1] ] ).flat();
+ const ivChartData = new Array(6).fill(null).map((_, i) => [ (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][0], (ivs[ivChartStatIndexes[i]] / 31) * ivChartSize * ivChartStatCoordMultipliers[ivChartStatIndexes[i]][1] ] ).flat();
const lastIvChartData = this.statsIvsCache || defaultIvChartData;
this.statsIvsCache = ivChartData.slice(0);
diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts
index 44003a7c8..ac04d41be 100644
--- a/src/ui/summary-ui-handler.ts
+++ b/src/ui/summary-ui-handler.ts
@@ -1,8 +1,10 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene, { starterColors } from "../battle-scene";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import * as Utils from "../utils";
import { PlayerPokemon } from "../field/pokemon";
+import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species';
+import { argbFromRgba } from "@material/material-color-utilities";
import { Type, getTypeRgb } from "../data/type";
import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag, getTextColor } from "./text";
import Move, { MoveCategory } from "../data/move";
@@ -17,6 +19,7 @@ import { Nature, getNatureStatMultiplier } from "../data/nature";
import { loggedInUser } from "../account";
import { PlayerGender } from "../system/game-data";
import { Variant, getVariantTint } from "#app/data/variant";
+import {Button} from "../enums/buttons";
enum Page {
PROFILE,
@@ -44,6 +47,9 @@ export default class SummaryUiHandler extends UiHandler {
private genderText: Phaser.GameObjects.Text;
private shinyIcon: Phaser.GameObjects.Image;
private fusionShinyIcon: Phaser.GameObjects.Image;
+ private candyShadow: Phaser.GameObjects.Sprite;
+ private candyIcon: Phaser.GameObjects.Sprite;
+ private candyOverlay: Phaser.GameObjects.Sprite;
private statusContainer: Phaser.GameObjects.Container;
private status: Phaser.GameObjects.Image;
private summaryPageContainer: Phaser.GameObjects.Container;
@@ -136,6 +142,20 @@ export default class SummaryUiHandler extends UiHandler {
this.pokeball.setOrigin(0, 1);
this.summaryContainer.add(this.pokeball);
+ this.candyShadow = this.scene.add.sprite(13, -140, 'candy');
+ this.candyShadow.setTint(0x141414)
+ this.candyShadow.setScale(0.8);
+ this.candyShadow.setInteractive(new Phaser.Geom.Rectangle(0, 0, 16, 16), Phaser.Geom.Rectangle.Contains);
+ this.summaryContainer.add(this.candyShadow);
+
+ this.candyIcon = this.scene.add.sprite(13, -140, 'candy');
+ this.candyIcon.setScale(0.8);
+ this.summaryContainer.add(this.candyIcon);
+
+ this.candyOverlay = this.scene.add.sprite(13, -140, 'candy_overlay');
+ this.candyOverlay.setScale(0.8);
+ this.summaryContainer.add(this.candyOverlay);
+
this.levelText = addTextObject(this.scene, 36, -17, '', TextStyle.SUMMARY_ALT);
this.levelText.setOrigin(0, 1);
this.summaryContainer.add(this.levelText);
@@ -222,6 +242,10 @@ export default class SummaryUiHandler extends UiHandler {
this.shinyOverlay.setVisible(this.pokemon.isShiny());
+ const colorScheme = starterColors[this.pokemon.species.getRootSpeciesId()];
+ this.candyIcon.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[0])));
+ this.candyOverlay.setTint(argbFromRgba(Utils.rgbHexToRgba(colorScheme[1])));
+
this.numberText.setText(Utils.padInt(this.pokemon.species.speciesId, 4));
this.numberText.setColor(this.getTextColor(!this.pokemon.isShiny() ? TextStyle.SUMMARY : TextStyle.SUMMARY_GOLD));
this.numberText.setShadowColor(this.getTextColor(!this.pokemon.isShiny() ? TextStyle.SUMMARY : TextStyle.SUMMARY_GOLD, true));
@@ -251,6 +275,21 @@ export default class SummaryUiHandler extends UiHandler {
this.splicedIcon.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip());
}
+ var currentFriendship = this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].friendship;
+ if (!currentFriendship || currentFriendship === undefined)
+ currentFriendship = 0;
+
+ const friendshipCap = getStarterValueFriendshipCap(speciesStarters[this.pokemon.species.getRootSpeciesId()]);
+ const candyCropY = 16 - (16 * (currentFriendship / friendshipCap));
+
+ if (this.candyShadow.visible) {
+ this.candyShadow.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(null, `${currentFriendship}/${friendshipCap}`, true));
+ this.candyShadow.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip());
+ }
+
+ this.candyIcon.setCrop(0,candyCropY,16, 16);
+ this.candyOverlay.setCrop(0,candyCropY,16, 16);
+
const doubleShiny = isFusion && this.pokemon.shiny && this.pokemon.fusionShiny;
const baseVariant = !doubleShiny ? this.pokemon.getVariant() : this.pokemon.variant;
@@ -364,9 +403,16 @@ export default class SummaryUiHandler extends UiHandler {
case Button.LEFT:
this.moveSelect = false;
this.setCursor(Page.STATS);
- this.hideMoveEffect();
- success = true;
- break;
+ if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE){
+ this.hideMoveEffect();
+ this.destroyBlinkCursor();
+ success = true;
+ break;
+ } else {
+ this.hideMoveSelect();
+ success = true;
+ break;
+ }
}
}
} else {
@@ -426,16 +472,15 @@ export default class SummaryUiHandler extends UiHandler {
}
setCursor(cursor: integer, overrideChanged: boolean = false): boolean {
- let changed: boolean;
+ let changed: boolean = overrideChanged || this.moveCursor !== cursor;
if (this.moveSelect) {
- changed = overrideChanged || this.moveCursor !== cursor;
- if (changed) {
this.moveCursor = cursor;
const selectedMove = this.getSelectedMove();
if (selectedMove) {
+ this.moveDescriptionText.setY(84);
this.movePowerText.setText(selectedMove.power >= 0 ? selectedMove.power.toString() : '---');
this.moveAccuracyText.setText(selectedMove.accuracy >= 0 ? selectedMove.accuracy.toString() : '---');
this.moveCategoryIcon.setFrame(MoveCategory[selectedMove.category].toLowerCase());
@@ -452,7 +497,6 @@ export default class SummaryUiHandler extends UiHandler {
}
if (moveDescriptionLineCount > 3) {
- this.moveDescriptionText.setY(84);
this.descriptionScrollTween = this.scene.tweens.add({
targets: this.moveDescriptionText,
delay: Utils.fixedInt(2000),
@@ -462,7 +506,6 @@ export default class SummaryUiHandler extends UiHandler {
y: `-=${14.83 * (moveDescriptionLineCount - 3)}`
});
}
- }
if (!this.moveCursorObj) {
this.moveCursorObj = this.scene.add.sprite(-2, 0, 'summary_moves_cursor', 'highlight');
@@ -527,6 +570,11 @@ export default class SummaryUiHandler extends UiHandler {
this.setCursor(0, true);
this.showMoveEffect();
}
+ else if (this.cursor===Page.MOVES) {
+ this.moveCursorObj = null;
+ this.showMoveSelect();
+ this.showMoveEffect();
+ }
}
else
this.summaryPageTransitionContainer.x -= 214;
@@ -871,6 +919,12 @@ export default class SummaryUiHandler extends UiHandler {
this.moveSelect = false;
this.extraMoveRowContainer.setVisible(false);
this.moveDescriptionText.setText('');
+
+ this.destroyBlinkCursor();
+ this.hideMoveEffect();
+ }
+
+ destroyBlinkCursor(){
if (this.moveCursorBlinkTimer) {
this.moveCursorBlinkTimer.destroy();
this.moveCursorBlinkTimer = null;
@@ -883,8 +937,6 @@ export default class SummaryUiHandler extends UiHandler {
this.selectedMoveCursorObj.destroy();
this.selectedMoveCursorObj = null;
}
-
- this.hideMoveEffect();
}
showMoveEffect(instant?: boolean) {
diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts
index f8a7c9d28..36588dc47 100644
--- a/src/ui/target-select-ui-handler.ts
+++ b/src/ui/target-select-ui-handler.ts
@@ -1,10 +1,11 @@
import { BattlerIndex } from "../battle";
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Moves } from "../data/enums/moves";
import { Mode } from "./ui";
import UiHandler from "./ui-handler";
import * as Utils from "../utils";
import { getMoveTargets } from "../data/move";
+import {Button} from "../enums/buttons";
export type TargetSelectCallback = (cursor: integer) => void;
diff --git a/src/ui/text.ts b/src/ui/text.ts
index bfb02d06e..a8cce8782 100644
--- a/src/ui/text.ts
+++ b/src/ui/text.ts
@@ -19,6 +19,7 @@ export enum TextStyle {
SUMMARY_PINK,
SUMMARY_GOLD,
SUMMARY_GRAY,
+ SUMMARY_GREEN,
MONEY,
SETTINGS_LABEL,
SETTINGS_SELECTED,
@@ -82,6 +83,7 @@ function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptio
case TextStyle.SUMMARY_PINK:
case TextStyle.SUMMARY_GOLD:
case TextStyle.SUMMARY_GRAY:
+ case TextStyle.SUMMARY_GREEN:
case TextStyle.WINDOW:
case TextStyle.WINDOW_ALT:
case TextStyle.MESSAGE:
@@ -160,6 +162,8 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: Ui
return !shadow ? '#e8e8a8' : '#a0a060';
case TextStyle.SUMMARY_GRAY:
return !shadow ? '#a0a0a0' : '#636363';
+ case TextStyle.SUMMARY_GREEN:
+ return !shadow ? '#78c850' : '#306850';
case TextStyle.SETTINGS_LABEL:
return !shadow ? '#f8b050' : '#c07800';
case TextStyle.SETTINGS_SELECTED:
diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts
index 6c96e4759..6f873c6b0 100644
--- a/src/ui/title-ui-handler.ts
+++ b/src/ui/title-ui-handler.ts
@@ -5,6 +5,7 @@ import { Mode } from "./ui";
import * as Utils from "../utils";
import { TextStyle, addTextObject } from "./text";
import { battleCountSplashMessage, splashMessages } from "../data/splash-messages";
+import i18next from "i18next";
export default class TitleUiHandler extends OptionSelectUiHandler {
private titleContainer: Phaser.GameObjects.Container;
@@ -37,7 +38,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
this.titleContainer.add(this.dailyRunScoreboard);
- this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, '? Players Online', TextStyle.MESSAGE, { fontSize: '54px' });
+ this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, `? ${i18next.t("menu:playersOnline")}`, TextStyle.MESSAGE, { fontSize: '54px' });
this.playerCountLabel.setOrigin(1, 0);
this.titleContainer.add(this.playerCountLabel);
@@ -61,9 +62,12 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
Utils.apiFetch(`game/titlestats`)
.then(request => request.json())
.then(stats => {
- this.playerCountLabel.setText(`${stats.playerCount} Players Online`);
+ this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`);
if (this.splashMessage === battleCountSplashMessage)
this.splashMessageText.setText(battleCountSplashMessage.replace('{COUNT}', stats.battleCount.toLocaleString('en-US')));
+ })
+ .catch(err => {
+ console.error("Failed to fetch title stats:\n", err);
});
}
diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts
index e3c94b764..7fdb85d94 100644
--- a/src/ui/ui-handler.ts
+++ b/src/ui/ui-handler.ts
@@ -1,6 +1,7 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { TextStyle, getTextColor } from "./text";
import UI, { Mode } from "./ui";
+import {Button} from "../enums/buttons";
export default abstract class UiHandler {
protected scene: BattleScene;
diff --git a/src/ui/ui.ts b/src/ui/ui.ts
index 6e20b2cb8..09deb2bdd 100644
--- a/src/ui/ui.ts
+++ b/src/ui/ui.ts
@@ -1,4 +1,4 @@
-import { Button, default as BattleScene } from '../battle-scene';
+import { default as BattleScene } from '../battle-scene';
import UiHandler from './ui-handler';
import BattleMessageUiHandler from './battle-message-ui-handler';
import CommandUiHandler from './command-ui-handler';
@@ -35,6 +35,7 @@ import SavingIconHandler from './saving-icon-handler';
import UnavailableModalUiHandler from './unavailable-modal-ui-handler';
import OutdatedModalUiHandler from './outdated-modal-ui-handler';
import SessionReloadModalUiHandler from './session-reload-modal-ui-handler';
+import {Button} from "../enums/buttons";
export enum Mode {
MESSAGE,
diff --git a/src/ui/vouchers-ui-handler.ts b/src/ui/vouchers-ui-handler.ts
index 3f41cf9ae..e28e211ee 100644
--- a/src/ui/vouchers-ui-handler.ts
+++ b/src/ui/vouchers-ui-handler.ts
@@ -1,9 +1,10 @@
-import BattleScene, { Button } from "../battle-scene";
+import BattleScene from "../battle-scene";
import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from "../system/voucher";
import MessageUiHandler from "./message-ui-handler";
import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui";
import { addWindow } from "./ui-theme";
+import {Button} from "../enums/buttons";
const itemRows = 4;
const itemCols = 17;
diff --git a/src/utils.test.ts b/src/utils.test.ts
index 8dc46371a..22ccbfc63 100644
--- a/src/utils.test.ts
+++ b/src/utils.test.ts
@@ -1,5 +1,5 @@
import { expect, describe, it } from "vitest";
-import { randomString } from "./utils";
+import { randomString, padInt } from "./utils";
import Phaser from "phaser";
@@ -19,4 +19,26 @@ describe("utils", () => {
expect(str1).toBe(str2);
});
});
+
+ describe("padInt", () => {
+ it("should return a string", () => {
+ const result = padInt(1, 10);
+ expect(typeof result).toBe('string');
+ });
+
+ it("should return a padded result with default padWith", () => {
+ const result = padInt(1, 3);
+ expect(result).toBe('001');
+ });
+
+ it("should return a padded result using a custom padWith", () => {
+ const result = padInt(1, 10, 'yes')
+ expect(result).toBe('yesyesyes1');
+ });
+
+ it("should return inputted value when zero length is entered", () => {
+ const result = padInt(1, 0);
+ expect(result).toBe('1')
+ })
+ });
});
diff --git a/src/utils.ts b/src/utils.ts
index 577e35c74..822f02f05 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -62,6 +62,11 @@ export function padInt(value: integer, length: integer, padWith?: string): strin
return valueStr;
}
+/**
+* Returns a random integer between min and min + range
+* @param range The amount of possible numbers
+* @param min The starting number
+*/
export function randInt(range: integer, min: integer = 0): integer {
if (range === 1)
return min;
@@ -74,6 +79,11 @@ export function randSeedInt(range: integer, min: integer = 0): integer {
return Phaser.Math.RND.integerInRange(min, (range - 1) + min);
}
+/**
+* Returns a random integer between min and max (non-inclusive)
+* @param min The lowest number
+* @param max The highest number
+*/
export function randIntRange(min: integer, max: integer): integer {
return randInt(max - min, min);
}
@@ -216,7 +226,7 @@ export const apiUrl = isLocal ? serverUrl : 'api';
export function setCookie(cName: string, cValue: string): void {
const expiration = new Date();
- expiration.setTime(new Date().getTime() + 3600000 * 24 * 7);
+ expiration.setTime(new Date().getTime() + 3600000 * 24 * 30 * 3/*7*/);
document.cookie = `${cName}=${cValue};SameSite=Strict;path=/;expires=${expiration.toUTCString()}`;
}