diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 1543236ff37..5aec86a0463 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -35,5 +35,3 @@ body: attributes: label: Additional context description: Add any other context or screenshots about the feature request here. - validations: - required: true diff --git a/public/images/events/august-variant-update.png b/public/images/events/august-variant-update.png new file mode 100644 index 00000000000..1c78aa2fe14 Binary files /dev/null and b/public/images/events/august-variant-update.png differ diff --git a/public/images/pokemon/867.png b/public/images/pokemon/867.png index bd07a7a4837..2fe8856d74d 100644 Binary files a/public/images/pokemon/867.png and b/public/images/pokemon/867.png differ diff --git a/public/images/pokemon/back/867.png b/public/images/pokemon/back/867.png index 925002d7483..ae631607ef2 100644 Binary files a/public/images/pokemon/back/867.png and b/public/images/pokemon/back/867.png differ diff --git a/public/images/pokemon/back/female/178.png b/public/images/pokemon/back/female/178.png index b6b1aa908d8..bf4e727088f 100644 Binary files a/public/images/pokemon/back/female/178.png and b/public/images/pokemon/back/female/178.png differ diff --git a/public/images/pokemon/back/female/457.png b/public/images/pokemon/back/female/457.png index 85268448129..04e1ae12ff4 100644 Binary files a/public/images/pokemon/back/female/457.png and b/public/images/pokemon/back/female/457.png differ diff --git a/public/images/pokemon/back/shiny/867.png b/public/images/pokemon/back/shiny/867.png index fce3fe4e37e..accb87844f1 100644 Binary files a/public/images/pokemon/back/shiny/867.png and b/public/images/pokemon/back/shiny/867.png differ diff --git a/public/images/pokemon/back/shiny/female/178.png b/public/images/pokemon/back/shiny/female/178.png index e82027f2da8..7978ec22e7f 100644 Binary files a/public/images/pokemon/back/shiny/female/178.png and b/public/images/pokemon/back/shiny/female/178.png differ diff --git a/public/images/pokemon/exp/670-blue.json b/public/images/pokemon/exp/670-blue.json index 95b040e8302..ba237724cbc 100644 --- a/public/images/pokemon/exp/670-blue.json +++ b/public/images/pokemon/exp/670-blue.json @@ -4,135 +4,156 @@ "image": "670-blue.png", "format": "RGBA8888", "size": { - "w": 131, - "h": 131 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 3, + "y": 9, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0012.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 120, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0001.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, + "x": 4, + "y": 10, + "w": 61, + "h": 68 + }, + "frame": { + "x": 180, + "y": 0, + "w": 61, + "h": 68 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 241, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 68 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 12, + "w": 62, + "h": 69 + }, + "frame": { + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -140,62 +161,146 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0010.png", + "filename": "0015.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0003.png", + "filename": "0026.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 80, + "x": 419, "y": 0, - "w": 39, - "h": 66 + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { @@ -203,41 +308,1259 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 8, + "w": 59, + "h": 70 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 65, + "w": 59, + "h": 70 } }, { - "filename": "0009.png", + "filename": "0016.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 } }, { @@ -245,20 +1568,944 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:6da8d1608a9c65309f0d1306470072d7:4ca05025221d73b733ddbeb890226940:f28e65cb64de91b1773f7b4998e488a5$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/670-orange.json b/public/images/pokemon/exp/670-orange.json index e43c9fb689e..ded85695da2 100644 --- a/public/images/pokemon/exp/670-orange.json +++ b/public/images/pokemon/exp/670-orange.json @@ -4,135 +4,156 @@ "image": "670-orange.png", "format": "RGBA8888", "size": { - "w": 131, - "h": 131 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 3, + "y": 9, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0012.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 120, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0001.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, + "x": 4, + "y": 10, + "w": 61, + "h": 68 + }, + "frame": { + "x": 180, + "y": 0, + "w": 61, + "h": 68 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 241, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 68 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 12, + "w": 62, + "h": 69 + }, + "frame": { + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -140,62 +161,146 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0010.png", + "filename": "0015.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0003.png", + "filename": "0026.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 80, + "x": 419, "y": 0, - "w": 39, - "h": 66 + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { @@ -203,41 +308,1259 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 8, + "w": 59, + "h": 70 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 65, + "w": 59, + "h": 70 } }, { - "filename": "0009.png", + "filename": "0016.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 } }, { @@ -245,20 +1568,944 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f5cb262b81e50f1216f7c96b87cee008:1e93586061e47c799fccb4b2e32678a7:a4ae1870548474db9c466580d9a207bb$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/670-red.json b/public/images/pokemon/exp/670-red.json index d5879f024af..098b0efca76 100644 --- a/public/images/pokemon/exp/670-red.json +++ b/public/images/pokemon/exp/670-red.json @@ -2513,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:edb2df3a947401efb05329a2c96d5d73:f256d83ef4df17c17958acc6e0432ab0:bad05b37c157676604256a043511a6a2$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/670-white.json b/public/images/pokemon/exp/670-white.json index 3a30277b875..521ca042bf2 100644 --- a/public/images/pokemon/exp/670-white.json +++ b/public/images/pokemon/exp/670-white.json @@ -4,135 +4,156 @@ "image": "670-white.png", "format": "RGBA8888", "size": { - "w": 131, - "h": 131 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 3, + "y": 9, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0012.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 120, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0001.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, + "x": 4, + "y": 10, + "w": 61, + "h": 68 + }, + "frame": { + "x": 180, + "y": 0, + "w": 61, + "h": 68 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 241, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 68 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 12, + "w": 62, + "h": 69 + }, + "frame": { + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -140,62 +161,146 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0010.png", + "filename": "0015.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0003.png", + "filename": "0026.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 80, + "x": 419, "y": 0, - "w": 39, - "h": 66 + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { @@ -203,41 +308,1259 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 8, + "w": 59, + "h": 70 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 65, + "w": 59, + "h": 70 } }, { - "filename": "0009.png", + "filename": "0016.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 } }, { @@ -245,20 +1568,944 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c665c1ed8b3570782ceb8fe40f155b3a:43fe4cf13bd16f48a733e1533ed1dc70:3b5fc0bf297b00d7e2adc65825803c41$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/670-yellow.json b/public/images/pokemon/exp/670-yellow.json index 7b870101a5f..ffd722006d3 100644 --- a/public/images/pokemon/exp/670-yellow.json +++ b/public/images/pokemon/exp/670-yellow.json @@ -4,135 +4,156 @@ "image": "670-yellow.png", "format": "RGBA8888", "size": { - "w": 131, - "h": 131 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 3, + "y": 9, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0012.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 0, + "x": 120, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0001.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, + "x": 4, + "y": 10, + "w": 61, + "h": 68 + }, + "frame": { + "x": 180, + "y": 0, + "w": 61, + "h": 68 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0007.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 65 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 241, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 68 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 12, + "w": 62, + "h": 69 + }, + "frame": { + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -140,62 +161,146 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0010.png", + "filename": "0015.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 38, - "h": 65 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 40, - "y": 66, - "w": 38, - "h": 65 + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { - "filename": "0003.png", + "filename": "0026.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 11, + "w": 62, + "h": 70 }, "frame": { - "x": 80, + "x": 419, "y": 0, - "w": 39, - "h": 66 + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 } }, { @@ -203,41 +308,1259 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 8, + "w": 59, + "h": 70 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 65, + "w": 59, + "h": 70 } }, { - "filename": "0009.png", + "filename": "0016.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 } }, { @@ -245,20 +1568,944 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 39, - "h": 66 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 39, - "h": 66 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:fa4d73da9ed13167c827701785bfb172:cffbc78a697506fc6a1560471e6521e9:e33b1f5cc51f17c070e89705329e1246$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/867.json b/public/images/pokemon/exp/867.json index 1a9c7572f43..52e0127509b 100644 --- a/public/images/pokemon/exp/867.json +++ b/public/images/pokemon/exp/867.json @@ -4,8 +4,8 @@ "image": "867.png", "format": "RGBA8888", "size": { - "w": 344, - "h": 344 + "w": 361, + "h": 361 }, "scale": 1, "frames": [ @@ -31,7 +31,7 @@ } }, { - "filename": "0020.png", + "filename": "0021.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -52,7 +52,7 @@ } }, { - "filename": "0035.png", + "filename": "0037.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -94,70 +94,7 @@ } }, { - "filename": "0006.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 113, - "h": 56 - }, - "frame": { - "x": 114, - "y": 0, - "w": 113, - "h": 56 - } - }, - { - "filename": "0019.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 113, - "h": 56 - }, - "frame": { - "x": 114, - "y": 0, - "w": 113, - "h": 56 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 113, - "h": 56 - }, - "frame": { - "x": 114, - "y": 0, - "w": 113, - "h": 56 - } - }, - { - "filename": "0034.png", + "filename": "0020.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -199,7 +136,7 @@ } }, { - "filename": "0003.png", + "filename": "0006.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -207,20 +144,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 4, + "x": 2, "y": 0, - "w": 107, + "w": 112, "h": 56 }, "frame": { "x": 227, "y": 0, - "w": 107, + "w": 112, "h": 56 } }, { - "filename": "0018.png", + "filename": "0022.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -228,20 +165,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 4, + "x": 2, "y": 0, - "w": 107, + "w": 112, "h": 56 }, "frame": { "x": 227, "y": 0, - "w": 107, + "w": 112, "h": 56 } }, { - "filename": "0033.png", + "filename": "0038.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -249,62 +186,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 4, + "x": 2, "y": 0, - "w": 107, + "w": 112, "h": 56 }, "frame": { "x": 227, "y": 0, - "w": 107, + "w": 112, "h": 56 } }, { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 103, - "h": 65 - }, - "frame": { - "x": 0, - "y": 56, - "w": 103, - "h": 65 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 103, - "h": 65 - }, - "frame": { - "x": 0, - "y": 56, - "w": 103, - "h": 65 - } - }, - { - "filename": "0026.png", + "filename": "0012.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -346,7 +241,7 @@ } }, { - "filename": "0041.png", + "filename": "0044.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -367,7 +262,7 @@ } }, { - "filename": "0043.png", + "filename": "0003.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -375,16 +270,58 @@ "h": 66 }, "spriteSourceSize": { - "x": 5, + "x": 4, "y": 0, - "w": 103, - "h": 65 + "w": 107, + "h": 56 }, "frame": { - "x": 0, + "x": 103, "y": 56, - "w": 103, - "h": 65 + "w": 107, + "h": 56 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 107, + "h": 56 + }, + "frame": { + "x": 103, + "y": 56, + "w": 107, + "h": 56 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 4, + "y": 0, + "w": 107, + "h": 56 + }, + "frame": { + "x": 103, + "y": 56, + "w": 107, + "h": 56 } }, { @@ -402,14 +339,14 @@ "h": 56 }, "frame": { - "x": 103, + "x": 210, "y": 56, "w": 107, "h": 56 } }, { - "filename": "0022.png", + "filename": "0023.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -423,14 +360,14 @@ "h": 56 }, "frame": { - "x": 103, + "x": 210, "y": 56, "w": 107, "h": 56 } }, { - "filename": "0037.png", + "filename": "0039.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -444,12 +381,54 @@ "h": 56 }, "frame": { - "x": 103, + "x": 210, "y": 56, "w": 107, "h": 56 } }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 40, + "y": 1, + "w": 44, + "h": 56 + }, + "frame": { + "x": 317, + "y": 56, + "w": 44, + "h": 56 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 40, + "y": 1, + "w": 44, + "h": 56 + }, + "frame": { + "x": 317, + "y": 56, + "w": 44, + "h": 56 + } + }, { "filename": "0002.png", "rotated": false, @@ -465,14 +444,14 @@ "h": 57 }, "frame": { - "x": 210, - "y": 56, + "x": 103, + "y": 112, "w": 102, "h": 57 } }, { - "filename": "0017.png", + "filename": "0018.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -486,14 +465,14 @@ "h": 57 }, "frame": { - "x": 210, - "y": 56, + "x": 103, + "y": 112, "w": 102, "h": 57 } }, { - "filename": "0032.png", + "filename": "0034.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -507,12 +486,138 @@ "h": 57 }, "frame": { - "x": 210, - "y": 56, + "x": 103, + "y": 112, "w": 102, "h": 57 } }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 101, + "h": 65 + }, + "frame": { + "x": 0, + "y": 121, + "w": 101, + "h": 65 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 101, + "h": 65 + }, + "frame": { + "x": 0, + "y": 121, + "w": 101, + "h": 65 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 5, + "y": 1, + "w": 101, + "h": 65 + }, + "frame": { + "x": 0, + "y": 121, + "w": 101, + "h": 65 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 101, + "h": 61 + }, + "frame": { + "x": 205, + "y": 112, + "w": 101, + "h": 61 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 101, + "h": 61 + }, + "frame": { + "x": 205, + "y": 112, + "w": 101, + "h": 61 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 101, + "h": 61 + }, + "frame": { + "x": 205, + "y": 112, + "w": 101, + "h": 61 + } + }, { "filename": "0008.png", "rotated": false, @@ -524,266 +629,14 @@ "spriteSourceSize": { "x": 6, "y": 0, - "w": 102, + "w": 101, "h": 57 }, - "frame": { - "x": 103, - "y": 112, - "w": 102, - "h": 57 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 102, - "h": 57 - }, - "frame": { - "x": 103, - "y": 112, - "w": 102, - "h": 57 - } - }, - { - "filename": "0038.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 102, - "h": 57 - }, - "frame": { - "x": 103, - "y": 112, - "w": 102, - "h": 57 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 101, - "h": 65 - }, - "frame": { - "x": 0, - "y": 121, - "w": 101, - "h": 65 - } - }, - { - "filename": "0027.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 101, - "h": 65 - }, - "frame": { - "x": 0, - "y": 121, - "w": 101, - "h": 65 - } - }, - { - "filename": "0042.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 101, - "h": 65 - }, - "frame": { - "x": 0, - "y": 121, - "w": 101, - "h": 65 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 101, - "h": 61 - }, - "frame": { - "x": 205, - "y": 113, - "w": 101, - "h": 61 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 101, - "h": 61 - }, - "frame": { - "x": 205, - "y": 113, - "w": 101, - "h": 61 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 101, - "h": 61 - }, - "frame": { - "x": 205, - "y": 113, - "w": 101, - "h": 61 - } - }, - { - "filename": "0029.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 101, - "h": 61 - }, - "frame": { - "x": 205, - "y": 113, - "w": 101, - "h": 61 - } - }, - { - "filename": "0040.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 101, - "h": 61 - }, - "frame": { - "x": 205, - "y": 113, - "w": 101, - "h": 61 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 101, - "h": 61 - }, - "frame": { - "x": 205, - "y": 113, - "w": 101, - "h": 61 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 99, - "h": 59 - }, "frame": { "x": 101, "y": 169, - "w": 99, - "h": 59 + "w": 101, + "h": 57 } }, { @@ -795,20 +648,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 8, + "x": 6, "y": 0, - "w": 99, - "h": 59 + "w": 101, + "h": 57 }, "frame": { "x": 101, "y": 169, - "w": 99, - "h": 59 + "w": 101, + "h": 57 } }, { - "filename": "0039.png", + "filename": "0040.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -816,20 +669,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 8, + "x": 6, "y": 0, - "w": 99, - "h": 59 + "w": 101, + "h": 57 }, "frame": { "x": 101, "y": 169, - "w": 99, - "h": 59 + "w": 101, + "h": 57 } }, { - "filename": "0015.png", + "filename": "0010.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -849,6 +702,195 @@ "h": 59 } }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 99, + "h": 59 + }, + "frame": { + "x": 0, + "y": 186, + "w": 99, + "h": 59 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 8, + "y": 0, + "w": 99, + "h": 59 + }, + "frame": { + "x": 0, + "y": 186, + "w": 99, + "h": 59 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 40, + "y": 0, + "w": 44, + "h": 54 + }, + "frame": { + "x": 306, + "y": 112, + "w": 44, + "h": 54 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 40, + "y": 3, + "w": 44, + "h": 54 + }, + "frame": { + "x": 306, + "y": 112, + "w": 44, + "h": 54 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 40, + "y": 3, + "w": 44, + "h": 54 + }, + "frame": { + "x": 306, + "y": 112, + "w": 44, + "h": 54 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 40, + "y": 3, + "w": 44, + "h": 54 + }, + "frame": { + "x": 306, + "y": 112, + "w": 44, + "h": 54 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 39, + "y": 3, + "w": 44, + "h": 54 + }, + "frame": { + "x": 306, + "y": 166, + "w": 44, + "h": 54 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 39, + "y": 3, + "w": 44, + "h": 54 + }, + "frame": { + "x": 306, + "y": 166, + "w": 44, + "h": 54 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 5, + "y": 0, + "w": 97, + "h": 65 + }, + "frame": { + "x": 202, + "y": 173, + "w": 97, + "h": 65 + } + }, { "filename": "0030.png", "rotated": false, @@ -858,20 +900,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 8, + "x": 5, "y": 0, - "w": 99, - "h": 59 + "w": 97, + "h": 65 }, "frame": { - "x": 0, - "y": 186, - "w": 99, - "h": 59 + "x": 202, + "y": 173, + "w": 97, + "h": 65 } }, { - "filename": "0045.png", + "filename": "0046.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -879,16 +921,58 @@ "h": 66 }, "spriteSourceSize": { - "x": 8, + "x": 5, "y": 0, - "w": 99, - "h": 59 + "w": 97, + "h": 65 }, "frame": { - "x": 0, - "y": 186, - "w": 99, - "h": 59 + "x": 202, + "y": 173, + "w": 97, + "h": 65 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 29, + "y": 1, + "w": 58, + "h": 57 + }, + "frame": { + "x": 299, + "y": 220, + "w": 58, + "h": 57 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 29, + "y": 1, + "w": 58, + "h": 57 + }, + "frame": { + "x": 299, + "y": 220, + "w": 58, + "h": 57 } }, { @@ -906,8 +990,134 @@ "h": 59 }, "frame": { - "x": 0, - "y": 245, + "x": 99, + "y": 226, + "w": 95, + "h": 59 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 95, + "h": 59 + }, + "frame": { + "x": 99, + "y": 226, + "w": 95, + "h": 59 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 95, + "h": 59 + }, + "frame": { + "x": 99, + "y": 226, + "w": 95, + "h": 59 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 95, + "h": 59 + }, + "frame": { + "x": 99, + "y": 226, + "w": 95, + "h": 59 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 95, + "h": 59 + }, + "frame": { + "x": 99, + "y": 226, + "w": 95, + "h": 59 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 95, + "h": 59 + }, + "frame": { + "x": 99, + "y": 226, + "w": 95, + "h": 59 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 9, + "y": 1, + "w": 95, + "h": 59 + }, + "frame": { + "x": 99, + "y": 226, "w": 95, "h": 59 } @@ -921,146 +1131,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 95, - "h": 59 - }, - "frame": { - "x": 0, - "y": 245, - "w": 95, - "h": 59 - } - }, - { - "filename": "0031.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 95, - "h": 59 - }, - "frame": { - "x": 0, - "y": 245, - "w": 95, - "h": 59 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 95, - "h": 59 - }, - "frame": { - "x": 0, - "y": 245, - "w": 95, - "h": 59 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 12, - "y": 1, - "w": 90, - "h": 59 - }, - "frame": { - "x": 95, - "y": 245, - "w": 90, - "h": 59 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 22, - "y": 1, - "w": 70, - "h": 59 - }, - "frame": { - "x": 185, - "y": 228, - "w": 70, - "h": 59 - } - }, - { - "filename": "0064.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 22, - "y": 1, - "w": 70, - "h": 59 - }, - "frame": { - "x": 185, - "y": 228, - "w": 70, - "h": 59 - } - }, - { - "filename": "0051.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 40, + "x": 8, "y": 0, - "w": 44, - "h": 54 + "w": 95, + "h": 59 }, "frame": { - "x": 200, - "y": 174, - "w": 44, - "h": 54 + "x": 0, + "y": 245, + "w": 95, + "h": 59 } }, { - "filename": "0052.png", + "filename": "0032.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1068,100 +1152,16 @@ "h": 66 }, "spriteSourceSize": { - "x": 40, - "y": 3, - "w": 44, - "h": 54 + "x": 8, + "y": 0, + "w": 95, + "h": 59 }, "frame": { - "x": 200, - "y": 174, - "w": 44, - "h": 54 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 40, - "y": 3, - "w": 44, - "h": 54 - }, - "frame": { - "x": 200, - "y": 174, - "w": 44, - "h": 54 - } - }, - { - "filename": "0060.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 40, - "y": 3, - "w": 44, - "h": 54 - }, - "frame": { - "x": 200, - "y": 174, - "w": 44, - "h": 54 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 39, - "y": 3, - "w": 44, - "h": 54 - }, - "frame": { - "x": 244, - "y": 174, - "w": 44, - "h": 54 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 39, - "y": 3, - "w": 44, - "h": 54 - }, - "frame": { - "x": 244, - "y": 174, - "w": 44, - "h": 54 + "x": 0, + "y": 245, + "w": 95, + "h": 59 } }, { @@ -1173,41 +1173,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 29, - "y": 1, - "w": 58, - "h": 57 + "x": 8, + "y": 0, + "w": 95, + "h": 59 }, "frame": { - "x": 185, - "y": 287, - "w": 58, - "h": 57 + "x": 0, + "y": 245, + "w": 95, + "h": 59 } }, { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 29, - "y": 1, - "w": 58, - "h": 57 - }, - "frame": { - "x": 185, - "y": 287, - "w": 58, - "h": 57 - } - }, - { - "filename": "0049.png", + "filename": "0052.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1221,14 +1200,14 @@ "h": 56 }, "frame": { - "x": 288, - "y": 174, + "x": 0, + "y": 304, "w": 56, "h": 56 } }, { - "filename": "0062.png", + "filename": "0065.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1242,56 +1221,14 @@ "h": 56 }, "frame": { - "x": 288, - "y": 174, + "x": 0, + "y": 304, "w": 56, "h": 56 } }, { - "filename": "0050.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 40, - "y": 1, - "w": 44, - "h": 56 - }, - "frame": { - "x": 243, - "y": 287, - "w": 44, - "h": 56 - } - }, - { - "filename": "0061.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 40, - "y": 1, - "w": 44, - "h": 56 - }, - "frame": { - "x": 243, - "y": 287, - "w": 44, - "h": 56 - } - }, - { - "filename": "0053.png", + "filename": "0056.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1305,29 +1242,8 @@ "h": 53 }, "frame": { - "x": 255, - "y": 230, - "w": 44, - "h": 53 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 114, - "h": 66 - }, - "spriteSourceSize": { - "x": 41, - "y": 4, - "w": 44, - "h": 53 - }, - "frame": { - "x": 255, - "y": 230, + "x": 56, + "y": 304, "w": 44, "h": 53 } @@ -1341,20 +1257,20 @@ "h": 66 }, "spriteSourceSize": { - "x": 38, + "x": 41, "y": 4, "w": 44, "h": 53 }, "frame": { - "x": 299, - "y": 230, + "x": 56, + "y": 304, "w": 44, "h": 53 } }, { - "filename": "0054.png", + "filename": "0015.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1362,14 +1278,161 @@ "h": 66 }, "spriteSourceSize": { - "x": 42, + "x": 7, + "y": 0, + "w": 94, + "h": 61 + }, + "frame": { + "x": 194, + "y": 238, + "w": 94, + "h": 61 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 94, + "h": 61 + }, + "frame": { + "x": 194, + "y": 238, + "w": 94, + "h": 61 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 94, + "h": 61 + }, + "frame": { + "x": 194, + "y": 238, + "w": 94, + "h": 61 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 22, + "y": 1, + "w": 70, + "h": 59 + }, + "frame": { + "x": 288, + "y": 277, + "w": 70, + "h": 59 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 22, + "y": 1, + "w": 70, + "h": 59 + }, + "frame": { + "x": 288, + "y": 277, + "w": 70, + "h": 59 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 12, + "y": 1, + "w": 90, + "h": 59 + }, + "frame": { + "x": 100, + "y": 299, + "w": 90, + "h": 59 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 37, + "y": 4, + "w": 44, + "h": 53 + }, + "frame": { + "x": 190, + "y": 299, + "w": 44, + "h": 53 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 114, + "h": 66 + }, + "spriteSourceSize": { + "x": 43, "y": 5, "w": 44, "h": 52 }, "frame": { - "x": 287, - "y": 283, + "x": 234, + "y": 299, "w": 44, "h": 52 } @@ -1379,7 +1442,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b8ca75f7f37906e78ed633b32d037b74:92bc79a7ca35490600679451c06105fc:58bcd289dd222ce646aec14ff657c9fc$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/867.png b/public/images/pokemon/exp/867.png index 689a72694ef..4f8f67842bd 100644 Binary files a/public/images/pokemon/exp/867.png and b/public/images/pokemon/exp/867.png differ diff --git a/public/images/pokemon/exp/back/867.png b/public/images/pokemon/exp/back/867.png index 766ce3f39ed..b816f10a0de 100644 Binary files a/public/images/pokemon/exp/back/867.png and b/public/images/pokemon/exp/back/867.png differ diff --git a/public/images/pokemon/exp/back/shiny/867.png b/public/images/pokemon/exp/back/shiny/867.png index 7be80836150..9821217341e 100644 Binary files a/public/images/pokemon/exp/back/shiny/867.png and b/public/images/pokemon/exp/back/shiny/867.png differ diff --git a/public/images/pokemon/exp/shiny/670-blue.json b/public/images/pokemon/exp/shiny/670-blue.json index efead949c9b..ba237724cbc 100644 --- a/public/images/pokemon/exp/shiny/670-blue.json +++ b/public/images/pokemon/exp/shiny/670-blue.json @@ -4,219 +4,156 @@ "image": "670-blue.png", "format": "RGBA8888", "size": { - "w": 132, - "h": 132 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, + "x": 3, + "y": 9, + "w": 60, "h": 67 }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0003.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "x": 120, + "y": 0, + "w": 60, + "h": 67 } }, { - "filename": "0005.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 10, + "w": 61, + "h": 68 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 180, "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "w": 61, + "h": 68 } }, { - "filename": "0011.png", + "filename": "0100.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 241, + "y": 0, + "w": 60, + "h": 68 } }, { - "filename": "0007.png", + "filename": "0081.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 + "x": 4, + "y": 12, + "w": 62, + "h": 69 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -224,20 +161,1763 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 } }, { @@ -245,20 +1925,587 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:36694a5c0e14e2bcf35d63ad72dd1f6d:3a1ea08b2c0badd5e308726fb0dab395:f28e65cb64de91b1773f7b4998e488a5$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/shiny/670-orange.json b/public/images/pokemon/exp/shiny/670-orange.json index 0f6043e12c5..ded85695da2 100644 --- a/public/images/pokemon/exp/shiny/670-orange.json +++ b/public/images/pokemon/exp/shiny/670-orange.json @@ -4,219 +4,156 @@ "image": "670-orange.png", "format": "RGBA8888", "size": { - "w": 132, - "h": 132 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, + "x": 3, + "y": 9, + "w": 60, "h": 67 }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0003.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "x": 120, + "y": 0, + "w": 60, + "h": 67 } }, { - "filename": "0005.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 10, + "w": 61, + "h": 68 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 180, "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "w": 61, + "h": 68 } }, { - "filename": "0011.png", + "filename": "0100.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 241, + "y": 0, + "w": 60, + "h": 68 } }, { - "filename": "0007.png", + "filename": "0081.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 + "x": 4, + "y": 12, + "w": 62, + "h": 69 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -224,20 +161,1763 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 } }, { @@ -245,20 +1925,587 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:a63935896af8b0a45c2a96144ad240db:0991e6604fcdd7ce0b2b0f12f8c7d0fc:a4ae1870548474db9c466580d9a207bb$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/shiny/670-red.json b/public/images/pokemon/exp/shiny/670-red.json index 53390cee950..098b0efca76 100644 --- a/public/images/pokemon/exp/shiny/670-red.json +++ b/public/images/pokemon/exp/shiny/670-red.json @@ -4,517 +4,13 @@ "image": "670-red.png", "format": "RGBA8888", "size": { - "w": 512, - "h": 512 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0013.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0024.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0035.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0046.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0057.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0068.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 0, - "w": 63, - "h": 72 - } - }, - { - "filename": "0079.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 72 - }, - "frame": { - "x": 0, - "y": 72, - "w": 63, - "h": 72 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 0, - "w": 61, - "h": 73 - } - }, - { - "filename": "0003.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0014.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0025.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0036.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0047.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0058.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0069.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 144, - "w": 63, - "h": 71 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 73, - "w": 61, - "h": 73 - } - }, - { - "filename": "0023.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 73, - "w": 61, - "h": 73 - } - }, - { - "filename": "0034.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 73, - "w": 61, - "h": 73 - } - }, - { - "filename": "0045.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 73, - "w": 61, - "h": 73 - } - }, - { - "filename": "0056.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 73, - "w": 61, - "h": 73 - } - }, - { - "filename": "0067.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 63, - "y": 73, - "w": 61, - "h": 73 - } - }, - { - "filename": "0078.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 12, - "w": 61, - "h": 73 - }, - "frame": { - "x": 124, - "y": 0, - "w": 61, - "h": 73 - } - }, - { - "filename": "0080.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 13, - "w": 63, - "h": 71 - }, - "frame": { - "x": 0, - "y": 215, - "w": 63, - "h": 71 - } - }, - { - "filename": "0004.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -523,166 +19,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 11, - "w": 62, - "h": 70 - }, - "frame": { - "x": 185, - "y": 0, - "w": 62, - "h": 70 - } - }, - { - "filename": "0026.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 62, - "h": 70 - }, - "frame": { - "x": 185, - "y": 0, - "w": 62, - "h": 70 - } - }, - { - "filename": "0037.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 62, - "h": 70 - }, - "frame": { - "x": 185, - "y": 0, - "w": 62, - "h": 70 - } - }, - { - "filename": "0048.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 62, - "h": 70 - }, - "frame": { - "x": 185, - "y": 0, - "w": 62, - "h": 70 - } - }, - { - "filename": "0059.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 62, - "h": 70 - }, - "frame": { - "x": 185, - "y": 0, - "w": 62, - "h": 70 - } - }, - { - "filename": "0070.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 62, - "h": 70 - }, - "frame": { - "x": 185, - "y": 0, - "w": 62, - "h": 70 - } - }, - { - "filename": "0015.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 11, - "w": 62, - "h": 70 + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, - "y": 286, - "w": 62, - "h": 70 - } - }, - { - "filename": "0097.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 7, "y": 0, - "w": 55, - "h": 77 - }, - "frame": { - "x": 63, - "y": 146, - "w": 55, - "h": 77 + "w": 60, + "h": 65 } }, { - "filename": "0119.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -691,19 +40,19 @@ }, "spriteSourceSize": { "x": 3, - "y": 11, - "w": 57, - "h": 75 + "y": 9, + "w": 60, + "h": 67 }, "frame": { - "x": 0, - "y": 356, - "w": 57, - "h": 75 + "x": 60, + "y": 0, + "w": 60, + "h": 67 } }, { - "filename": "0092.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -711,58 +60,16 @@ "h": 86 }, "spriteSourceSize": { - "x": 6, + "x": 4, "y": 5, - "w": 48, - "h": 81 + "w": 60, + "h": 67 }, "frame": { - "x": 0, - "y": 431, - "w": 48, - "h": 81 - } - }, - { - "filename": "0081.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 12, - "w": 62, - "h": 69 - }, - "frame": { - "x": 247, + "x": 120, "y": 0, - "w": 62, - "h": 69 - } - }, - { - "filename": "0005.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 59, - "h": 70 - }, - "frame": { - "x": 124, - "y": 73, - "w": 59, - "h": 70 + "w": 60, + "h": 67 } }, { @@ -780,7 +87,7 @@ "h": 68 }, "frame": { - "x": 309, + "x": 180, "y": 0, "w": 61, "h": 68 @@ -801,12 +108,222 @@ "h": 68 }, "frame": { - "x": 370, + "x": 241, "y": 0, "w": 60, "h": 68 } }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 12, + "w": 62, + "h": 69 + }, + "frame": { + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, { "filename": "0016.png", "rotated": false, @@ -822,159 +339,12 @@ "h": 70 }, "frame": { - "x": 430, - "y": 0, + "x": 0, + "y": 65, "w": 59, "h": 70 } }, - { - "filename": "0011.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, - { - "filename": "0022.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, - { - "filename": "0033.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, - { - "filename": "0044.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, - { - "filename": "0055.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, - { - "filename": "0066.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, - { - "filename": "0077.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 55, - "h": 76 - }, - "frame": { - "x": 63, - "y": 223, - "w": 55, - "h": 76 - } - }, { "filename": "0027.png", "rotated": false, @@ -990,8 +360,8 @@ "h": 70 }, "frame": { - "x": 62, - "y": 299, + "x": 0, + "y": 65, "w": 59, "h": 70 } @@ -1011,8 +381,8 @@ "h": 70 }, "frame": { - "x": 62, - "y": 299, + "x": 0, + "y": 65, "w": 59, "h": 70 } @@ -1032,8 +402,8 @@ "h": 70 }, "frame": { - "x": 62, - "y": 299, + "x": 0, + "y": 65, "w": 59, "h": 70 } @@ -1053,8 +423,8 @@ "h": 70 }, "frame": { - "x": 62, - "y": 299, + "x": 0, + "y": 65, "w": 59, "h": 70 } @@ -1074,138 +444,12 @@ "h": 70 }, "frame": { - "x": 62, - "y": 299, + "x": 0, + "y": 65, "w": 59, "h": 70 } }, - { - "filename": "0083.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 9, - "w": 60, - "h": 67 - }, - "frame": { - "x": 57, - "y": 369, - "w": 60, - "h": 67 - } - }, - { - "filename": "0117.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 10, - "w": 53, - "h": 76 - }, - "frame": { - "x": 48, - "y": 436, - "w": 53, - "h": 76 - } - }, - { - "filename": "0086.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 0, - "y": 4, - "w": 51, - "h": 76 - }, - "frame": { - "x": 101, - "y": 436, - "w": 51, - "h": 76 - } - }, - { - "filename": "0102.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 60, - "h": 67 - }, - "frame": { - "x": 117, - "y": 369, - "w": 60, - "h": 67 - } - }, - { - "filename": "0115.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 10, - "w": 51, - "h": 76 - }, - "frame": { - "x": 152, - "y": 436, - "w": 51, - "h": 76 - } - }, - { - "filename": "0088.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 0, - "y": 4, - "w": 43, - "h": 82 - }, - "frame": { - "x": 118, - "y": 146, - "w": 43, - "h": 82 - } - }, { "filename": "0085.png", "rotated": false, @@ -1221,8 +465,8 @@ "h": 70 }, "frame": { - "x": 118, - "y": 228, + "x": 59, + "y": 67, "w": 56, "h": 70 } @@ -1242,35 +486,14 @@ "h": 70 }, "frame": { - "x": 121, - "y": 298, + "x": 115, + "y": 67, "w": 57, "h": 70 } }, { - "filename": "0089.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 0, - "y": 6, - "w": 44, - "h": 80 - }, - "frame": { - "x": 161, - "y": 143, - "w": 44, - "h": 80 - } - }, - { - "filename": "0008.png", + "filename": "0103.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1279,19 +502,19 @@ }, "spriteSourceSize": { "x": 4, - "y": 2, - "w": 47, - "h": 75 + "y": 4, + "w": 57, + "h": 70 }, "frame": { - "x": 174, - "y": 223, - "w": 47, - "h": 75 + "x": 172, + "y": 68, + "w": 57, + "h": 70 } }, { - "filename": "0019.png", + "filename": "0003.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1299,16 +522,331 @@ "h": 86 }, "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 47, - "h": 75 + "x": 3, + "y": 13, + "w": 63, + "h": 71 }, "frame": { - "x": 174, - "y": 223, - "w": 47, - "h": 75 + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 } }, { @@ -1326,8 +864,8 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } @@ -1347,8 +885,8 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } @@ -1368,8 +906,8 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } @@ -1389,8 +927,8 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } @@ -1410,8 +948,8 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } @@ -1431,8 +969,8 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } @@ -1452,35 +990,14 @@ "h": 73 }, "frame": { - "x": 178, - "y": 298, + "x": 0, + "y": 135, "w": 53, "h": 73 } }, { - "filename": "0101.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 60, - "h": 65 - }, - "frame": { - "x": 177, - "y": 371, - "w": 60, - "h": 65 - } - }, - { - "filename": "0116.png", + "filename": "0001.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1489,162 +1006,15 @@ }, "spriteSourceSize": { "x": 3, - "y": 10, - "w": 51, - "h": 76 + "y": 12, + "w": 61, + "h": 73 }, "frame": { - "x": 203, - "y": 436, - "w": 51, - "h": 76 - } - }, - { - "filename": "0103.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 57, - "h": 70 - }, - "frame": { - "x": 183, - "y": 73, - "w": 57, - "h": 70 - } - }, - { - "filename": "0090.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 1, - "y": 6, - "w": 46, - "h": 80 - }, - "frame": { - "x": 205, - "y": 143, - "w": 46, - "h": 80 - } - }, - { - "filename": "0030.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 47, - "h": 75 - }, - "frame": { - "x": 221, - "y": 223, - "w": 47, - "h": 75 - } - }, - { - "filename": "0041.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 47, - "h": 75 - }, - "frame": { - "x": 221, - "y": 223, - "w": 47, - "h": 75 - } - }, - { - "filename": "0052.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 47, - "h": 75 - }, - "frame": { - "x": 221, - "y": 223, - "w": 47, - "h": 75 - } - }, - { - "filename": "0063.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 47, - "h": 75 - }, - "frame": { - "x": 221, - "y": 223, - "w": 47, - "h": 75 - } - }, - { - "filename": "0074.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 47, - "h": 75 - }, - "frame": { - "x": 221, - "y": 223, - "w": 47, - "h": 75 + "x": 53, + "y": 137, + "w": 61, + "h": 73 } }, { @@ -1662,14 +1032,14 @@ "h": 73 }, "frame": { - "x": 231, - "y": 298, + "x": 114, + "y": 137, "w": 54, "h": 73 } }, { - "filename": "0084.png", + "filename": "0012.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1678,19 +1048,19 @@ }, "spriteSourceSize": { "x": 3, - "y": 7, - "w": 56, - "h": 69 + "y": 12, + "w": 61, + "h": 73 }, "frame": { - "x": 240, - "y": 70, - "w": 56, - "h": 69 + "x": 168, + "y": 138, + "w": 61, + "h": 73 } }, { - "filename": "0091.png", + "filename": "0023.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1699,36 +1069,120 @@ }, "spriteSourceSize": { "x": 3, - "y": 6, - "w": 47, - "h": 80 + "y": 12, + "w": 61, + "h": 73 }, "frame": { - "x": 251, + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, "y": 139, - "w": 47, - "h": 80 - } - }, - { - "filename": "0087.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 0, - "y": 3, - "w": 45, - "h": 79 - }, - "frame": { - "x": 268, - "y": 219, - "w": 45, - "h": 79 + "w": 61, + "h": 73 } }, { @@ -1746,8 +1200,8 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } @@ -1767,8 +1221,8 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } @@ -1788,8 +1242,8 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } @@ -1809,8 +1263,8 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } @@ -1830,8 +1284,8 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } @@ -1851,8 +1305,8 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } @@ -1872,33 +1326,12 @@ "h": 74 }, "frame": { - "x": 285, - "y": 298, + "x": 290, + "y": 140, "w": 49, "h": 74 } }, - { - "filename": "0096.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 54, - "h": 77 - }, - "frame": { - "x": 309, - "y": 68, - "w": 54, - "h": 77 - } - }, { "filename": "0104.png", "rotated": false, @@ -1914,14 +1347,14 @@ "h": 74 }, "frame": { - "x": 298, - "y": 145, + "x": 339, + "y": 141, "w": 52, "h": 74 } }, { - "filename": "0093.png", + "filename": "0008.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1929,20 +1362,209 @@ "h": 86 }, "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 49, - "h": 79 + "x": 4, + "y": 2, + "w": 47, + "h": 75 }, "frame": { - "x": 313, - "y": 219, - "w": 49, - "h": 79 + "x": 391, + "y": 142, + "w": 47, + "h": 75 } }, { - "filename": "0118.png", + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 51, + "h": 76 + }, + "frame": { + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 + } + }, + { + "filename": "0011.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -1952,161 +1574,203 @@ "spriteSourceSize": { "x": 3, "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, "w": 53, - "h": 77 + "h": 76 }, "frame": { - "x": 363, - "y": 68, + "x": 265, + "y": 214, "w": 53, - "h": 77 - } - }, - { - "filename": "0010.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 - } - }, - { - "filename": "0021.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 - } - }, - { - "filename": "0032.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 - } - }, - { - "filename": "0043.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 - } - }, - { - "filename": "0054.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 - } - }, - { - "filename": "0065.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 - } - }, - { - "filename": "0076.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 66, - "h": 86 - }, - "spriteSourceSize": { - "x": 3, - "y": 7, - "w": 52, - "h": 77 - }, - "frame": { - "x": 416, - "y": 70, - "w": 52, - "h": 77 + "h": 76 } }, { @@ -2124,8 +1788,8 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } @@ -2145,8 +1809,8 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } @@ -2166,8 +1830,8 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } @@ -2187,8 +1851,8 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } @@ -2208,8 +1872,8 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } @@ -2229,8 +1893,8 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } @@ -2250,14 +1914,14 @@ "h": 77 }, "frame": { - "x": 334, - "y": 298, + "x": 318, + "y": 215, "w": 49, "h": 77 } }, { - "filename": "0108.png", + "filename": "0010.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -2265,20 +1929,20 @@ "h": 86 }, "spriteSourceSize": { - "x": 2, - "y": 4, - "w": 50, - "h": 80 + "x": 3, + "y": 7, + "w": 52, + "h": 77 }, "frame": { - "x": 362, - "y": 145, - "w": 50, - "h": 80 + "x": 367, + "y": 217, + "w": 52, + "h": 77 } }, { - "filename": "0094.png", + "filename": "0021.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -2286,20 +1950,20 @@ "h": 86 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 50, - "h": 78 + "x": 3, + "y": 7, + "w": 52, + "h": 77 }, "frame": { - "x": 412, - "y": 147, - "w": 50, - "h": 78 + "x": 367, + "y": 217, + "w": 52, + "h": 77 } }, { - "filename": "0109.png", + "filename": "0032.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -2307,16 +1971,100 @@ "h": 86 }, "spriteSourceSize": { - "x": 2, - "y": 5, - "w": 50, - "h": 80 + "x": 3, + "y": 7, + "w": 52, + "h": 77 }, "frame": { - "x": 462, - "y": 147, - "w": 50, - "h": 80 + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 } }, { @@ -2334,14 +2082,14 @@ "h": 77 }, "frame": { - "x": 383, - "y": 225, + "x": 419, + "y": 217, "w": 51, "h": 77 } }, { - "filename": "0114.png", + "filename": "0113.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -2350,15 +2098,99 @@ }, "spriteSourceSize": { "x": 4, - "y": 11, - "w": 50, - "h": 75 + "y": 9, + "w": 47, + "h": 77 }, "frame": { - "x": 383, - "y": 302, + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, "w": 50, - "h": 75 + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 } }, { @@ -2376,12 +2208,117 @@ "h": 78 }, "frame": { - "x": 434, - "y": 227, + "x": 259, + "y": 290, "w": 48, "h": 78 } }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 45, + "h": 79 + }, + "frame": { + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, { "filename": "0106.png", "rotated": false, @@ -2397,8 +2334,8 @@ "h": 79 }, "frame": { - "x": 433, - "y": 305, + "x": 44, + "y": 362, "w": 48, "h": 79 } @@ -2418,8 +2355,8 @@ "h": 79 }, "frame": { - "x": 254, - "y": 372, + "x": 92, + "y": 363, "w": 48, "h": 79 } @@ -2439,8 +2376,8 @@ "h": 79 }, "frame": { - "x": 302, - "y": 375, + "x": 140, + "y": 364, "w": 48, "h": 79 } @@ -2460,14 +2397,14 @@ "h": 79 }, "frame": { - "x": 350, - "y": 377, + "x": 188, + "y": 366, "w": 48, "h": 79 } }, { - "filename": "0112.png", + "filename": "0090.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -2475,20 +2412,20 @@ "h": 86 }, "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 47, - "h": 78 + "x": 1, + "y": 6, + "w": 46, + "h": 80 }, "frame": { - "x": 398, - "y": 384, - "w": 47, - "h": 78 + "x": 236, + "y": 368, + "w": 46, + "h": 80 } }, { - "filename": "0113.png", + "filename": "0091.png", "rotated": false, "trimmed": true, "sourceSize": { @@ -2496,16 +2433,79 @@ "h": 86 }, "spriteSourceSize": { - "x": 4, - "y": 9, + "x": 3, + "y": 6, "w": 47, - "h": 77 + "h": 80 }, "frame": { - "x": 445, - "y": 384, + "x": 282, + "y": 370, "w": 47, - "h": 77 + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -2513,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:9e48c848a41465f492d915f4dce7450d:4400a226a5397c6ca3d4bfb29ba2dc10:bad05b37c157676604256a043511a6a2$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/shiny/670-white.json b/public/images/pokemon/exp/shiny/670-white.json index abebccdf384..521ca042bf2 100644 --- a/public/images/pokemon/exp/shiny/670-white.json +++ b/public/images/pokemon/exp/shiny/670-white.json @@ -4,219 +4,156 @@ "image": "670-white.png", "format": "RGBA8888", "size": { - "w": 132, - "h": 132 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, + "x": 3, + "y": 9, + "w": 60, "h": 67 }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0003.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "x": 120, + "y": 0, + "w": 60, + "h": 67 } }, { - "filename": "0005.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 10, + "w": 61, + "h": 68 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 180, "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "w": 61, + "h": 68 } }, { - "filename": "0011.png", + "filename": "0100.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 241, + "y": 0, + "w": 60, + "h": 68 } }, { - "filename": "0007.png", + "filename": "0081.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 + "x": 4, + "y": 12, + "w": 62, + "h": 69 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -224,20 +161,1763 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 } }, { @@ -245,20 +1925,587 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:01dae0b687f736498b0c925683fd383c:e338b45598e34ba8ebac09b743db09de:3b5fc0bf297b00d7e2adc65825803c41$" + "version": "3.0" } } diff --git a/public/images/pokemon/exp/shiny/670-yellow.json b/public/images/pokemon/exp/shiny/670-yellow.json index 50b2d8ed3fc..ffd722006d3 100644 --- a/public/images/pokemon/exp/shiny/670-yellow.json +++ b/public/images/pokemon/exp/shiny/670-yellow.json @@ -4,219 +4,156 @@ "image": "670-yellow.png", "format": "RGBA8888", "size": { - "w": 132, - "h": 132 + "w": 491, + "h": 491 }, "scale": 1, "frames": [ { - "filename": "0002.png", + "filename": "0101.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 + "x": 4, + "y": 4, + "w": 60, + "h": 65 }, "frame": { "x": 0, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 65 } }, { - "filename": "0006.png", + "filename": "0083.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0012.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, + "x": 3, + "y": 9, + "w": 60, "h": 67 }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, "frame": { - "x": 0, - "y": 66, - "w": 40, - "h": 66 - } - }, - { - "filename": "0008.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 66 - }, - "frame": { - "x": 40, + "x": 60, "y": 0, - "w": 40, - "h": 66 + "w": 60, + "h": 67 } }, { - "filename": "0003.png", + "filename": "0102.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 5, + "w": 60, + "h": 67 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "x": 120, + "y": 0, + "w": 60, + "h": 67 } }, { - "filename": "0005.png", + "filename": "0082.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 + "x": 4, + "y": 10, + "w": 61, + "h": 68 }, "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0009.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 180, "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 + "w": 61, + "h": 68 } }, { - "filename": "0011.png", + "filename": "0100.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 0, - "w": 39, - "h": 66 - }, - "frame": { - "x": 40, - "y": 66, - "w": 39, - "h": 66 - } - }, - { - "filename": "0001.png", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 67 - }, - "spriteSourceSize": { - "x": 0, + "x": 5, "y": 2, - "w": 40, - "h": 65 + "w": 60, + "h": 68 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 241, + "y": 0, + "w": 60, + "h": 68 } }, { - "filename": "0007.png", + "filename": "0081.png", "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 }, "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 65 + "x": 4, + "y": 12, + "w": 62, + "h": 69 }, "frame": { - "x": 79, - "y": 66, - "w": 40, - "h": 65 + "x": 301, + "y": 0, + "w": 62, + "h": 69 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 56, + "h": 69 + }, + "frame": { + "x": 363, + "y": 0, + "w": 56, + "h": 69 } }, { @@ -224,20 +161,1763 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 62, + "h": 70 + }, + "frame": { + "x": 419, + "y": 0, + "w": 62, + "h": 70 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 59, + "h": 70 + }, + "frame": { + "x": 0, + "y": 65, + "w": 59, + "h": 70 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 56, + "h": 70 + }, + "frame": { + "x": 59, + "y": 67, + "w": 56, + "h": 70 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 57, + "h": 70 + }, + "frame": { + "x": 115, + "y": 67, + "w": 57, + "h": 70 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 57, + "h": 70 + }, + "frame": { + "x": 172, + "y": 68, + "w": 57, + "h": 70 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 229, + "y": 68, + "w": 63, + "h": 71 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 71 + }, + "frame": { + "x": 292, + "y": 69, + "w": 63, + "h": 71 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 355, + "y": 69, + "w": 63, + "h": 72 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 13, + "w": 63, + "h": 72 + }, + "frame": { + "x": 418, + "y": 70, + "w": 63, + "h": 72 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 53, + "h": 73 + }, + "frame": { + "x": 0, + "y": 135, + "w": 53, + "h": 73 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 53, + "y": 137, + "w": 61, + "h": 73 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 0, + "w": 54, + "h": 73 + }, + "frame": { + "x": 114, + "y": 137, + "w": 54, + "h": 73 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 168, + "y": 138, + "w": 61, + "h": 73 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 12, + "w": 61, + "h": 73 + }, + "frame": { + "x": 229, + "y": 139, + "w": 61, + "h": 73 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 49, + "h": 74 + }, + "frame": { + "x": 290, + "y": 140, + "w": 49, + "h": 74 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 1, + "w": 52, + "h": 74 + }, + "frame": { + "x": 339, + "y": 141, + "w": 52, + "h": 74 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 47, + "h": 75 + }, + "frame": { + "x": 391, + "y": 142, + "w": 47, + "h": 75 + } + }, + { + "filename": "0114.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 11, + "w": 50, + "h": 75 + }, + "frame": { + "x": 438, + "y": 142, + "w": 50, + "h": 75 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 4, + "w": 51, + "h": 76 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 0, + "y": 208, + "w": 51, + "h": 76 + } + }, + { + "filename": "0119.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 11, + "w": 57, + "h": 75 + }, + "frame": { + "x": 51, + "y": 210, + "w": 57, + "h": 75 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 55, + "h": 76 + }, + "frame": { + "x": 108, + "y": 210, + "w": 55, + "h": 76 + } + }, + { + "filename": "0115.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 163, + "y": 211, + "w": 51, + "h": 76 + } + }, + { + "filename": "0116.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 51, + "h": 76 + }, + "frame": { + "x": 214, + "y": 212, + "w": 51, + "h": 76 + } + }, + { + "filename": "0117.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 10, + "w": 53, + "h": 76 + }, + "frame": { + "x": 265, + "y": 214, + "w": 53, + "h": 76 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 49, + "h": 77 + }, + "frame": { + "x": 318, + "y": 215, + "w": 49, + "h": 77 } }, { @@ -245,20 +1925,587 @@ "rotated": false, "trimmed": true, "sourceSize": { - "w": 40, - "h": 67 + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 52, + "h": 77 + }, + "frame": { + "x": 367, + "y": 217, + "w": 52, + "h": 77 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 3, + "w": 51, + "h": 77 + }, + "frame": { + "x": 419, + "y": 217, + "w": 51, + "h": 77 + } + }, + { + "filename": "0113.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 9, + "w": 47, + "h": 77 + }, + "frame": { + "x": 0, + "y": 284, + "w": 47, + "h": 77 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 54, + "h": 77 + }, + "frame": { + "x": 47, + "y": 285, + "w": 54, + "h": 77 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 0, + "w": 55, + "h": 77 + }, + "frame": { + "x": 101, + "y": 286, + "w": 55, + "h": 77 + } + }, + { + "filename": "0118.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 9, + "w": 53, + "h": 77 + }, + "frame": { + "x": 156, + "y": 287, + "w": 53, + "h": 77 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 50, + "h": 78 + }, + "frame": { + "x": 209, + "y": 288, + "w": 50, + "h": 78 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 48, + "h": 78 + }, + "frame": { + "x": 259, + "y": 290, + "w": 48, + "h": 78 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 4, + "y": 8, + "w": 47, + "h": 78 + }, + "frame": { + "x": 307, + "y": 292, + "w": 47, + "h": 78 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 }, "spriteSourceSize": { "x": 0, - "y": 0, - "w": 38, - "h": 65 + "y": 3, + "w": 45, + "h": 79 }, "frame": { - "x": 80, - "y": 0, - "w": 38, - "h": 65 + "x": 354, + "y": 294, + "w": 45, + "h": 79 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 49, + "h": 79 + }, + "frame": { + "x": 399, + "y": 294, + "w": 49, + "h": 79 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 43, + "h": 82 + }, + "frame": { + "x": 448, + "y": 294, + "w": 43, + "h": 82 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 0, + "y": 6, + "w": 44, + "h": 80 + }, + "frame": { + "x": 0, + "y": 361, + "w": 44, + "h": 80 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 2, + "w": 48, + "h": 79 + }, + "frame": { + "x": 44, + "y": 362, + "w": 48, + "h": 79 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 3, + "w": 48, + "h": 79 + }, + "frame": { + "x": 92, + "y": 363, + "w": 48, + "h": 79 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 48, + "h": 79 + }, + "frame": { + "x": 140, + "y": 364, + "w": 48, + "h": 79 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 7, + "w": 48, + "h": 79 + }, + "frame": { + "x": 188, + "y": 366, + "w": 48, + "h": 79 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 46, + "h": 80 + }, + "frame": { + "x": 236, + "y": 368, + "w": 46, + "h": 80 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 3, + "y": 6, + "w": 47, + "h": 80 + }, + "frame": { + "x": 282, + "y": 370, + "w": 47, + "h": 80 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 4, + "w": 50, + "h": 80 + }, + "frame": { + "x": 329, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 50, + "h": 80 + }, + "frame": { + "x": 379, + "y": 373, + "w": 50, + "h": 80 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 66, + "h": 86 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 48, + "h": 81 + }, + "frame": { + "x": 429, + "y": 376, + "w": 48, + "h": 81 } } ] @@ -266,7 +2513,6 @@ ], "meta": { "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:91de02bbe0d8b5422a0590701d05eada:8288efcc5ff6f1e55757cca59d77c9b3:e33b1f5cc51f17c070e89705329e1246$" + "version": "3.0" } } diff --git a/public/images/pokemon/female/178.png b/public/images/pokemon/female/178.png index 87815289b78..96323eeea94 100644 Binary files a/public/images/pokemon/female/178.png and b/public/images/pokemon/female/178.png differ diff --git a/public/images/pokemon/female/457.png b/public/images/pokemon/female/457.png index 14c6c698db5..2aec3e26a07 100644 Binary files a/public/images/pokemon/female/457.png and b/public/images/pokemon/female/457.png differ diff --git a/public/images/pokemon/icons/2/178.png b/public/images/pokemon/icons/2/178.png index 3b604631957..9f4b97ffc1c 100644 Binary files a/public/images/pokemon/icons/2/178.png and b/public/images/pokemon/icons/2/178.png differ diff --git a/public/images/pokemon/icons/2/178s.png b/public/images/pokemon/icons/2/178s.png index 8605b01c01e..55edd478de2 100644 Binary files a/public/images/pokemon/icons/2/178s.png and b/public/images/pokemon/icons/2/178s.png differ diff --git a/public/images/pokemon/icons/variant/2/177_2.png b/public/images/pokemon/icons/variant/2/177_2.png new file mode 100644 index 00000000000..676224d2827 Binary files /dev/null and b/public/images/pokemon/icons/variant/2/177_2.png differ diff --git a/public/images/pokemon/icons/variant/2/177_3.png b/public/images/pokemon/icons/variant/2/177_3.png new file mode 100644 index 00000000000..2952d8f4926 Binary files /dev/null and b/public/images/pokemon/icons/variant/2/177_3.png differ diff --git a/public/images/pokemon/icons/variant/2/178_2.png b/public/images/pokemon/icons/variant/2/178_2.png new file mode 100644 index 00000000000..060c25138e0 Binary files /dev/null and b/public/images/pokemon/icons/variant/2/178_2.png differ diff --git a/public/images/pokemon/icons/variant/2/178_3.png b/public/images/pokemon/icons/variant/2/178_3.png new file mode 100644 index 00000000000..34d38f8cf1f Binary files /dev/null and b/public/images/pokemon/icons/variant/2/178_3.png differ diff --git a/public/images/pokemon/shiny/867.png b/public/images/pokemon/shiny/867.png index a56e107a9c4..0443deeaf9c 100644 Binary files a/public/images/pokemon/shiny/867.png and b/public/images/pokemon/shiny/867.png differ diff --git a/public/images/pokemon/shiny/female/178.png b/public/images/pokemon/shiny/female/178.png index 7695b06e155..b0d983307e4 100644 Binary files a/public/images/pokemon/shiny/female/178.png and b/public/images/pokemon/shiny/female/178.png differ diff --git a/public/images/pokemon/variant/_masterlist.json b/public/images/pokemon/variant/_masterlist.json index 3c40a16e081..11578f2e084 100644 --- a/public/images/pokemon/variant/_masterlist.json +++ b/public/images/pokemon/variant/_masterlist.json @@ -3815,6 +3815,11 @@ 1, 1 ], + "178": [ + 0, + 2, + 2 + ], "185": [ 0, 1, @@ -7833,6 +7838,11 @@ 1, 1 ], + "178": [ + 0, + 2, + 2 + ], "185": [ 0, 1, diff --git a/public/images/pokemon/variant/back/177_2.png b/public/images/pokemon/variant/back/177_2.png new file mode 100644 index 00000000000..1c775f2ef3f Binary files /dev/null and b/public/images/pokemon/variant/back/177_2.png differ diff --git a/public/images/pokemon/variant/back/177_3.png b/public/images/pokemon/variant/back/177_3.png new file mode 100644 index 00000000000..04ec33986cd Binary files /dev/null and b/public/images/pokemon/variant/back/177_3.png differ diff --git a/public/images/pokemon/variant/back/female/178_2.json b/public/images/pokemon/variant/back/female/178_2.json new file mode 100644 index 00000000000..202894b474c --- /dev/null +++ b/public/images/pokemon/variant/back/female/178_2.json @@ -0,0 +1,2372 @@ +{ + "textures": [ + { + "image": "178_2.png", + "format": "RGBA8888", + "size": { + "w": 263, + "h": 263 + }, + "scale": 1, + "frames": [ + { + "filename": "0101.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + }, + "frame": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + }, + "frame": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 64, + "h": 58 + }, + "frame": { + "x": 0, + "y": 58, + "w": 64, + "h": 58 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 64, + "h": 58 + }, + "frame": { + "x": 0, + "y": 58, + "w": 64, + "h": 58 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 58, + "h": 57 + }, + "frame": { + "x": 67, + "y": 0, + "w": 58, + "h": 57 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 58, + "h": 57 + }, + "frame": { + "x": 67, + "y": 0, + "w": 58, + "h": 57 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 59, + "h": 54 + }, + "frame": { + "x": 0, + "y": 116, + "w": 59, + "h": 54 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 59, + "h": 54 + }, + "frame": { + "x": 0, + "y": 116, + "w": 59, + "h": 54 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 55, + "h": 57 + }, + "frame": { + "x": 125, + "y": 0, + "w": 55, + "h": 57 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 55, + "h": 57 + }, + "frame": { + "x": 125, + "y": 0, + "w": 55, + "h": 57 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 54, + "h": 57 + }, + "frame": { + "x": 0, + "y": 170, + "w": 54, + "h": 57 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 54, + "h": 57 + }, + "frame": { + "x": 0, + "y": 170, + "w": 54, + "h": 57 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 54, + "h": 52 + }, + "frame": { + "x": 180, + "y": 0, + "w": 54, + "h": 52 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 54, + "h": 52 + }, + "frame": { + "x": 180, + "y": 0, + "w": 54, + "h": 52 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 48, + "h": 56 + }, + "frame": { + "x": 54, + "y": 170, + "w": 48, + "h": 56 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 48, + "h": 56 + }, + "frame": { + "x": 54, + "y": 170, + "w": 48, + "h": 56 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 48, + "h": 54 + }, + "frame": { + "x": 59, + "y": 116, + "w": 48, + "h": 54 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 48, + "h": 54 + }, + "frame": { + "x": 59, + "y": 116, + "w": 48, + "h": 54 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 199, + "y": 156, + "w": 48, + "h": 52 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 199, + "y": 156, + "w": 48, + "h": 52 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 48, + "h": 51 + }, + "frame": { + "x": 150, + "y": 162, + "w": 48, + "h": 51 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 48, + "h": 51 + }, + "frame": { + "x": 150, + "y": 162, + "w": 48, + "h": 51 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 50, + "h": 51 + }, + "frame": { + "x": 198, + "y": 208, + "w": 50, + "h": 51 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 50, + "h": 51 + }, + "frame": { + "x": 198, + "y": 208, + "w": 50, + "h": 51 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:09a3b8263891ad99a615fcb08d56ef56:420667b66547b2d5cc8ddbc8c794dd00:319c95b9f5acf1139a5c6761349cd6ab$" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/178_2.png b/public/images/pokemon/variant/back/female/178_2.png new file mode 100644 index 00000000000..3bf2b443719 Binary files /dev/null and b/public/images/pokemon/variant/back/female/178_2.png differ diff --git a/public/images/pokemon/variant/back/female/178_3.json b/public/images/pokemon/variant/back/female/178_3.json new file mode 100644 index 00000000000..a1ba7af59d3 --- /dev/null +++ b/public/images/pokemon/variant/back/female/178_3.json @@ -0,0 +1,2372 @@ +{ + "textures": [ + { + "image": "178_3.png", + "format": "RGBA8888", + "size": { + "w": 263, + "h": 263 + }, + "scale": 1, + "frames": [ + { + "filename": "0101.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + }, + "frame": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + }, + "frame": { + "x": 0, + "y": 0, + "w": 67, + "h": 58 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 64, + "h": 58 + }, + "frame": { + "x": 0, + "y": 58, + "w": 64, + "h": 58 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 3, + "y": 0, + "w": 64, + "h": 58 + }, + "frame": { + "x": 0, + "y": 58, + "w": 64, + "h": 58 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 58, + "h": 57 + }, + "frame": { + "x": 67, + "y": 0, + "w": 58, + "h": 57 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 58, + "h": 57 + }, + "frame": { + "x": 67, + "y": 0, + "w": 58, + "h": 57 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 59, + "h": 54 + }, + "frame": { + "x": 0, + "y": 116, + "w": 59, + "h": 54 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 59, + "h": 54 + }, + "frame": { + "x": 0, + "y": 116, + "w": 59, + "h": 54 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 55, + "h": 57 + }, + "frame": { + "x": 125, + "y": 0, + "w": 55, + "h": 57 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 7, + "y": 2, + "w": 55, + "h": 57 + }, + "frame": { + "x": 125, + "y": 0, + "w": 55, + "h": 57 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 54, + "h": 57 + }, + "frame": { + "x": 0, + "y": 170, + "w": 54, + "h": 57 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 4, + "y": 2, + "w": 54, + "h": 57 + }, + "frame": { + "x": 0, + "y": 170, + "w": 54, + "h": 57 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 54, + "h": 52 + }, + "frame": { + "x": 180, + "y": 0, + "w": 54, + "h": 52 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 54, + "h": 52 + }, + "frame": { + "x": 180, + "y": 0, + "w": 54, + "h": 52 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 48, + "h": 56 + }, + "frame": { + "x": 54, + "y": 170, + "w": 48, + "h": 56 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 3, + "w": 48, + "h": 56 + }, + "frame": { + "x": 54, + "y": 170, + "w": 48, + "h": 56 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 48, + "h": 54 + }, + "frame": { + "x": 59, + "y": 116, + "w": 48, + "h": 54 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 5, + "w": 48, + "h": 54 + }, + "frame": { + "x": 59, + "y": 116, + "w": 48, + "h": 54 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 102, + "y": 170, + "w": 48, + "h": 52 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 52, + "h": 52 + }, + "frame": { + "x": 180, + "y": 52, + "w": 52, + "h": 52 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 50, + "h": 52 + }, + "frame": { + "x": 64, + "y": 58, + "w": 50, + "h": 52 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 9, + "y": 7, + "w": 51, + "h": 52 + }, + "frame": { + "x": 114, + "y": 57, + "w": 51, + "h": 52 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 11, + "y": 7, + "w": 47, + "h": 52 + }, + "frame": { + "x": 107, + "y": 110, + "w": 47, + "h": 52 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 154, + "y": 109, + "w": 45, + "h": 52 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 13, + "y": 7, + "w": 45, + "h": 52 + }, + "frame": { + "x": 199, + "y": 104, + "w": 45, + "h": 52 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 199, + "y": 156, + "w": 48, + "h": 52 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 7, + "w": 48, + "h": 52 + }, + "frame": { + "x": 199, + "y": 156, + "w": 48, + "h": 52 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 48, + "h": 51 + }, + "frame": { + "x": 150, + "y": 162, + "w": 48, + "h": 51 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 48, + "h": 51 + }, + "frame": { + "x": 150, + "y": 162, + "w": 48, + "h": 51 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 9, + "w": 48, + "h": 50 + }, + "frame": { + "x": 150, + "y": 213, + "w": 48, + "h": 50 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 50, + "h": 51 + }, + "frame": { + "x": 198, + "y": 208, + "w": 50, + "h": 51 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 67, + "h": 59 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 50, + "h": 51 + }, + "frame": { + "x": 198, + "y": 208, + "w": 50, + "h": 51 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:09a3b8263891ad99a615fcb08d56ef56:420667b66547b2d5cc8ddbc8c794dd00:319c95b9f5acf1139a5c6761349cd6ab$" + } +} \ No newline at end of file diff --git a/public/images/pokemon/variant/back/female/178_3.png b/public/images/pokemon/variant/back/female/178_3.png new file mode 100644 index 00000000000..9533621c6d6 Binary files /dev/null and b/public/images/pokemon/variant/back/female/178_3.png differ diff --git a/public/images/pokemon/variant/exp/800-ultra.json b/public/images/pokemon/variant/exp/800-ultra.json index 53dd9b55df0..cab917ec271 100644 --- a/public/images/pokemon/variant/exp/800-ultra.json +++ b/public/images/pokemon/variant/exp/800-ultra.json @@ -1,21 +1,5 @@ { "1": { - "b0a080": "e552ec", - "f8f8e8": "ffe2ed", - "9b8259": "b021c5", - "e5e4c2": "ffb9f9", - "000000": "000000", - "bc9b4e": "900090", - "f8f8d0": "ff8ae9", - "e8e088": "ff49e7", - "d0b868": "d10cc7", - "7d673b": "510059", - "282828": "282828", - "f84040": "f84040", - "f88888": "1ae2e6", - "c81010": "00c2d2" - }, - "2": { "b0a080": "d96b23", "f8f8e8": "ffe1b8", "9b8259": "b43c06", @@ -30,5 +14,21 @@ "f84040": "f84040", "f88888": "f88888", "c81010": "c81010" + }, + "2": { + "b0a080": "e552ec", + "f8f8e8": "ffe2ed", + "9b8259": "b021c5", + "e5e4c2": "ffb9f9", + "000000": "000000", + "bc9b4e": "900090", + "f8f8d0": "ff8ae9", + "e8e088": "ff49e7", + "d0b868": "d10cc7", + "7d673b": "510059", + "282828": "282828", + "f84040": "f84040", + "f88888": "1ae2e6", + "c81010": "00c2d2" } } \ No newline at end of file diff --git a/public/images/pokemon/variant/female/178_2.json b/public/images/pokemon/variant/female/178_2.json new file mode 100644 index 00000000000..d2326f5acbf --- /dev/null +++ b/public/images/pokemon/variant/female/178_2.json @@ -0,0 +1,2372 @@ +{ + "textures": [ + { + "image": "178_2.png", + "format": "RGBA8888", + "size": { + "w": 224, + "h": 224 + }, + "scale": 1, + "frames": [ + { + "filename": "0101.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + }, + "frame": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + }, + "frame": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 45, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 45, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 88, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 88, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 1, + "w": 41, + "h": 59 + }, + "frame": { + "x": 131, + "y": 0, + "w": 41, + "h": 59 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 1, + "w": 41, + "h": 59 + }, + "frame": { + "x": 131, + "y": 0, + "w": 41, + "h": 59 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 39, + "h": 59 + }, + "frame": { + "x": 131, + "y": 59, + "w": 39, + "h": 59 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 39, + "h": 59 + }, + "frame": { + "x": 131, + "y": 59, + "w": 39, + "h": 59 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 37, + "h": 59 + }, + "frame": { + "x": 0, + "y": 60, + "w": 37, + "h": 59 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 37, + "h": 59 + }, + "frame": { + "x": 0, + "y": 60, + "w": 37, + "h": 59 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 40, + "h": 57 + }, + "frame": { + "x": 37, + "y": 60, + "w": 40, + "h": 57 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 40, + "h": 57 + }, + "frame": { + "x": 37, + "y": 60, + "w": 40, + "h": 57 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 36, + "h": 57 + }, + "frame": { + "x": 0, + "y": 119, + "w": 36, + "h": 57 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 36, + "h": 57 + }, + "frame": { + "x": 0, + "y": 119, + "w": 36, + "h": 57 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 115, + "w": 37, + "h": 55 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 115, + "w": 37, + "h": 55 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 77, + "y": 170, + "w": 36, + "h": 54 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 77, + "y": 170, + "w": 36, + "h": 54 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 172, + "y": 0, + "w": 36, + "h": 54 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 172, + "y": 0, + "w": 36, + "h": 54 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:898a0175e268e2bf429019b4b00a4414:3e0d176fabaa6df9ef39756046ad4ad5:319c95b9f5acf1139a5c6761349cd6ab$" + } +} diff --git a/public/images/pokemon/variant/female/178_2.png b/public/images/pokemon/variant/female/178_2.png new file mode 100644 index 00000000000..1c0fe8c9153 Binary files /dev/null and b/public/images/pokemon/variant/female/178_2.png differ diff --git a/public/images/pokemon/variant/female/178_3.json b/public/images/pokemon/variant/female/178_3.json new file mode 100644 index 00000000000..2e851f20d9d --- /dev/null +++ b/public/images/pokemon/variant/female/178_3.json @@ -0,0 +1,2372 @@ +{ + "textures": [ + { + "image": "178_3.png", + "format": "RGBA8888", + "size": { + "w": 224, + "h": 224 + }, + "scale": 1, + "frames": [ + { + "filename": "0101.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + }, + "frame": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + } + }, + { + "filename": "0102.png", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + }, + "frame": { + "x": 0, + "y": 0, + "w": 45, + "h": 60 + } + }, + { + "filename": "0103.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 45, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0104.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 45, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0105.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 88, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0106.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 43, + "h": 60 + }, + "frame": { + "x": 88, + "y": 0, + "w": 43, + "h": 60 + } + }, + { + "filename": "0099.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 1, + "w": 41, + "h": 59 + }, + "frame": { + "x": 131, + "y": 0, + "w": 41, + "h": 59 + } + }, + { + "filename": "0100.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 1, + "w": 41, + "h": 59 + }, + "frame": { + "x": 131, + "y": 0, + "w": 41, + "h": 59 + } + }, + { + "filename": "0107.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 39, + "h": 59 + }, + "frame": { + "x": 131, + "y": 59, + "w": 39, + "h": 59 + } + }, + { + "filename": "0108.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 39, + "h": 59 + }, + "frame": { + "x": 131, + "y": 59, + "w": 39, + "h": 59 + } + }, + { + "filename": "0109.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 37, + "h": 59 + }, + "frame": { + "x": 0, + "y": 60, + "w": 37, + "h": 59 + } + }, + { + "filename": "0110.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 37, + "h": 59 + }, + "frame": { + "x": 0, + "y": 60, + "w": 37, + "h": 59 + } + }, + { + "filename": "0097.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 40, + "h": 57 + }, + "frame": { + "x": 37, + "y": 60, + "w": 40, + "h": 57 + } + }, + { + "filename": "0098.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 40, + "h": 57 + }, + "frame": { + "x": 37, + "y": 60, + "w": 40, + "h": 57 + } + }, + { + "filename": "0007.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0008.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0009.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0010.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0035.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0036.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0037.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0038.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0063.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0064.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0065.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0066.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 40, + "h": 54 + }, + "frame": { + "x": 37, + "y": 117, + "w": 40, + "h": 54 + } + }, + { + "filename": "0111.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 36, + "h": 57 + }, + "frame": { + "x": 0, + "y": 119, + "w": 36, + "h": 57 + } + }, + { + "filename": "0112.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 3, + "w": 36, + "h": 57 + }, + "frame": { + "x": 0, + "y": 119, + "w": 36, + "h": 57 + } + }, + { + "filename": "0003.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0004.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0013.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0014.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0031.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0032.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0041.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0042.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0059.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0060.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0069.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0070.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 60, + "w": 37, + "h": 55 + } + }, + { + "filename": "0095.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 115, + "w": 37, + "h": 55 + } + }, + { + "filename": "0096.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 1, + "y": 5, + "w": 37, + "h": 55 + }, + "frame": { + "x": 77, + "y": 115, + "w": 37, + "h": 55 + } + }, + { + "filename": "0005.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0006.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0011.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0012.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0033.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0034.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0039.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0040.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0061.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0062.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0067.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0068.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 38, + "h": 54 + }, + "frame": { + "x": 114, + "y": 118, + "w": 38, + "h": 54 + } + }, + { + "filename": "0087.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 77, + "y": 170, + "w": 36, + "h": 54 + } + }, + { + "filename": "0088.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 77, + "y": 170, + "w": 36, + "h": 54 + } + }, + { + "filename": "0089.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0090.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0091.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0092.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 7, + "w": 36, + "h": 53 + }, + "frame": { + "x": 36, + "y": 171, + "w": 36, + "h": 53 + } + }, + { + "filename": "0001.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0002.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0015.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0016.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0029.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0030.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0043.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0044.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0057.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0058.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0071.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0072.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0085.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0086.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 152, + "y": 118, + "w": 36, + "h": 55 + } + }, + { + "filename": "0017.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0018.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0027.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0028.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0045.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0046.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0055.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0056.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0073.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0074.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0083.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0084.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 36, + "h": 55 + }, + "frame": { + "x": 170, + "y": 59, + "w": 36, + "h": 55 + } + }, + { + "filename": "0093.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 172, + "y": 0, + "w": 36, + "h": 54 + } + }, + { + "filename": "0094.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 6, + "w": 36, + "h": 54 + }, + "frame": { + "x": 172, + "y": 0, + "w": 36, + "h": 54 + } + }, + { + "filename": "0019.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0020.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0025.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0026.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0047.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0048.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0053.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0054.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0075.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0076.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0081.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0082.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 35, + "h": 55 + }, + "frame": { + "x": 188, + "y": 114, + "w": 35, + "h": 55 + } + }, + { + "filename": "0021.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0022.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0023.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0024.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0049.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0050.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0051.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0052.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0077.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0078.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0079.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + }, + { + "filename": "0080.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 45, + "h": 60 + }, + "spriteSourceSize": { + "x": 2, + "y": 5, + "w": 34, + "h": 55 + }, + "frame": { + "x": 188, + "y": 169, + "w": 34, + "h": 55 + } + } + ] + } + ], + "meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "3.0", + "smartupdate": "$TexturePacker:SmartUpdate:898a0175e268e2bf429019b4b00a4414:3e0d176fabaa6df9ef39756046ad4ad5:319c95b9f5acf1139a5c6761349cd6ab$" + } +} diff --git a/public/images/pokemon/variant/female/178_3.png b/public/images/pokemon/variant/female/178_3.png new file mode 100644 index 00000000000..0ca5fe14c72 Binary files /dev/null and b/public/images/pokemon/variant/female/178_3.png differ diff --git a/public/images/pokemon_icons_1v.json b/public/images/pokemon_icons_1v.json index dccfb2121d2..4400b9d0213 100644 --- a/public/images/pokemon_icons_1v.json +++ b/public/images/pokemon_icons_1v.json @@ -1,4493 +1,1740 @@ -{ - "textures": [ - { - "image": "pokemon_icons_1v.png", - "format": "RGBA8888", - "size": { - "w": 248, - "h": 480 - }, - "scale": 1, - "frames": [ - { - "filename": "6-mega-x_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 25 - }, - "frame": { - "x": 0, - "y": 0, - "w": 40, - "h": 25 - } - }, - { - "filename": "6-mega-x_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 0, - "y": 2, - "w": 40, - "h": 25 - }, - "frame": { - "x": 0, - "y": 25, - "w": 40, - "h": 25 - } - }, - { - "filename": "6-mega-y_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 38, - "h": 25 - }, - "frame": { - "x": 40, - "y": 0, - "w": 38, - "h": 25 - } - }, - { - "filename": "6-mega-y_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 38, - "h": 25 - }, - "frame": { - "x": 0, - "y": 50, - "w": 38, - "h": 25 - } - }, - { - "filename": "94-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 34, - "h": 29 - }, - "frame": { - "x": 0, - "y": 75, - "w": 34, - "h": 29 - } - }, - { - "filename": "94-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 34, - "h": 29 - }, - "frame": { - "x": 0, - "y": 104, - "w": 34, - "h": 29 - } - }, - { - "filename": "94-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 34, - "h": 29 - }, - "frame": { - "x": 0, - "y": 133, - "w": 34, - "h": 29 - } - }, - { - "filename": "3-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 162, - "w": 32, - "h": 30 - } - }, - { - "filename": "3-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 192, - "w": 32, - "h": 30 - } - }, - { - "filename": "94-gigantamax_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 222, - "w": 32, - "h": 30 - } - }, - { - "filename": "94-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 252, - "w": 32, - "h": 30 - } - }, - { - "filename": "94-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 282, - "w": 32, - "h": 30 - } - }, - { - "filename": "6_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 32, - "h": 27 - }, - "frame": { - "x": 0, - "y": 312, - "w": 32, - "h": 27 - } - }, - { - "filename": "6_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 32, - "h": 27 - }, - "frame": { - "x": 0, - "y": 339, - "w": 32, - "h": 27 - } - }, - { - "filename": "130-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 30, - "h": 29 - }, - "frame": { - "x": 0, - "y": 366, - "w": 30, - "h": 29 - } - }, - { - "filename": "130-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 30, - "h": 29 - }, - "frame": { - "x": 0, - "y": 395, - "w": 30, - "h": 29 - } - }, - { - "filename": "9-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 30, - "h": 28 - }, - "frame": { - "x": 0, - "y": 424, - "w": 30, - "h": 28 - } - }, - { - "filename": "131-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 31, - "h": 28 - }, - "frame": { - "x": 0, - "y": 452, - "w": 31, - "h": 28 - } - }, - { - "filename": "127-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 31, - "h": 25 - }, - "frame": { - "x": 40, - "y": 25, - "w": 31, - "h": 25 - } - }, - { - "filename": "127-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 31, - "h": 25 - }, - "frame": { - "x": 78, - "y": 0, - "w": 31, - "h": 25 - } - }, - { - "filename": "131-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 31, - "h": 28 - }, - "frame": { - "x": 38, - "y": 50, - "w": 31, - "h": 28 - } - }, - { - "filename": "142-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 32, - "h": 24 - }, - "frame": { - "x": 71, - "y": 25, - "w": 32, - "h": 24 - } - }, - { - "filename": "142-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 32, - "h": 24 - }, - "frame": { - "x": 109, - "y": 0, - "w": 32, - "h": 24 - } - }, - { - "filename": "3_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 30, - "h": 24 - }, - "frame": { - "x": 141, - "y": 0, - "w": 30, - "h": 24 - } - }, - { - "filename": "3_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 30, - "h": 24 - }, - "frame": { - "x": 171, - "y": 0, - "w": 30, - "h": 24 - } - }, - { - "filename": "9-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 30, - "h": 28 - }, - "frame": { - "x": 34, - "y": 78, - "w": 30, - "h": 28 - } - }, - { - "filename": "9-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 28 - }, - "frame": { - "x": 34, - "y": 106, - "w": 29, - "h": 28 - } - }, - { - "filename": "9-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 28 - }, - "frame": { - "x": 34, - "y": 134, - "w": 29, - "h": 28 - } - }, - { - "filename": "130_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 28 - }, - "frame": { - "x": 32, - "y": 162, - "w": 29, - "h": 28 - } - }, - { - "filename": "130_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 28 - }, - "frame": { - "x": 32, - "y": 190, - "w": 29, - "h": 28 - } - }, - { - "filename": "3-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 26 - }, - "frame": { - "x": 32, - "y": 218, - "w": 29, - "h": 26 - } - }, - { - "filename": "3-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 26 - }, - "frame": { - "x": 32, - "y": 244, - "w": 29, - "h": 26 - } - }, - { - "filename": "78_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 29, - "h": 26 - }, - "frame": { - "x": 32, - "y": 270, - "w": 29, - "h": 26 - } - }, - { - "filename": "78_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 29, - "h": 26 - }, - "frame": { - "x": 32, - "y": 296, - "w": 29, - "h": 26 - } - }, - { - "filename": "93_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 32, - "y": 322, - "w": 30, - "h": 26 - } - }, - { - "filename": "93_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 201, - "y": 0, - "w": 30, - "h": 26 - } - }, - { - "filename": "133_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 231, - "y": 0, - "w": 17, - "h": 18 - } - }, - { - "filename": "93_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 32, - "y": 348, - "w": 30, - "h": 26 - } - }, - { - "filename": "6-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 30 - }, - "frame": { - "x": 30, - "y": 374, - "w": 24, - "h": 30 - } - }, - { - "filename": "6-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 30 - }, - "frame": { - "x": 30, - "y": 404, - "w": 24, - "h": 30 - } - }, - { - "filename": "133_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 231, - "y": 18, - "w": 17, - "h": 18 - } - }, - { - "filename": "146_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 28, - "h": 18 - }, - "frame": { - "x": 30, - "y": 434, - "w": 28, - "h": 18 - } - }, - { - "filename": "85_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 31, - "y": 452, - "w": 29, - "h": 25 - } - }, - { - "filename": "52-gigantamax_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 23, - "h": 30 - }, - "frame": { - "x": 54, - "y": 374, - "w": 23, - "h": 30 - } - }, - { - "filename": "52-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 23, - "h": 30 - }, - "frame": { - "x": 54, - "y": 404, - "w": 23, - "h": 30 - } - }, - { - "filename": "84_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 18 - }, - "frame": { - "x": 58, - "y": 434, - "w": 21, - "h": 18 - } - }, - { - "filename": "85_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 60, - "y": 452, - "w": 29, - "h": 25 - } - }, - { - "filename": "52-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 23, - "h": 30 - }, - "frame": { - "x": 64, - "y": 78, - "w": 23, - "h": 30 - } - }, - { - "filename": "150-mega-y_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 0, - "w": 20, - "h": 30 - }, - "frame": { - "x": 63, - "y": 108, - "w": 20, - "h": 30 - } - }, - { - "filename": "9_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 63, - "y": 138, - "w": 25, - "h": 24 - } - }, - { - "filename": "85_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 61, - "y": 162, - "w": 29, - "h": 25 - } - }, - { - "filename": "57_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 61, - "y": 187, - "w": 28, - "h": 23 - } - }, - { - "filename": "57_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 61, - "y": 210, - "w": 28, - "h": 23 - } - }, - { - "filename": "57_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 61, - "y": 233, - "w": 28, - "h": 23 - } - }, - { - "filename": "71_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 61, - "y": 256, - "w": 28, - "h": 23 - } - }, - { - "filename": "71_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 61, - "y": 279, - "w": 28, - "h": 23 - } - }, - { - "filename": "56_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 28, - "h": 20 - }, - "frame": { - "x": 61, - "y": 302, - "w": 28, - "h": 20 - } - }, - { - "filename": "150-mega-y_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 0, - "w": 20, - "h": 30 - }, - "frame": { - "x": 62, - "y": 322, - "w": 20, - "h": 30 - } - }, - { - "filename": "8_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 24, - "h": 22 - }, - "frame": { - "x": 62, - "y": 352, - "w": 24, - "h": 22 - } - }, - { - "filename": "150-mega-x_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 26 - }, - "frame": { - "x": 77, - "y": 374, - "w": 21, - "h": 26 - } - }, - { - "filename": "150-mega-x_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 26 - }, - "frame": { - "x": 77, - "y": 400, - "w": 21, - "h": 26 - } - }, - { - "filename": "151_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 79, - "y": 426, - "w": 23, - "h": 25 - } - }, - { - "filename": "151_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 89, - "y": 451, - "w": 23, - "h": 25 - } - }, - { - "filename": "9_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 82, - "y": 322, - "w": 25, - "h": 24 - } - }, - { - "filename": "94_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 86, - "y": 346, - "w": 24, - "h": 24 - } - }, - { - "filename": "94_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 98, - "y": 370, - "w": 24, - "h": 24 - } - }, - { - "filename": "94_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 98, - "y": 394, - "w": 24, - "h": 24 - } - }, - { - "filename": "129_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 102, - "y": 418, - "w": 22, - "h": 24 - } - }, - { - "filename": "129_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 103, - "y": 25, - "w": 22, - "h": 24 - } - }, - { - "filename": "142_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 29, - "h": 22 - }, - "frame": { - "x": 125, - "y": 24, - "w": 29, - "h": 22 - } - }, - { - "filename": "142_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 29, - "h": 22 - }, - "frame": { - "x": 154, - "y": 24, - "w": 29, - "h": 22 - } - }, - { - "filename": "29_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 183, - "y": 24, - "w": 18, - "h": 19 - } - }, - { - "filename": "145_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 29, - "h": 19 - }, - "frame": { - "x": 201, - "y": 26, - "w": 29, - "h": 19 - } - }, - { - "filename": "29_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 230, - "y": 36, - "w": 18, - "h": 19 - } - }, - { - "filename": "5_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 69, - "y": 55, - "w": 22, - "h": 23 - } - }, - { - "filename": "42_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 26, - "h": 22 - }, - "frame": { - "x": 91, - "y": 49, - "w": 26, - "h": 22 - } - }, - { - "filename": "42_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 26, - "h": 22 - }, - "frame": { - "x": 91, - "y": 71, - "w": 26, - "h": 22 - } - }, - { - "filename": "145_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 29, - "h": 19 - }, - "frame": { - "x": 87, - "y": 93, - "w": 29, - "h": 19 - } - }, - { - "filename": "42_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 26, - "h": 22 - }, - "frame": { - "x": 83, - "y": 112, - "w": 26, - "h": 22 - } - }, - { - "filename": "5_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 88, - "y": 134, - "w": 22, - "h": 23 - } - }, - { - "filename": "31_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 90, - "y": 157, - "w": 23, - "h": 23 - } - }, - { - "filename": "145_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 29, - "h": 19 - }, - "frame": { - "x": 125, - "y": 46, - "w": 29, - "h": 19 - } - }, - { - "filename": "56_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 28, - "h": 20 - }, - "frame": { - "x": 154, - "y": 46, - "w": 28, - "h": 20 - } - }, - { - "filename": "56_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 28, - "h": 20 - }, - "frame": { - "x": 117, - "y": 65, - "w": 28, - "h": 20 - } - }, - { - "filename": "144_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 20 - }, - "frame": { - "x": 145, - "y": 66, - "w": 27, - "h": 20 - } - }, - { - "filename": "146_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 28, - "h": 18 - }, - "frame": { - "x": 117, - "y": 85, - "w": 28, - "h": 18 - } - }, - { - "filename": "144_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 20 - }, - "frame": { - "x": 145, - "y": 86, - "w": 27, - "h": 20 - } - }, - { - "filename": "146_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 28, - "h": 18 - }, - "frame": { - "x": 116, - "y": 103, - "w": 28, - "h": 18 - } - }, - { - "filename": "144_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 20 - }, - "frame": { - "x": 144, - "y": 106, - "w": 27, - "h": 20 - } - }, - { - "filename": "31_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 172, - "y": 66, - "w": 23, - "h": 23 - } - }, - { - "filename": "8_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 24, - "h": 22 - }, - "frame": { - "x": 172, - "y": 89, - "w": 24, - "h": 22 - } - }, - { - "filename": "20_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 171, - "y": 111, - "w": 25, - "h": 21 - } - }, - { - "filename": "2_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 182, - "y": 46, - "w": 21, - "h": 20 - } - }, - { - "filename": "83_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 203, - "y": 45, - "w": 26, - "h": 22 - } - }, - { - "filename": "30_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 229, - "y": 55, - "w": 19, - "h": 22 - } - }, - { - "filename": "83_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 195, - "y": 67, - "w": 26, - "h": 22 - } - }, - { - "filename": "86_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 196, - "y": 89, - "w": 25, - "h": 23 - } - }, - { - "filename": "20_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 196, - "y": 112, - "w": 25, - "h": 21 - } - }, - { - "filename": "86_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 221, - "y": 77, - "w": 25, - "h": 23 - } - }, - { - "filename": "86_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 221, - "y": 100, - "w": 25, - "h": 23 - } - }, - { - "filename": "87_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 221, - "y": 123, - "w": 25, - "h": 23 - } - }, - { - "filename": "31_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 90, - "y": 180, - "w": 23, - "h": 23 - } - }, - { - "filename": "38_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 89, - "y": 203, - "w": 24, - "h": 23 - } - }, - { - "filename": "38_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 89, - "y": 226, - "w": 24, - "h": 23 - } - }, - { - "filename": "77_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 89, - "y": 249, - "w": 24, - "h": 23 - } - }, - { - "filename": "77_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 89, - "y": 272, - "w": 24, - "h": 23 - } - }, - { - "filename": "87_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 89, - "y": 295, - "w": 25, - "h": 23 - } - }, - { - "filename": "87_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 110, - "y": 121, - "w": 25, - "h": 23 - } - }, - { - "filename": "112_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 135, - "y": 126, - "w": 25, - "h": 23 - } - }, - { - "filename": "47_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 113, - "y": 144, - "w": 22, - "h": 22 - } - }, - { - "filename": "112_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 113, - "y": 166, - "w": 25, - "h": 23 - } - }, - { - "filename": "149_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 113, - "y": 189, - "w": 25, - "h": 22 - } - }, - { - "filename": "149_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 113, - "y": 211, - "w": 25, - "h": 22 - } - }, - { - "filename": "82_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 113, - "y": 233, - "w": 24, - "h": 22 - } - }, - { - "filename": "82_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 113, - "y": 255, - "w": 24, - "h": 22 - } - }, - { - "filename": "7_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 21, - "h": 17 - }, - "frame": { - "x": 135, - "y": 149, - "w": 21, - "h": 17 - } - }, - { - "filename": "36_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 138, - "y": 166, - "w": 20, - "h": 23 - } - }, - { - "filename": "36_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 138, - "y": 189, - "w": 20, - "h": 23 - } - }, - { - "filename": "19_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 138, - "y": 212, - "w": 20, - "h": 21 - } - }, - { - "filename": "47_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 137, - "y": 233, - "w": 22, - "h": 22 - } - }, - { - "filename": "47_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 137, - "y": 255, - "w": 22, - "h": 22 - } - }, - { - "filename": "84_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 18 - }, - "frame": { - "x": 113, - "y": 277, - "w": 21, - "h": 18 - } - }, - { - "filename": "119_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 25, - "h": 20 - }, - "frame": { - "x": 134, - "y": 277, - "w": 25, - "h": 20 - } - }, - { - "filename": "150_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 114, - "y": 295, - "w": 20, - "h": 23 - } - }, - { - "filename": "119_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 25, - "h": 20 - }, - "frame": { - "x": 134, - "y": 297, - "w": 25, - "h": 20 - } - }, - { - "filename": "53_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 107, - "y": 318, - "w": 23, - "h": 22 - } - }, - { - "filename": "150_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 110, - "y": 340, - "w": 20, - "h": 23 - } - }, - { - "filename": "119_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 25, - "h": 20 - }, - "frame": { - "x": 160, - "y": 132, - "w": 25, - "h": 20 - } - }, - { - "filename": "111_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 24, - "h": 20 - }, - "frame": { - "x": 185, - "y": 133, - "w": 24, - "h": 20 - } - }, - { - "filename": "53_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 158, - "y": 152, - "w": 23, - "h": 22 - } - }, - { - "filename": "53_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 158, - "y": 174, - "w": 23, - "h": 22 - } - }, - { - "filename": "51_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 158, - "y": 196, - "w": 22, - "h": 22 - } - }, - { - "filename": "131_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 24, - "h": 21 - }, - "frame": { - "x": 181, - "y": 153, - "w": 24, - "h": 21 - } - }, - { - "filename": "131_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 24, - "h": 21 - }, - "frame": { - "x": 181, - "y": 174, - "w": 24, - "h": 21 - } - }, - { - "filename": "81_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 23, - "h": 15 - }, - "frame": { - "x": 158, - "y": 218, - "w": 23, - "h": 15 - } - }, - { - "filename": "51_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 159, - "y": 233, - "w": 22, - "h": 22 - } - }, - { - "filename": "139_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 159, - "y": 255, - "w": 22, - "h": 22 - } - }, - { - "filename": "139_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 159, - "y": 277, - "w": 22, - "h": 22 - } - }, - { - "filename": "46_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 159, - "y": 299, - "w": 22, - "h": 20 - } - }, - { - "filename": "30_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 205, - "y": 153, - "w": 19, - "h": 22 - } - }, - { - "filename": "111_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 24, - "h": 20 - }, - "frame": { - "x": 224, - "y": 146, - "w": 24, - "h": 20 - } - }, - { - "filename": "118_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 24, - "h": 19 - }, - "frame": { - "x": 224, - "y": 166, - "w": 24, - "h": 19 - } - }, - { - "filename": "113_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 205, - "y": 175, - "w": 19, - "h": 20 - } - }, - { - "filename": "118_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 24, - "h": 19 - }, - "frame": { - "x": 224, - "y": 185, - "w": 24, - "h": 19 - } - }, - { - "filename": "125_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 130, - "y": 318, - "w": 21, - "h": 22 - } - }, - { - "filename": "125_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 130, - "y": 340, - "w": 21, - "h": 22 - } - }, - { - "filename": "92_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 151, - "y": 319, - "w": 23, - "h": 21 - } - }, - { - "filename": "92_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 151, - "y": 340, - "w": 23, - "h": 21 - } - }, - { - "filename": "125_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 174, - "y": 319, - "w": 21, - "h": 22 - } - }, - { - "filename": "2_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 174, - "y": 341, - "w": 21, - "h": 20 - } - }, - { - "filename": "118_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 24, - "h": 19 - }, - "frame": { - "x": 151, - "y": 361, - "w": 24, - "h": 19 - } - }, - { - "filename": "4_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 130, - "y": 362, - "w": 21, - "h": 19 - } - }, - { - "filename": "1_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 175, - "y": 361, - "w": 20, - "h": 19 - } - }, - { - "filename": "92_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 122, - "y": 381, - "w": 23, - "h": 21 - } - }, - { - "filename": "81_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 23, - "h": 15 - }, - "frame": { - "x": 122, - "y": 402, - "w": 23, - "h": 15 - } - }, - { - "filename": "148_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 124, - "y": 417, - "w": 22, - "h": 22 - } - }, - { - "filename": "148_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 145, - "y": 381, - "w": 22, - "h": 22 - } - }, - { - "filename": "127_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 167, - "y": 380, - "w": 23, - "h": 21 - } - }, - { - "filename": "50_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 145, - "y": 403, - "w": 15, - "h": 14 - } - }, - { - "filename": "19_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 146, - "y": 417, - "w": 20, - "h": 21 - } - }, - { - "filename": "50_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 160, - "y": 403, - "w": 15, - "h": 14 - } - }, - { - "filename": "52_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 21 - }, - "frame": { - "x": 166, - "y": 417, - "w": 21, - "h": 21 - } - }, - { - "filename": "101_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 16, - "h": 16 - }, - "frame": { - "x": 175, - "y": 401, - "w": 16, - "h": 16 - } - }, - { - "filename": "52_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 21 - }, - "frame": { - "x": 190, - "y": 380, - "w": 21, - "h": 21 - } - }, - { - "filename": "1_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 191, - "y": 401, - "w": 20, - "h": 19 - } - }, - { - "filename": "127_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 187, - "y": 420, - "w": 23, - "h": 21 - } - }, - { - "filename": "46_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 124, - "y": 439, - "w": 22, - "h": 20 - } - }, - { - "filename": "134_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 112, - "y": 459, - "w": 23, - "h": 21 - } - }, - { - "filename": "134_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 135, - "y": 459, - "w": 23, - "h": 21 - } - }, - { - "filename": "136_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 146, - "y": 438, - "w": 23, - "h": 21 - } - }, - { - "filename": "136_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 158, - "y": 459, - "w": 23, - "h": 21 - } - }, - { - "filename": "29_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 169, - "y": 438, - "w": 18, - "h": 19 - } - }, - { - "filename": "136_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 187, - "y": 441, - "w": 23, - "h": 21 - } - }, - { - "filename": "84_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 18 - }, - "frame": { - "x": 181, - "y": 462, - "w": 21, - "h": 18 - } - }, - { - "filename": "147_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 20, - "h": 18 - }, - "frame": { - "x": 202, - "y": 462, - "w": 20, - "h": 18 - } - }, - { - "filename": "46_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 181, - "y": 195, - "w": 22, - "h": 20 - } - }, - { - "filename": "41_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 20 - }, - "frame": { - "x": 203, - "y": 195, - "w": 21, - "h": 20 - } - }, - { - "filename": "52_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 21 - }, - "frame": { - "x": 181, - "y": 215, - "w": 21, - "h": 21 - } - }, - { - "filename": "70_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 202, - "y": 215, - "w": 22, - "h": 20 - } - }, - { - "filename": "70_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 224, - "y": 204, - "w": 22, - "h": 20 - } - }, - { - "filename": "79_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 21 - }, - "frame": { - "x": 181, - "y": 236, - "w": 21, - "h": 21 - } - }, - { - "filename": "41_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 20 - }, - "frame": { - "x": 202, - "y": 235, - "w": 21, - "h": 20 - } - }, - { - "filename": "41_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 20 - }, - "frame": { - "x": 181, - "y": 257, - "w": 21, - "h": 20 - } - }, - { - "filename": "135_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 202, - "y": 255, - "w": 20, - "h": 21 - } - }, - { - "filename": "135_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 181, - "y": 277, - "w": 20, - "h": 21 - } - }, - { - "filename": "135_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 181, - "y": 298, - "w": 20, - "h": 21 - } - }, - { - "filename": "4_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 224, - "y": 224, - "w": 21, - "h": 19 - } - }, - { - "filename": "7_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 21, - "h": 17 - }, - "frame": { - "x": 223, - "y": 243, - "w": 21, - "h": 17 - } - }, - { - "filename": "37_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 222, - "y": 260, - "w": 20, - "h": 20 - } - }, - { - "filename": "141_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 21 - }, - "frame": { - "x": 195, - "y": 319, - "w": 19, - "h": 21 - } - }, - { - "filename": "141_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 21 - }, - "frame": { - "x": 195, - "y": 340, - "w": 19, - "h": 21 - } - }, - { - "filename": "123_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 195, - "y": 361, - "w": 19, - "h": 19 - } - }, - { - "filename": "37_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 202, - "y": 276, - "w": 20, - "h": 20 - } - }, - { - "filename": "113_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 201, - "y": 296, - "w": 19, - "h": 20 - } - }, - { - "filename": "147_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 20, - "h": 18 - }, - "frame": { - "x": 222, - "y": 280, - "w": 20, - "h": 18 - } - }, - { - "filename": "113_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 220, - "y": 298, - "w": 19, - "h": 20 - } - }, - { - "filename": "123_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 214, - "y": 318, - "w": 19, - "h": 19 - } - }, - { - "filename": "123_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 214, - "y": 337, - "w": 19, - "h": 19 - } - }, - { - "filename": "35_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 214, - "y": 356, - "w": 18, - "h": 19 - } - }, - { - "filename": "101_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 16, - "h": 16 - }, - "frame": { - "x": 232, - "y": 356, - "w": 16, - "h": 16 - } - }, - { - "filename": "132_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 15, - "w": 16, - "h": 13 - }, - "frame": { - "x": 232, - "y": 372, - "w": 16, - "h": 13 - } - }, - { - "filename": "35_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 214, - "y": 375, - "w": 18, - "h": 19 - } - }, - { - "filename": "132_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 15, - "w": 16, - "h": 13 - }, - "frame": { - "x": 232, - "y": 385, - "w": 16, - "h": 13 - } - }, - { - "filename": "114_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 19, - "h": 18 - }, - "frame": { - "x": 211, - "y": 394, - "w": 19, - "h": 18 - } - }, - { - "filename": "138_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 230, - "y": 398, - "w": 18, - "h": 18 - } - }, - { - "filename": "114_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 19, - "h": 18 - }, - "frame": { - "x": 211, - "y": 412, - "w": 19, - "h": 18 - } - }, - { - "filename": "138_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 230, - "y": 416, - "w": 18, - "h": 18 - } - }, - { - "filename": "69_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 13, - "w": 20, - "h": 15 - }, - "frame": { - "x": 210, - "y": 430, - "w": 20, - "h": 15 - } - }, - { - "filename": "69_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 13, - "w": 20, - "h": 15 - }, - "frame": { - "x": 210, - "y": 445, - "w": 20, - "h": 15 - } - }, - { - "filename": "140_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 15, - "w": 16, - "h": 13 - }, - "frame": { - "x": 230, - "y": 434, - "w": 16, - "h": 13 - } - }, - { - "filename": "140_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 15, - "w": 16, - "h": 13 - }, - "frame": { - "x": 230, - "y": 447, - "w": 16, - "h": 13 - } - }, - { - "filename": "100_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 14, - "h": 14 - }, - "frame": { - "x": 222, - "y": 460, - "w": 14, - "h": 14 - } - }, - { - "filename": "100_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 14, - "h": 14 - }, - "frame": { - "x": 233, - "y": 318, - "w": 14, - "h": 14 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f68174181676c13948ca79a046fcbf7e:94e2e7f92900fbe73acb909ce5c02904:2fc2d7db306a93e9369e20846ccef45c$" - } -} +{ "frames": { + "100_2": { + "frame": { "x": 390, "y": 53, "w": 14, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 14, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "100_3": { + "frame": { "x": 328, "y": 30, "w": 14, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 14, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "101_2": { + "frame": { "x": 287, "y": 172, "w": 16, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 16, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "101_3": { + "frame": { "x": 263, "y": 156, "w": 16, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 16, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "111_2": { + "frame": { "x": 211, "y": 226, "w": 24, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 24, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "111_3": { + "frame": { "x": 265, "y": 233, "w": 24, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 24, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "112_2": { + "frame": { "x": 347, "y": 125, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "112_3": { + "frame": { "x": 322, "y": 125, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "113_1": { + "frame": { "x": 421, "y": 158, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "113_2": { + "frame": { "x": 299, "y": 277, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "113_3": { + "frame": { "x": 280, "y": 276, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "114_2": { + "frame": { "x": 212, "y": 297, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "114_3": { + "frame": { "x": 336, "y": 298, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "116_2": { + "frame": { "x": 142, "y": 303, "w": 18, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 18, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "116_3": { + "frame": { "x": 17, "y": 303, "w": 18, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 18, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "117_2": { + "frame": { "x": 92, "y": 226, "w": 24, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 24, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "117_3": { + "frame": { "x": 376, "y": 223, "w": 24, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 24, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "118_1": { + "frame": { "x": 400, "y": 241, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "118_2": { + "frame": { "x": 20, "y": 242, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "118_3": { + "frame": { "x": 372, "y": 243, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "119_1": { + "frame": { "x": 400, "y": 200, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "119_2": { + "frame": { "x": 196, "y": 199, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "119_3": { + "frame": { "x": 0, "y": 199, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "120_2": { + "frame": { "x": 77, "y": 306, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "120_3": { + "frame": { "x": 94, "y": 311, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "121_2": { + "frame": { "x": 355, "y": 300, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "121_3": { + "frame": { "x": 58, "y": 296, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "123_1": { + "frame": { "x": 148, "y": 284, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "123_2": { + "frame": { "x": 0, "y": 284, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "123_3": { + "frame": { "x": 173, "y": 283, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "125_1": { + "frame": { "x": 69, "y": 235, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "125_2": { + "frame": { "x": 311, "y": 235, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "125_3": { + "frame": { "x": 235, "y": 234, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "126_2": { + "frame": { "x": 287, "y": 188, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "126_3": { + "frame": { "x": 378, "y": 178, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "127-mega_2": { + "frame": { "x": 0, "y": 54, "w": 31, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 31, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "127-mega_3": { + "frame": { "x": 359, "y": 53, "w": 31, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 31, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "127_2": { + "frame": { "x": 0, "y": 219, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "127_3": { + "frame": { "x": 46, "y": 223, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "129_2": { + "frame": { "x": 213, "y": 175, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "129_3": { + "frame": { "x": 418, "y": 0, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "130-mega_2": { + "frame": { "x": 30, "y": 25, "w": 30, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 30, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "130-mega_3": { + "frame": { "x": 0, "y": 25, "w": 30, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 30, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "130_2": { + "frame": { "x": 210, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "130_3": { + "frame": { "x": 239, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "131-gigantamax_2": { + "frame": { "x": 373, "y": 25, "w": 31, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 31, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "131-gigantamax_3": { + "frame": { "x": 342, "y": 25, "w": 31, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 31, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "131_2": { + "frame": { "x": 172, "y": 198, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "131_3": { + "frame": { "x": 354, "y": 194, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "132_2": { + "frame": { "x": 231, "y": 311, "w": 16, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 15, "w": 16, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "132_3": { + "frame": { "x": 247, "y": 312, "w": 16, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 15, "w": 16, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "133_2": { + "frame": { "x": 0, "y": 303, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "133_3": { + "frame": { "x": 35, "y": 305, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "134_2": { + "frame": { "x": 165, "y": 219, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "134_3": { + "frame": { "x": 69, "y": 214, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "135_1": { + "frame": { "x": 20, "y": 261, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "135_2": { + "frame": { "x": 153, "y": 263, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "135_3": { + "frame": { "x": 396, "y": 260, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "136_1": { + "frame": { "x": 23, "y": 221, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "136_2": { + "frame": { "x": 400, "y": 220, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "136_3": { + "frame": { "x": 142, "y": 217, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "137_2": { + "frame": { "x": 280, "y": 296, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "137_3": { + "frame": { "x": 299, "y": 297, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "138_2": { + "frame": { "x": 415, "y": 301, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "138_3": { + "frame": { "x": 167, "y": 302, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "139_2": { + "frame": { "x": 47, "y": 201, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "139_3": { + "frame": { "x": 243, "y": 212, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "140_2": { + "frame": { "x": 263, "y": 312, "w": 16, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 15, "w": 16, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "140_3": { + "frame": { "x": 424, "y": 239, "w": 16, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 15, "w": 16, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "141_2": { + "frame": { "x": 261, "y": 276, "w": 19, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 19, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "141_3": { + "frame": { "x": 214, "y": 276, "w": 19, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 19, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "142-mega_2": { + "frame": { "x": 268, "y": 56, "w": 32, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 32, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "142-mega_3": { + "frame": { "x": 62, "y": 57, "w": 32, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 32, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "142_2": { + "frame": { "x": 322, "y": 103, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "142_3": { + "frame": { "x": 351, "y": 103, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "144_1": { + "frame": { "x": 304, "y": 168, "w": 27, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 27, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "144_2": { + "frame": { "x": 49, "y": 158, "w": 27, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 27, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "144_3": { + "frame": { "x": 394, "y": 158, "w": 27, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 27, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "145_1": { + "frame": { "x": 77, "y": 155, "w": 29, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 29, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "145_2": { + "frame": { "x": 130, "y": 153, "w": 29, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 29, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "145_3": { + "frame": { "x": 159, "y": 153, "w": 29, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 29, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "146_1": { + "frame": { "x": 70, "y": 196, "w": 28, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 28, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "146_2": { + "frame": { "x": 122, "y": 195, "w": 28, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 28, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "146_3": { + "frame": { "x": 258, "y": 194, "w": 28, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 28, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "147_2": { + "frame": { "x": 192, "y": 287, "w": 20, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 20, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "147_3": { + "frame": { "x": 38, "y": 287, "w": 20, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 20, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "148_2": { + "frame": { "x": 98, "y": 204, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "148_3": { + "frame": { "x": 378, "y": 201, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "149_2": { + "frame": { "x": 188, "y": 155, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "149_3": { + "frame": { "x": 24, "y": 156, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "150-mega-x_2": { + "frame": { "x": 106, "y": 155, "w": 21, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 21, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "150-mega-x_3": { + "frame": { "x": 242, "y": 156, "w": 21, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 21, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "150-mega-y_2": { + "frame": { "x": 175, "y": 107, "w": 20, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 20, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "150-mega-y_3": { + "frame": { "x": 407, "y": 108, "w": 20, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 20, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "150_2": { + "frame": { "x": 352, "y": 236, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "150_3": { + "frame": { "x": 332, "y": 235, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "151_2": { + "frame": { "x": 195, "y": 130, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "151_3": { + "frame": { "x": 231, "y": 127, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "19_2": { + "frame": { "x": 321, "y": 258, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "19_3": { + "frame": { "x": 0, "y": 263, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1_2": { + "frame": { "x": 338, "y": 279, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1_3": { + "frame": { "x": 318, "y": 279, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "20_2": { + "frame": { "x": 174, "y": 177, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "20_3": { + "frame": { "x": 23, "y": 178, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "23_2": { + "frame": { "x": 416, "y": 280, "w": 18, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 18, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "23_3": { + "frame": { "x": 20, "y": 282, "w": 18, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 18, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "24_2": { + "frame": { "x": 138, "y": 238, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "24_3": { + "frame": { "x": 0, "y": 240, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "29_1": { + "frame": { "x": 130, "y": 133, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "29_2": { + "frame": { "x": 397, "y": 299, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "29_3": { + "frame": { "x": 379, "y": 299, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2_2": { + "frame": { "x": 362, "y": 262, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2_3": { + "frame": { "x": 173, "y": 263, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "3-gigantamax_2": { + "frame": { "x": 214, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "3-gigantamax_3": { + "frame": { "x": 246, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "3-mega_2": { + "frame": { "x": 181, "y": 58, "w": 29, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "3-mega_3": { + "frame": { "x": 152, "y": 57, "w": 29, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "30_2": { + "frame": { "x": 87, "y": 267, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "30_3": { + "frame": { "x": 40, "y": 265, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "31_1": { + "frame": { "x": 331, "y": 168, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "31_2": { + "frame": { "x": 0, "y": 172, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "31_3": { + "frame": { "x": 127, "y": 172, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "35_2": { + "frame": { "x": 318, "y": 298, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "35_3": { + "frame": { "x": 124, "y": 299, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "36_2": { + "frame": { "x": 178, "y": 240, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "36_3": { + "frame": { "x": 158, "y": 240, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "37_2": { + "frame": { "x": 194, "y": 267, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "37_3": { + "frame": { "x": 241, "y": 274, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "38_2": { + "frame": { "x": 370, "y": 149, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "38_3": { + "frame": { "x": 218, "y": 152, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "3_2": { + "frame": { "x": 0, "y": 79, "w": 30, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 30, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "3_3": { + "frame": { "x": 240, "y": 80, "w": 30, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 30, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "41_1": { + "frame": { "x": 341, "y": 259, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "41_2": { + "frame": { "x": 416, "y": 260, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "41_3": { + "frame": { "x": 132, "y": 261, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "42_1": { + "frame": { "x": 104, "y": 133, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "42_2": { + "frame": { "x": 25, "y": 134, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "42_3": { + "frame": { "x": 51, "y": 136, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "43_2": { + "frame": { "x": 423, "y": 220, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "43_3": { + "frame": { "x": 423, "y": 178, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "44_2": { + "frame": { "x": 116, "y": 235, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "44_3": { + "frame": { "x": 289, "y": 235, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "45_2": { + "frame": { "x": 100, "y": 181, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "45_3": { + "frame": { "x": 48, "y": 178, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "46_1": { + "frame": { "x": 65, "y": 257, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "46_2": { + "frame": { "x": 299, "y": 257, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "46_3": { + "frame": { "x": 78, "y": 113, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "47_1": { + "frame": { "x": 25, "y": 199, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "47_2": { + "frame": { "x": 308, "y": 213, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "47_3": { + "frame": { "x": 120, "y": 213, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4_2": { + "frame": { "x": 59, "y": 277, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4_3": { + "frame": { "x": 106, "y": 277, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "50_2": { + "frame": { "x": 425, "y": 138, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "50_3": { + "frame": { "x": 425, "y": 197, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "51_2": { + "frame": { "x": 286, "y": 211, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "51_3": { + "frame": { "x": 221, "y": 204, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "52-gigantamax_1": { + "frame": { "x": 77, "y": 83, "w": 23, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 23, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "52-gigantamax_2": { + "frame": { "x": 54, "y": 81, "w": 23, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 23, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "52-gigantamax_3": { + "frame": { "x": 417, "y": 78, "w": 23, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 23, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "52_1": { + "frame": { "x": 44, "y": 244, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "52_2": { + "frame": { "x": 90, "y": 246, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "52_3": { + "frame": { "x": 198, "y": 246, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "53_1": { + "frame": { "x": 235, "y": 182, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "53_2": { + "frame": { "x": 400, "y": 178, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "53_3": { + "frame": { "x": 309, "y": 191, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "56_1": { + "frame": { "x": 342, "y": 148, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "56_2": { + "frame": { "x": 314, "y": 148, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "56_3": { + "frame": { "x": 397, "y": 138, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "57_1": { + "frame": { "x": 150, "y": 83, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "57_2": { + "frame": { "x": 294, "y": 103, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "57_3": { + "frame": { "x": 0, "y": 103, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "5_2": { + "frame": { "x": 332, "y": 191, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "5_3": { + "frame": { "x": 150, "y": 194, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6-gigantamax_2": { + "frame": { "x": 270, "y": 80, "w": 24, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 24, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6-gigantamax_3": { + "frame": { "x": 30, "y": 81, "w": 24, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 24, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6-mega-x_2": { + "frame": { "x": 40, "y": 0, "w": 40, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6-mega-x_3": { + "frame": { "x": 0, "y": 0, "w": 40, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 2, "w": 40, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6-mega-y_2": { + "frame": { "x": 380, "y": 0, "w": 38, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 2, "w": 38, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6-mega-y_3": { + "frame": { "x": 342, "y": 0, "w": 38, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 2, "w": 38, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "69_2": { + "frame": { "x": 173, "y": 137, "w": 20, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 13, "w": 20, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "69_3": { + "frame": { "x": 185, "y": 305, "w": 20, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 13, "w": 20, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6_2": { + "frame": { "x": 60, "y": 29, "w": 32, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 32, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6_3": { + "frame": { "x": 404, "y": 25, "w": 32, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 32, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "70_2": { + "frame": { "x": 277, "y": 256, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "70_3": { + "frame": { "x": 219, "y": 256, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "71_2": { + "frame": { "x": 178, "y": 84, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "71_3": { + "frame": { "x": 210, "y": 83, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "77_2": { + "frame": { "x": 280, "y": 149, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "77_3": { + "frame": { "x": 0, "y": 149, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "78_2": { + "frame": { "x": 123, "y": 57, "w": 29, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 29, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "78_3": { + "frame": { "x": 94, "y": 57, "w": 29, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 29, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "79_1": { + "frame": { "x": 265, "y": 212, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "79_2": { + "frame": { "x": 256, "y": 253, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "79_3": { + "frame": { "x": 111, "y": 256, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "7_2": { + "frame": { "x": 233, "y": 294, "w": 21, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 21, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "7_3": { + "frame": { "x": 80, "y": 289, "w": 21, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 21, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "80-mega_2": { + "frame": { "x": 125, "y": 83, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "80-mega_3": { + "frame": { "x": 100, "y": 83, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "80_2": { + "frame": { "x": 238, "y": 104, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "80_3": { + "frame": { "x": 380, "y": 103, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "81_2": { + "frame": { "x": 101, "y": 296, "w": 23, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 23, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "81_3": { + "frame": { "x": 254, "y": 297, "w": 23, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 23, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "82_2": { + "frame": { "x": 354, "y": 172, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "82_3": { + "frame": { "x": 76, "y": 174, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "83_2": { + "frame": { "x": 78, "y": 133, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "83_3": { + "frame": { "x": 254, "y": 134, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "84_1": { + "frame": { "x": 358, "y": 282, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "84_2": { + "frame": { "x": 383, "y": 281, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "84_3": { + "frame": { "x": 127, "y": 281, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "85_1": { + "frame": { "x": 388, "y": 78, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "85_2": { + "frame": { "x": 359, "y": 78, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "85_3": { + "frame": { "x": 330, "y": 78, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "86_1": { + "frame": { "x": 53, "y": 113, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "86_2": { + "frame": { "x": 28, "y": 111, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "86_3": { + "frame": { "x": 148, "y": 130, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "87_1": { + "frame": { "x": 372, "y": 126, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "87_2": { + "frame": { "x": 0, "y": 126, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "87_3": { + "frame": { "x": 289, "y": 126, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "8_2": { + "frame": { "x": 150, "y": 172, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "8_3": { + "frame": { "x": 263, "y": 172, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "9-gigantamax_2": { + "frame": { "x": 181, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "9-gigantamax_3": { + "frame": { "x": 152, "y": 29, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "9-mega_2": { + "frame": { "x": 122, "y": 29, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "9-mega_3": { + "frame": { "x": 92, "y": 29, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "92_1": { + "frame": { "x": 188, "y": 219, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "92_2": { + "frame": { "x": 330, "y": 214, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "92_3": { + "frame": { "x": 353, "y": 215, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "93_1": { + "frame": { "x": 404, "y": 52, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "93_2": { + "frame": { "x": 268, "y": 30, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "93_3": { + "frame": { "x": 298, "y": 30, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94-gigantamax_1": { + "frame": { "x": 182, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94-gigantamax_2": { + "frame": { "x": 310, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94-gigantamax_3": { + "frame": { "x": 278, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94-mega_1": { + "frame": { "x": 148, "y": 0, "w": 34, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 34, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94-mega_2": { + "frame": { "x": 114, "y": 0, "w": 34, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 34, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94-mega_3": { + "frame": { "x": 80, "y": 0, "w": 34, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 34, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94_1": { + "frame": { "x": 265, "y": 110, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94_2": { + "frame": { "x": 124, "y": 109, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "94_3": { + "frame": { "x": 100, "y": 109, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "98_2": { + "frame": { "x": 240, "y": 58, "w": 28, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 28, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "98_3": { + "frame": { "x": 300, "y": 56, "w": 28, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 28, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "99-gigantamax_2": { + "frame": { "x": 328, "y": 53, "w": 31, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 31, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "99-gigantamax_3": { + "frame": { "x": 31, "y": 56, "w": 31, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 31, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "99_2": { + "frame": { "x": 300, "y": 78, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "99_3": { + "frame": { "x": 210, "y": 58, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "9_2": { + "frame": { "x": 150, "y": 106, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "9_3": { + "frame": { "x": 206, "y": 106, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_1v.png", + "format": "RGBA8888", + "size": { "w": 440, "h": 328 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_1v.png b/public/images/pokemon_icons_1v.png index ba233cf5c95..2aa0433b3f6 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_2v.json b/public/images/pokemon_icons_2v.json index edc1237c81e..ac38ebbcf6b 100644 --- a/public/images/pokemon_icons_2v.json +++ b/public/images/pokemon_icons_2v.json @@ -1,3296 +1,1271 @@ -{ - "textures": [ - { - "image": "pokemon_icons_2v.png", - "format": "RGBA8888", - "size": { - "w": 251, - "h": 271 - }, - "scale": 1, - "frames": [ - { - "filename": "249_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 29 - }, - "frame": { - "x": 0, - "y": 0, - "w": 32, - "h": 29 - } - }, - { - "filename": "249_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 29 - }, - "frame": { - "x": 0, - "y": 29, - "w": 32, - "h": 29 - } - }, - { - "filename": "250_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 32, - "y": 0, - "w": 29, - "h": 30 - } - }, - { - "filename": "250_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 58, - "w": 29, - "h": 30 - } - }, - { - "filename": "248-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 28, - "h": 29 - }, - "frame": { - "x": 61, - "y": 0, - "w": 28, - "h": 29 - } - }, - { - "filename": "248-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 28, - "h": 29 - }, - "frame": { - "x": 0, - "y": 88, - "w": 28, - "h": 29 - } - }, - { - "filename": "212-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 28, - "h": 28 - }, - "frame": { - "x": 32, - "y": 30, - "w": 28, - "h": 28 - } - }, - { - "filename": "212-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 28, - "h": 28 - }, - "frame": { - "x": 29, - "y": 58, - "w": 28, - "h": 28 - } - }, - { - "filename": "212-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 28, - "h": 28 - }, - "frame": { - "x": 89, - "y": 0, - "w": 28, - "h": 28 - } - }, - { - "filename": "181-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 29, - "h": 26 - }, - "frame": { - "x": 117, - "y": 0, - "w": 29, - "h": 26 - } - }, - { - "filename": "181-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 29, - "h": 26 - }, - "frame": { - "x": 146, - "y": 0, - "w": 29, - "h": 26 - } - }, - { - "filename": "243_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 30, - "h": 25 - }, - "frame": { - "x": 175, - "y": 0, - "w": 30, - "h": 25 - } - }, - { - "filename": "243_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 30, - "h": 25 - }, - "frame": { - "x": 205, - "y": 0, - "w": 30, - "h": 25 - } - }, - { - "filename": "216_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 16, - "h": 20 - }, - "frame": { - "x": 235, - "y": 0, - "w": 16, - "h": 20 - } - }, - { - "filename": "212_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 26, - "h": 27 - }, - "frame": { - "x": 0, - "y": 117, - "w": 26, - "h": 27 - } - }, - { - "filename": "212_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 26, - "h": 27 - }, - "frame": { - "x": 0, - "y": 144, - "w": 26, - "h": 27 - } - }, - { - "filename": "212_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 26, - "h": 27 - }, - "frame": { - "x": 0, - "y": 171, - "w": 26, - "h": 27 - } - }, - { - "filename": "245_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 0, - "y": 198, - "w": 29, - "h": 25 - } - }, - { - "filename": "245_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 0, - "y": 223, - "w": 29, - "h": 25 - } - }, - { - "filename": "169_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 23 - }, - "frame": { - "x": 0, - "y": 248, - "w": 30, - "h": 23 - } - }, - { - "filename": "216_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 16, - "h": 20 - }, - "frame": { - "x": 235, - "y": 20, - "w": 16, - "h": 20 - } - }, - { - "filename": "169_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 23 - }, - "frame": { - "x": 117, - "y": 26, - "w": 30, - "h": 23 - } - }, - { - "filename": "169_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 23 - }, - "frame": { - "x": 147, - "y": 26, - "w": 30, - "h": 23 - } - }, - { - "filename": "232_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 177, - "y": 25, - "w": 29, - "h": 22 - } - }, - { - "filename": "232_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 206, - "y": 25, - "w": 29, - "h": 22 - } - }, - { - "filename": "200_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 235, - "y": 40, - "w": 16, - "h": 19 - } - }, - { - "filename": "226_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 9, - "w": 30, - "h": 19 - }, - "frame": { - "x": 177, - "y": 47, - "w": 30, - "h": 19 - } - }, - { - "filename": "196_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 21 - }, - "frame": { - "x": 207, - "y": 47, - "w": 27, - "h": 21 - } - }, - { - "filename": "176_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 234, - "y": 59, - "w": 17, - "h": 21 - } - }, - { - "filename": "226_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 9, - "w": 30, - "h": 19 - }, - "frame": { - "x": 29, - "y": 86, - "w": 30, - "h": 19 - } - }, - { - "filename": "196_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 21 - }, - "frame": { - "x": 28, - "y": 105, - "w": 27, - "h": 21 - } - }, - { - "filename": "229-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 23, - "h": 27 - }, - "frame": { - "x": 26, - "y": 126, - "w": 23, - "h": 27 - } - }, - { - "filename": "229-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 23, - "h": 27 - }, - "frame": { - "x": 26, - "y": 153, - "w": 23, - "h": 27 - } - }, - { - "filename": "183_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 26, - "y": 180, - "w": 23, - "h": 17 - } - }, - { - "filename": "181_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 20, - "h": 25 - }, - "frame": { - "x": 29, - "y": 197, - "w": 20, - "h": 25 - } - }, - { - "filename": "199_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 2, - "w": 19, - "h": 26 - }, - "frame": { - "x": 29, - "y": 222, - "w": 19, - "h": 26 - } - }, - { - "filename": "227_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 30, - "y": 248, - "w": 25, - "h": 23 - } - }, - { - "filename": "161_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 15, - "h": 26 - }, - "frame": { - "x": 48, - "y": 222, - "w": 15, - "h": 26 - } - }, - { - "filename": "227_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 55, - "y": 248, - "w": 25, - "h": 23 - } - }, - { - "filename": "161_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 15, - "h": 26 - }, - "frame": { - "x": 49, - "y": 126, - "w": 15, - "h": 26 - } - }, - { - "filename": "181_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 3, - "w": 20, - "h": 25 - }, - "frame": { - "x": 49, - "y": 152, - "w": 20, - "h": 25 - } - }, - { - "filename": "184_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 49, - "y": 177, - "w": 25, - "h": 24 - } - }, - { - "filename": "196_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 27, - "h": 21 - }, - "frame": { - "x": 49, - "y": 201, - "w": 27, - "h": 21 - } - }, - { - "filename": "184_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 63, - "y": 222, - "w": 25, - "h": 24 - } - }, - { - "filename": "162_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 55, - "y": 105, - "w": 23, - "h": 21 - } - }, - { - "filename": "207_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 24 - }, - "frame": { - "x": 64, - "y": 126, - "w": 24, - "h": 24 - } - }, - { - "filename": "207_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 24 - }, - "frame": { - "x": 69, - "y": 150, - "w": 24, - "h": 24 - } - }, - { - "filename": "235_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 24, - "h": 21 - }, - "frame": { - "x": 93, - "y": 28, - "w": 24, - "h": 21 - } - }, - { - "filename": "244_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 74, - "y": 174, - "w": 25, - "h": 24 - } - }, - { - "filename": "244_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 76, - "y": 198, - "w": 25, - "h": 24 - } - }, - { - "filename": "248_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 88, - "y": 222, - "w": 25, - "h": 24 - } - }, - { - "filename": "248_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 25, - "h": 24 - }, - "frame": { - "x": 80, - "y": 246, - "w": 25, - "h": 24 - } - }, - { - "filename": "164_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 18, - "h": 23 - }, - "frame": { - "x": 105, - "y": 246, - "w": 18, - "h": 23 - } - }, - { - "filename": "201-c_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 20 - }, - "frame": { - "x": 78, - "y": 29, - "w": 15, - "h": 20 - } - }, - { - "filename": "164_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 18, - "h": 23 - }, - "frame": { - "x": 60, - "y": 30, - "w": 18, - "h": 23 - } - }, - { - "filename": "235_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 24, - "h": 21 - }, - "frame": { - "x": 78, - "y": 49, - "w": 24, - "h": 21 - } - }, - { - "filename": "162_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 102, - "y": 49, - "w": 23, - "h": 21 - } - }, - { - "filename": "242_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 125, - "y": 49, - "w": 22, - "h": 22 - } - }, - { - "filename": "242_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 147, - "y": 49, - "w": 22, - "h": 22 - } - }, - { - "filename": "201-h_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 60, - "y": 53, - "w": 18, - "h": 19 - } - }, - { - "filename": "201-n_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 13, - "w": 22, - "h": 14 - }, - "frame": { - "x": 57, - "y": 72, - "w": 22, - "h": 14 - } - }, - { - "filename": "206_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 59, - "y": 86, - "w": 21, - "h": 19 - } - }, - { - "filename": "231_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 79, - "y": 70, - "w": 20, - "h": 16 - } - }, - { - "filename": "183_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 99, - "y": 70, - "w": 23, - "h": 17 - } - }, - { - "filename": "228_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 80, - "y": 86, - "w": 19, - "h": 20 - } - }, - { - "filename": "179_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 78, - "y": 106, - "w": 22, - "h": 20 - } - }, - { - "filename": "206_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 99, - "y": 87, - "w": 21, - "h": 19 - } - }, - { - "filename": "179_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 100, - "y": 106, - "w": 22, - "h": 20 - } - }, - { - "filename": "217_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 88, - "y": 126, - "w": 21, - "h": 23 - } - }, - { - "filename": "217_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 93, - "y": 149, - "w": 21, - "h": 23 - } - }, - { - "filename": "201-s_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 14, - "h": 23 - }, - "frame": { - "x": 109, - "y": 126, - "w": 14, - "h": 23 - } - }, - { - "filename": "217_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 99, - "y": 172, - "w": 21, - "h": 23 - } - }, - { - "filename": "229_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 101, - "y": 195, - "w": 20, - "h": 23 - } - }, - { - "filename": "201-s_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 14, - "h": 23 - }, - "frame": { - "x": 114, - "y": 149, - "w": 14, - "h": 23 - } - }, - { - "filename": "242_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 122, - "y": 71, - "w": 22, - "h": 22 - } - }, - { - "filename": "180_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 144, - "y": 71, - "w": 21, - "h": 22 - } - }, - { - "filename": "229_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 120, - "y": 172, - "w": 20, - "h": 23 - } - }, - { - "filename": "180_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 121, - "y": 195, - "w": 21, - "h": 22 - } - }, - { - "filename": "197_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 122, - "y": 93, - "w": 20, - "h": 21 - } - }, - { - "filename": "197_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 142, - "y": 93, - "w": 20, - "h": 21 - } - }, - { - "filename": "222_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 123, - "y": 114, - "w": 21, - "h": 20 - } - }, - { - "filename": "201-m_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 144, - "y": 114, - "w": 18, - "h": 20 - } - }, - { - "filename": "201-n_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 13, - "w": 22, - "h": 14 - }, - "frame": { - "x": 123, - "y": 134, - "w": 22, - "h": 14 - } - }, - { - "filename": "176_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 128, - "y": 148, - "w": 17, - "h": 21 - } - }, - { - "filename": "176_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 145, - "y": 134, - "w": 17, - "h": 21 - } - }, - { - "filename": "163_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 145, - "y": 155, - "w": 17, - "h": 20 - } - }, - { - "filename": "222_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 140, - "y": 175, - "w": 21, - "h": 20 - } - }, - { - "filename": "228_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 142, - "y": 195, - "w": 19, - "h": 20 - } - }, - { - "filename": "201-a_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 10, - "h": 21 - }, - "frame": { - "x": 113, - "y": 218, - "w": 10, - "h": 21 - } - }, - { - "filename": "239_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 123, - "y": 217, - "w": 21, - "h": 20 - } - }, - { - "filename": "215_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 144, - "y": 215, - "w": 17, - "h": 21 - } - }, - { - "filename": "239_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 123, - "y": 237, - "w": 21, - "h": 20 - } - }, - { - "filename": "201-x_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 14, - "w": 13, - "h": 14 - }, - "frame": { - "x": 123, - "y": 257, - "w": 13, - "h": 14 - } - }, - { - "filename": "215_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 144, - "y": 236, - "w": 17, - "h": 21 - } - }, - { - "filename": "201-x_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 14, - "w": 13, - "h": 14 - }, - "frame": { - "x": 136, - "y": 257, - "w": 13, - "h": 14 - } - }, - { - "filename": "201-a_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 10, - "h": 21 - }, - "frame": { - "x": 165, - "y": 71, - "w": 10, - "h": 21 - } - }, - { - "filename": "239_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 175, - "y": 66, - "w": 21, - "h": 20 - } - }, - { - "filename": "201-p_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 8, - "w": 11, - "h": 20 - }, - "frame": { - "x": 196, - "y": 66, - "w": 11, - "h": 20 - } - }, - { - "filename": "201-h_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 207, - "y": 68, - "w": 18, - "h": 19 - } - }, - { - "filename": "231_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 175, - "y": 86, - "w": 20, - "h": 16 - } - }, - { - "filename": "201-k_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 13, - "h": 20 - }, - "frame": { - "x": 162, - "y": 93, - "w": 13, - "h": 20 - } - }, - { - "filename": "163_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 162, - "y": 113, - "w": 17, - "h": 20 - } - }, - { - "filename": "201-m_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 162, - "y": 133, - "w": 18, - "h": 20 - } - }, - { - "filename": "201-o_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 162, - "y": 153, - "w": 18, - "h": 19 - } - }, - { - "filename": "201-b_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 7, - "w": 12, - "h": 21 - }, - "frame": { - "x": 195, - "y": 86, - "w": 12, - "h": 21 - } - }, - { - "filename": "201-o_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 207, - "y": 87, - "w": 18, - "h": 19 - } - }, - { - "filename": "200_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 179, - "y": 102, - "w": 16, - "h": 19 - } - }, - { - "filename": "173_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 16, - "h": 16 - }, - "frame": { - "x": 195, - "y": 107, - "w": 16, - "h": 16 - } - }, - { - "filename": "175_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 16, - "h": 18 - }, - "frame": { - "x": 211, - "y": 106, - "w": 16, - "h": 18 - } - }, - { - "filename": "200_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 225, - "y": 80, - "w": 16, - "h": 19 - } - }, - { - "filename": "201-g_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 10, - "h": 21 - }, - "frame": { - "x": 241, - "y": 80, - "w": 10, - "h": 21 - } - }, - { - "filename": "201-e_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 14, - "h": 20 - }, - "frame": { - "x": 227, - "y": 99, - "w": 14, - "h": 20 - } - }, - { - "filename": "201-g_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 7, - "w": 10, - "h": 21 - }, - "frame": { - "x": 241, - "y": 101, - "w": 10, - "h": 21 - } - }, - { - "filename": "201-c_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 20 - }, - "frame": { - "x": 180, - "y": 121, - "w": 15, - "h": 20 - } - }, - { - "filename": "175_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 16, - "h": 18 - }, - "frame": { - "x": 195, - "y": 123, - "w": 16, - "h": 18 - } - }, - { - "filename": "246_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 15, - "h": 20 - }, - "frame": { - "x": 180, - "y": 141, - "w": 15, - "h": 20 - } - }, - { - "filename": "246_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 15, - "h": 20 - }, - "frame": { - "x": 195, - "y": 141, - "w": 15, - "h": 20 - } - }, - { - "filename": "175_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 16, - "h": 18 - }, - "frame": { - "x": 211, - "y": 124, - "w": 16, - "h": 18 - } - }, - { - "filename": "201-e_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 14, - "h": 20 - }, - "frame": { - "x": 227, - "y": 119, - "w": 14, - "h": 20 - } - }, - { - "filename": "201-exclamation_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 8, - "w": 10, - "h": 20 - }, - "frame": { - "x": 241, - "y": 122, - "w": 10, - "h": 20 - } - }, - { - "filename": "247_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 210, - "y": 142, - "w": 16, - "h": 19 - } - }, - { - "filename": "201-u_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 12, - "w": 18, - "h": 16 - }, - "frame": { - "x": 180, - "y": 161, - "w": 18, - "h": 16 - } - }, - { - "filename": "201-u_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 12, - "w": 18, - "h": 16 - }, - "frame": { - "x": 198, - "y": 161, - "w": 18, - "h": 16 - } - }, - { - "filename": "201-b_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 7, - "w": 12, - "h": 21 - }, - "frame": { - "x": 216, - "y": 161, - "w": 12, - "h": 21 - } - }, - { - "filename": "247_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 226, - "y": 142, - "w": 16, - "h": 19 - } - }, - { - "filename": "201-d_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 9, - "w": 14, - "h": 19 - }, - "frame": { - "x": 228, - "y": 161, - "w": 14, - "h": 19 - } - }, - { - "filename": "201-question_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 7, - "w": 11, - "h": 21 - }, - "frame": { - "x": 161, - "y": 175, - "w": 11, - "h": 21 - } - }, - { - "filename": "201-question_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 7, - "w": 11, - "h": 21 - }, - "frame": { - "x": 161, - "y": 196, - "w": 11, - "h": 21 - } - }, - { - "filename": "201-k_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 13, - "h": 20 - }, - "frame": { - "x": 161, - "y": 217, - "w": 13, - "h": 20 - } - }, - { - "filename": "201-l_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 13, - "h": 20 - }, - "frame": { - "x": 161, - "y": 237, - "w": 13, - "h": 20 - } - }, - { - "filename": "201-f_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 172, - "y": 177, - "w": 15, - "h": 19 - } - }, - { - "filename": "201-f_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 172, - "y": 196, - "w": 15, - "h": 19 - } - }, - { - "filename": "201-w_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 17 - }, - "frame": { - "x": 187, - "y": 177, - "w": 17, - "h": 17 - } - }, - { - "filename": "201-t_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 12, - "h": 19 - }, - "frame": { - "x": 204, - "y": 177, - "w": 12, - "h": 19 - } - }, - { - "filename": "201-w_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 17 - }, - "frame": { - "x": 187, - "y": 194, - "w": 17, - "h": 17 - } - }, - { - "filename": "201-l_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 13, - "h": 20 - }, - "frame": { - "x": 174, - "y": 215, - "w": 13, - "h": 20 - } - }, - { - "filename": "201-d_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 9, - "w": 14, - "h": 19 - }, - "frame": { - "x": 187, - "y": 211, - "w": 14, - "h": 19 - } - }, - { - "filename": "201-y_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 9, - "w": 13, - "h": 19 - }, - "frame": { - "x": 174, - "y": 235, - "w": 13, - "h": 19 - } - }, - { - "filename": "201-v_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 14, - "h": 18 - }, - "frame": { - "x": 187, - "y": 230, - "w": 14, - "h": 18 - } - }, - { - "filename": "201-q_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 14, - "h": 16 - }, - "frame": { - "x": 204, - "y": 196, - "w": 14, - "h": 16 - } - }, - { - "filename": "201-v_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 14, - "h": 18 - }, - "frame": { - "x": 201, - "y": 212, - "w": 14, - "h": 18 - } - }, - { - "filename": "251_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 14, - "h": 18 - }, - "frame": { - "x": 201, - "y": 230, - "w": 14, - "h": 18 - } - }, - { - "filename": "201-exclamation_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 8, - "w": 10, - "h": 20 - }, - "frame": { - "x": 215, - "y": 212, - "w": 10, - "h": 20 - } - }, - { - "filename": "201-i_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 8, - "w": 10, - "h": 20 - }, - "frame": { - "x": 215, - "y": 232, - "w": 10, - "h": 20 - } - }, - { - "filename": "201-q_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 14, - "h": 16 - }, - "frame": { - "x": 187, - "y": 248, - "w": 14, - "h": 16 - } - }, - { - "filename": "251_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 14, - "h": 18 - }, - "frame": { - "x": 201, - "y": 248, - "w": 14, - "h": 18 - } - }, - { - "filename": "201-y_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 9, - "w": 13, - "h": 19 - }, - "frame": { - "x": 215, - "y": 252, - "w": 13, - "h": 19 - } - }, - { - "filename": "201-i_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 8, - "w": 10, - "h": 20 - }, - "frame": { - "x": 218, - "y": 182, - "w": 10, - "h": 20 - } - }, - { - "filename": "201-p_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 8, - "w": 11, - "h": 20 - }, - "frame": { - "x": 228, - "y": 180, - "w": 11, - "h": 20 - } - }, - { - "filename": "201-t_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 12, - "h": 19 - }, - "frame": { - "x": 239, - "y": 180, - "w": 12, - "h": 19 - } - }, - { - "filename": "201-j_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 9, - "w": 11, - "h": 19 - }, - "frame": { - "x": 228, - "y": 200, - "w": 11, - "h": 19 - } - }, - { - "filename": "201-j_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 9, - "w": 11, - "h": 19 - }, - "frame": { - "x": 239, - "y": 199, - "w": 11, - "h": 19 - } - }, - { - "filename": "201-z_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 9, - "w": 10, - "h": 19 - }, - "frame": { - "x": 225, - "y": 219, - "w": 10, - "h": 19 - } - }, - { - "filename": "201-z_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 15, - "y": 9, - "w": 10, - "h": 19 - }, - "frame": { - "x": 235, - "y": 219, - "w": 10, - "h": 19 - } - }, - { - "filename": "201-r_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 16, - "y": 10, - "w": 10, - "h": 18 - }, - "frame": { - "x": 228, - "y": 238, - "w": 10, - "h": 18 - } - }, - { - "filename": "201-r_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 16, - "y": 10, - "w": 10, - "h": 18 - }, - "frame": { - "x": 238, - "y": 238, - "w": 10, - "h": 18 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:f68072f2f63507b99c4550bc32bafaf3:ecfff43f4672541500abdde038d7f530:63b368599cdc6e139499267117e91cd5$" - } -} +{ "frames": { + "161_2": { + "frame": { "x": 225, "y": 163, "w": 15, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 4, "w": 15, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "161_3": { + "frame": { "x": 82, "y": 162, "w": 15, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 4, "w": 15, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "162_2": { + "frame": { "x": 22, "y": 102, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "162_3": { + "frame": { "x": 45, "y": 103, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "163_2": { + "frame": { "x": 0, "y": 184, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "163_3": { + "frame": { "x": 240, "y": 183, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "164_2": { + "frame": { "x": 64, "y": 145, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "164_3": { + "frame": { "x": 186, "y": 145, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "169_1": { + "frame": { "x": 148, "y": 29, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "169_2": { + "frame": { "x": 55, "y": 30, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "169_3": { + "frame": { "x": 85, "y": 30, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "173_3": { + "frame": { "x": 64, "y": 223, "w": 16, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 16, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "175_1": { + "frame": { "x": 185, "y": 206, "w": 16, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 16, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "175_2": { + "frame": { "x": 31, "y": 207, "w": 16, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 16, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "175_3": { + "frame": { "x": 169, "y": 207, "w": 16, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 16, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "176_1": { + "frame": { "x": 54, "y": 168, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "176_2": { + "frame": { "x": 37, "y": 166, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "176_3": { + "frame": { "x": 261, "y": 99, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "177_2": { + "frame": { "x": 135, "y": 196, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "177_3": { + "frame": { "x": 152, "y": 196, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "178_2": { + "frame": { "x": 276, "y": 164, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "178_3": { + "frame": { "x": 293, "y": 164, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "179_2": { + "frame": { "x": 226, "y": 143, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "179_3": { + "frame": { "x": 88, "y": 142, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "180_2": { + "frame": { "x": 116, "y": 122, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "180_3": { + "frame": { "x": 239, "y": 121, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "181-mega_2": { + "frame": { "x": 262, "y": 0, "w": 29, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 29, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "181-mega_3": { + "frame": { "x": 291, "y": 0, "w": 29, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 29, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "181_2": { + "frame": { "x": 200, "y": 96, "w": 20, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 3, "w": 20, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "181_3": { + "frame": { "x": 124, "y": 97, "w": 20, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 3, "w": 20, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "182_2": { + "frame": { "x": 97, "y": 184, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "182_3": { + "frame": { "x": 17, "y": 184, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "183_2": { + "frame": { "x": 154, "y": 160, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "183_3": { + "frame": { "x": 131, "y": 156, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "184_2": { + "frame": { "x": 25, "y": 56, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "184_3": { + "frame": { "x": 202, "y": 53, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "185_2": { + "frame": { "x": 22, "y": 123, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "185_3": { + "frame": { "x": 0, "y": 123, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "190_2": { + "frame": { "x": 284, "y": 124, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "190_3": { + "frame": { "x": 260, "y": 124, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "193_2": { + "frame": { "x": 137, "y": 140, "w": 28, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 12, "w": 28, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "193_3": { + "frame": { "x": 88, "y": 126, "w": 28, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 12, "w": 28, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "196_1": { + "frame": { "x": 251, "y": 78, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "196_2": { + "frame": { "x": 0, "y": 80, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "196_3": { + "frame": { "x": 289, "y": 77, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "197_2": { + "frame": { "x": 289, "y": 143, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "197_3": { + "frame": { "x": 269, "y": 143, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "199_1": { + "frame": { "x": 220, "y": 97, "w": 19, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 19, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "199_2": { + "frame": { "x": 297, "y": 98, "w": 19, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 19, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "199_3": { + "frame": { "x": 278, "y": 98, "w": 19, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 2, "w": 19, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "200_1": { + "frame": { "x": 69, "y": 204, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "200_2": { + "frame": { "x": 257, "y": 202, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "200_3": { + "frame": { "x": 211, "y": 203, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-a_2": { + "frame": { "x": 148, "y": 233, "w": 10, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 7, "w": 10, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-a_3": { + "frame": { "x": 128, "y": 230, "w": 10, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 7, "w": 10, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-b_2": { + "frame": { "x": 13, "y": 225, "w": 12, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 7, "w": 12, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-b_3": { + "frame": { "x": 271, "y": 224, "w": 12, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 7, "w": 12, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-c_2": { + "frame": { "x": 85, "y": 205, "w": 15, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-c_3": { + "frame": { "x": 304, "y": 205, "w": 15, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-d_2": { + "frame": { "x": 201, "y": 222, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-d_3": { + "frame": { "x": 215, "y": 222, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-exclamation_2": { + "frame": { "x": 227, "y": 53, "w": 10, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 8, "w": 10, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-exclamation_3": { + "frame": { "x": 103, "y": 241, "w": 10, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 8, "w": 10, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-e_2": { + "frame": { "x": 257, "y": 221, "w": 14, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 14, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-e_3": { + "frame": { "x": 243, "y": 203, "w": 14, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 14, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-f_2": { + "frame": { "x": 152, "y": 214, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-f_3": { + "frame": { "x": 212, "y": 77, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-g_2": { + "frame": { "x": 310, "y": 145, "w": 10, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 7, "w": 10, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-g_3": { + "frame": { "x": 138, "y": 230, "w": 10, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 7, "w": 10, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-h_2": { + "frame": { "x": 177, "y": 168, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-h_3": { + "frame": { "x": 115, "y": 173, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-i_2": { + "frame": { "x": 113, "y": 241, "w": 10, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 8, "w": 10, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-i_3": { + "frame": { "x": 199, "y": 241, "w": 10, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 8, "w": 10, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-j_2": { + "frame": { "x": 62, "y": 239, "w": 11, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 9, "w": 11, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-j_3": { + "frame": { "x": 92, "y": 241, "w": 11, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 9, "w": 11, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-k_2": { + "frame": { "x": 229, "y": 222, "w": 13, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 13, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-k_3": { + "frame": { "x": 226, "y": 123, "w": 13, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 13, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-l_2": { + "frame": { "x": 291, "y": 208, "w": 13, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 13, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-l_3": { + "frame": { "x": 0, "y": 223, "w": 13, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 13, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-m_2": { + "frame": { "x": 97, "y": 164, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-m_3": { + "frame": { "x": 19, "y": 164, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-n_2": { + "frame": { "x": 211, "y": 189, "w": 22, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 13, "w": 22, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-n_3": { + "frame": { "x": 113, "y": 192, "w": 22, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 13, "w": 22, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-o_2": { + "frame": { "x": 151, "y": 177, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-o_3": { + "frame": { "x": 133, "y": 173, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-p_2": { + "frame": { "x": 71, "y": 168, "w": 11, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 8, "w": 11, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-p_3": { + "frame": { "x": 278, "y": 78, "w": 11, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 8, "w": 11, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-question_2": { + "frame": { "x": 309, "y": 124, "w": 11, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 7, "w": 11, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-question_3": { + "frame": { "x": 51, "y": 225, "w": 11, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 7, "w": 11, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-q_2": { + "frame": { "x": 304, "y": 225, "w": 14, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 14, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-q_3": { + "frame": { "x": 283, "y": 228, "w": 14, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 14, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-r_2": { + "frame": { "x": 255, "y": 241, "w": 10, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 10, "w": 10, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-r_3": { + "frame": { "x": 297, "y": 241, "w": 10, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 16, "y": 10, "w": 10, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-s_2": { + "frame": { "x": 290, "y": 185, "w": 14, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 14, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-s_3": { + "frame": { "x": 276, "y": 185, "w": 14, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 14, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-t_2": { + "frame": { "x": 167, "y": 225, "w": 12, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 12, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-t_3": { + "frame": { "x": 80, "y": 225, "w": 12, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 12, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-u_2": { + "frame": { "x": 273, "y": 208, "w": 18, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 12, "w": 18, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-u_3": { + "frame": { "x": 134, "y": 214, "w": 18, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 12, "w": 18, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-v_2": { + "frame": { "x": 100, "y": 223, "w": 14, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 14, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-v_3": { + "frame": { "x": 185, "y": 224, "w": 14, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 14, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-w_2": { + "frame": { "x": 100, "y": 206, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-w_3": { + "frame": { "x": 117, "y": 206, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-x_2": { + "frame": { "x": 242, "y": 241, "w": 13, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 14, "w": 13, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-x_3": { + "frame": { "x": 209, "y": 241, "w": 13, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 14, "w": 13, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-y_2": { + "frame": { "x": 25, "y": 225, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-y_3": { + "frame": { "x": 38, "y": 225, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-z_2": { + "frame": { "x": 310, "y": 166, "w": 10, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 9, "w": 10, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "201-z_3": { + "frame": { "x": 185, "y": 187, "w": 10, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 9, "w": 10, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "203_2": { + "frame": { "x": 102, "y": 80, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "203_3": { + "frame": { "x": 51, "y": 80, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "206_2": { + "frame": { "x": 204, "y": 146, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "206_3": { + "frame": { "x": 42, "y": 147, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "207_2": { + "frame": { "x": 227, "y": 73, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "207_3": { + "frame": { "x": 103, "y": 56, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "212-mega_1": { + "frame": { "x": 234, "y": 0, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "212-mega_2": { + "frame": { "x": 206, "y": 0, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "212-mega_3": { + "frame": { "x": 178, "y": 0, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "212_1": { + "frame": { "x": 122, "y": 29, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "212_2": { + "frame": { "x": 292, "y": 26, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "212_3": { + "frame": { "x": 29, "y": 29, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "213_2": { + "frame": { "x": 27, "y": 80, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "213_3": { + "frame": { "x": 78, "y": 77, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "215_2": { + "frame": { "x": 259, "y": 164, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "215_3": { + "frame": { "x": 204, "y": 165, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "216_2": { + "frame": { "x": 304, "y": 185, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "216_3": { + "frame": { "x": 169, "y": 187, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "217_1": { + "frame": { "x": 95, "y": 103, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "217_2": { + "frame": { "x": 144, "y": 117, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "217_3": { + "frame": { "x": 165, "y": 117, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "222_2": { + "frame": { "x": 248, "y": 143, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "222_3": { + "frame": { "x": 110, "y": 144, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "226_2": { + "frame": { "x": 182, "y": 77, "w": 30, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 9, "w": 30, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "226_3": { + "frame": { "x": 152, "y": 77, "w": 30, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 9, "w": 30, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "227_2": { + "frame": { "x": 127, "y": 74, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "227_3": { + "frame": { "x": 237, "y": 28, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "228_2": { + "frame": { "x": 0, "y": 164, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "228_3": { + "frame": { "x": 240, "y": 163, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "229-mega_2": { + "frame": { "x": 266, "y": 51, "w": 23, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 23, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "229-mega_3": { + "frame": { "x": 55, "y": 53, "w": 23, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 23, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "229_2": { + "frame": { "x": 44, "y": 124, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "229_3": { + "frame": { "x": 206, "y": 123, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "230_2": { + "frame": { "x": 68, "y": 121, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "230_3": { + "frame": { "x": 186, "y": 121, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "231_2": { + "frame": { "x": 49, "y": 189, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "231_3": { + "frame": { "x": 71, "y": 188, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "232_2": { + "frame": { "x": 237, "y": 51, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "232_3": { + "frame": { "x": 148, "y": 52, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "233_2": { + "frame": { "x": 257, "y": 185, "w": 19, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 19, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "233_3": { + "frame": { "x": 127, "y": 56, "w": 19, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 19, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "235_2": { + "frame": { "x": 176, "y": 96, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "235_3": { + "frame": { "x": 152, "y": 96, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "239_1": { + "frame": { "x": 0, "y": 144, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "239_2": { + "frame": { "x": 21, "y": 144, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "239_3": { + "frame": { "x": 165, "y": 140, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "240_2": { + "frame": { "x": 33, "y": 187, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "240_3": { + "frame": { "x": 195, "y": 186, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "242_1": { + "frame": { "x": 239, "y": 99, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "242_2": { + "frame": { "x": 0, "y": 101, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "242_3": { + "frame": { "x": 73, "y": 99, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "243_2": { + "frame": { "x": 262, "y": 26, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "243_3": { + "frame": { "x": 178, "y": 28, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "244_2": { + "frame": { "x": 289, "y": 53, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "244_3": { + "frame": { "x": 0, "y": 54, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "245_2": { + "frame": { "x": 208, "y": 28, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "245_3": { + "frame": { "x": 0, "y": 29, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "246_2": { + "frame": { "x": 49, "y": 205, "w": 15, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 15, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "246_3": { + "frame": { "x": 16, "y": 205, "w": 15, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 15, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "247_2": { + "frame": { "x": 0, "y": 204, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "247_3": { + "frame": { "x": 227, "y": 203, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "248-mega_2": { + "frame": { "x": 122, "y": 0, "w": 28, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 28, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "248-mega_3": { + "frame": { "x": 150, "y": 0, "w": 28, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 28, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "248_2": { + "frame": { "x": 177, "y": 53, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "248_3": { + "frame": { "x": 78, "y": 53, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "249_2": { + "frame": { "x": 0, "y": 0, "w": 32, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "249_3": { + "frame": { "x": 32, "y": 0, "w": 32, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "250_2": { + "frame": { "x": 93, "y": 0, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "250_3": { + "frame": { "x": 64, "y": 0, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "251_2": { + "frame": { "x": 114, "y": 223, "w": 14, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 14, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "251_3": { + "frame": { "x": 242, "y": 223, "w": 14, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 14, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_2v.png", + "format": "RGBA8888", + "size": { "w": 320, "h": 261 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_2v.png b/public/images/pokemon_icons_2v.png index 21260b4d38f..443d14b176d 100644 Binary files a/public/images/pokemon_icons_2v.png and b/public/images/pokemon_icons_2v.png differ diff --git a/public/images/pokemon_icons_3v.json b/public/images/pokemon_icons_3v.json index 99de7cb8d7f..2cd15286a81 100644 --- a/public/images/pokemon_icons_3v.json +++ b/public/images/pokemon_icons_3v.json @@ -1,3842 +1,1411 @@ -{ - "textures": [ - { - "image": "pokemon_icons_3v.png", - "format": "RGBA8888", - "size": { - "w": 128, - "h": 741 - }, - "scale": 1, - "frames": [ - { - "filename": "384-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 3, - "w": 38, - "h": 25 - }, - "frame": { - "x": 0, - "y": 0, - "w": 38, - "h": 25 - } - }, - { - "filename": "384-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 3, - "w": 38, - "h": 25 - }, - "frame": { - "x": 0, - "y": 25, - "w": 38, - "h": 25 - } - }, - { - "filename": "373-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 35, - "h": 25 - }, - "frame": { - "x": 38, - "y": 0, - "w": 35, - "h": 25 - } - }, - { - "filename": "373-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 2, - "y": 3, - "w": 35, - "h": 25 - }, - "frame": { - "x": 0, - "y": 50, - "w": 35, - "h": 25 - } - }, - { - "filename": "383-primal_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 4, - "w": 36, - "h": 24 - }, - "frame": { - "x": 73, - "y": 0, - "w": 36, - "h": 24 - } - }, - { - "filename": "362_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 109, - "y": 0, - "w": 19, - "h": 20 - } - }, - { - "filename": "380-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 35, - "h": 24 - }, - "frame": { - "x": 38, - "y": 25, - "w": 35, - "h": 24 - } - }, - { - "filename": "383-primal_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 4, - "w": 36, - "h": 24 - }, - "frame": { - "x": 73, - "y": 24, - "w": 36, - "h": 24 - } - }, - { - "filename": "362_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 109, - "y": 20, - "w": 19, - "h": 20 - } - }, - { - "filename": "380-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 35, - "h": 24 - }, - "frame": { - "x": 0, - "y": 75, - "w": 35, - "h": 24 - } - }, - { - "filename": "381-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 35, - "h": 24 - }, - "frame": { - "x": 0, - "y": 99, - "w": 35, - "h": 24 - } - }, - { - "filename": "381-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 35, - "h": 24 - }, - "frame": { - "x": 0, - "y": 123, - "w": 35, - "h": 24 - } - }, - { - "filename": "384_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 31, - "h": 27 - }, - "frame": { - "x": 0, - "y": 147, - "w": 31, - "h": 27 - } - }, - { - "filename": "384_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 31, - "h": 27 - }, - "frame": { - "x": 0, - "y": 174, - "w": 31, - "h": 27 - } - }, - { - "filename": "306-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 31, - "h": 26 - }, - "frame": { - "x": 0, - "y": 201, - "w": 31, - "h": 26 - } - }, - { - "filename": "306-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 31, - "h": 26 - }, - "frame": { - "x": 0, - "y": 227, - "w": 31, - "h": 26 - } - }, - { - "filename": "306-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 31, - "h": 26 - }, - "frame": { - "x": 0, - "y": 253, - "w": 31, - "h": 26 - } - }, - { - "filename": "357_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 31, - "h": 26 - }, - "frame": { - "x": 0, - "y": 279, - "w": 31, - "h": 26 - } - }, - { - "filename": "357_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 31, - "h": 26 - }, - "frame": { - "x": 0, - "y": 305, - "w": 31, - "h": 26 - } - }, - { - "filename": "303-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 3, - "w": 30, - "h": 26 - }, - "frame": { - "x": 0, - "y": 331, - "w": 30, - "h": 26 - } - }, - { - "filename": "303-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 3, - "w": 30, - "h": 26 - }, - "frame": { - "x": 0, - "y": 357, - "w": 30, - "h": 26 - } - }, - { - "filename": "303-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 3, - "w": 30, - "h": 26 - }, - "frame": { - "x": 0, - "y": 383, - "w": 30, - "h": 26 - } - }, - { - "filename": "308-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 29, - "h": 27 - }, - "frame": { - "x": 0, - "y": 409, - "w": 29, - "h": 27 - } - }, - { - "filename": "308-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 29, - "h": 27 - }, - "frame": { - "x": 0, - "y": 436, - "w": 29, - "h": 27 - } - }, - { - "filename": "302-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 28, - "h": 27 - }, - "frame": { - "x": 0, - "y": 463, - "w": 28, - "h": 27 - } - }, - { - "filename": "302-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 1, - "w": 28, - "h": 27 - }, - "frame": { - "x": 0, - "y": 490, - "w": 28, - "h": 27 - } - }, - { - "filename": "306_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 29, - "h": 24 - }, - "frame": { - "x": 0, - "y": 517, - "w": 29, - "h": 24 - } - }, - { - "filename": "306_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 29, - "h": 24 - }, - "frame": { - "x": 0, - "y": 541, - "w": 29, - "h": 24 - } - }, - { - "filename": "306_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 29, - "h": 24 - }, - "frame": { - "x": 0, - "y": 565, - "w": 29, - "h": 24 - } - }, - { - "filename": "376-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 32, - "h": 24 - }, - "frame": { - "x": 0, - "y": 589, - "w": 32, - "h": 24 - } - }, - { - "filename": "376-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 32, - "h": 24 - }, - "frame": { - "x": 0, - "y": 613, - "w": 32, - "h": 24 - } - }, - { - "filename": "383_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 33, - "h": 24 - }, - "frame": { - "x": 0, - "y": 637, - "w": 33, - "h": 24 - } - }, - { - "filename": "383_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 4, - "w": 33, - "h": 24 - }, - "frame": { - "x": 0, - "y": 661, - "w": 33, - "h": 24 - } - }, - { - "filename": "373_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 32, - "h": 23 - }, - "frame": { - "x": 0, - "y": 685, - "w": 32, - "h": 23 - } - }, - { - "filename": "373_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 32, - "h": 23 - }, - "frame": { - "x": 0, - "y": 708, - "w": 32, - "h": 23 - } - }, - { - "filename": "328_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 109, - "y": 40, - "w": 19, - "h": 19 - } - }, - { - "filename": "382-primal_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 8, - "w": 36, - "h": 21 - }, - "frame": { - "x": 73, - "y": 48, - "w": 36, - "h": 21 - } - }, - { - "filename": "328_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 109, - "y": 59, - "w": 19, - "h": 19 - } - }, - { - "filename": "382_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 33, - "h": 21 - }, - "frame": { - "x": 38, - "y": 49, - "w": 33, - "h": 21 - } - }, - { - "filename": "382-primal_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 8, - "w": 36, - "h": 21 - }, - "frame": { - "x": 35, - "y": 70, - "w": 36, - "h": 21 - } - }, - { - "filename": "376_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 32, - "h": 23 - }, - "frame": { - "x": 35, - "y": 91, - "w": 32, - "h": 23 - } - }, - { - "filename": "376_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 32, - "h": 23 - }, - "frame": { - "x": 35, - "y": 114, - "w": 32, - "h": 23 - } - }, - { - "filename": "382_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 8, - "w": 33, - "h": 21 - }, - "frame": { - "x": 71, - "y": 69, - "w": 33, - "h": 21 - } - }, - { - "filename": "342_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 104, - "y": 78, - "w": 24, - "h": 23 - } - }, - { - "filename": "321_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 30, - "h": 23 - }, - "frame": { - "x": 35, - "y": 137, - "w": 30, - "h": 23 - } - }, - { - "filename": "321_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 30, - "h": 23 - }, - "frame": { - "x": 31, - "y": 160, - "w": 30, - "h": 23 - } - }, - { - "filename": "475-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 31, - "y": 183, - "w": 25, - "h": 26 - } - }, - { - "filename": "282-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 31, - "y": 209, - "w": 26, - "h": 24 - } - }, - { - "filename": "282-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 31, - "y": 233, - "w": 26, - "h": 24 - } - }, - { - "filename": "282_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 31, - "y": 257, - "w": 26, - "h": 24 - } - }, - { - "filename": "282_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 31, - "y": 281, - "w": 26, - "h": 24 - } - }, - { - "filename": "310-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 24 - }, - "frame": { - "x": 31, - "y": 305, - "w": 26, - "h": 24 - } - }, - { - "filename": "286_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 23, - "h": 25 - }, - "frame": { - "x": 56, - "y": 183, - "w": 23, - "h": 25 - } - }, - { - "filename": "286_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 23, - "h": 25 - }, - "frame": { - "x": 57, - "y": 208, - "w": 23, - "h": 25 - } - }, - { - "filename": "310-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 24 - }, - "frame": { - "x": 57, - "y": 233, - "w": 26, - "h": 24 - } - }, - { - "filename": "330_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 57, - "y": 257, - "w": 27, - "h": 23 - } - }, - { - "filename": "330_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 57, - "y": 280, - "w": 27, - "h": 23 - } - }, - { - "filename": "334-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 57, - "y": 303, - "w": 27, - "h": 23 - } - }, - { - "filename": "281_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 18, - "h": 23 - }, - "frame": { - "x": 61, - "y": 160, - "w": 18, - "h": 23 - } - }, - { - "filename": "281_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 18, - "h": 23 - }, - "frame": { - "x": 65, - "y": 137, - "w": 18, - "h": 23 - } - }, - { - "filename": "338_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 83, - "y": 90, - "w": 21, - "h": 22 - } - }, - { - "filename": "342_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 104, - "y": 101, - "w": 24, - "h": 23 - } - }, - { - "filename": "475_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 22, - "h": 25 - }, - "frame": { - "x": 67, - "y": 112, - "w": 22, - "h": 25 - } - }, - { - "filename": "358_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 21 - }, - "frame": { - "x": 89, - "y": 112, - "w": 15, - "h": 21 - } - }, - { - "filename": "340_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 24, - "h": 19 - }, - "frame": { - "x": 104, - "y": 124, - "w": 24, - "h": 19 - } - }, - { - "filename": "311_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 67, - "y": 91, - "w": 16, - "h": 19 - } - }, - { - "filename": "338_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 83, - "y": 137, - "w": 21, - "h": 22 - } - }, - { - "filename": "340_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 24, - "h": 19 - }, - "frame": { - "x": 104, - "y": 143, - "w": 24, - "h": 19 - } - }, - { - "filename": "334-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 57, - "y": 326, - "w": 27, - "h": 23 - } - }, - { - "filename": "303_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 26, - "h": 21 - }, - "frame": { - "x": 31, - "y": 329, - "w": 26, - "h": 21 - } - }, - { - "filename": "375_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 27, - "h": 22 - }, - "frame": { - "x": 30, - "y": 350, - "w": 27, - "h": 22 - } - }, - { - "filename": "375_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 8, - "w": 27, - "h": 22 - }, - "frame": { - "x": 57, - "y": 349, - "w": 27, - "h": 22 - } - }, - { - "filename": "381_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 22 - }, - "frame": { - "x": 30, - "y": 372, - "w": 28, - "h": 22 - } - }, - { - "filename": "381_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 22 - }, - "frame": { - "x": 58, - "y": 371, - "w": 28, - "h": 22 - } - }, - { - "filename": "380_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 21 - }, - "frame": { - "x": 30, - "y": 394, - "w": 27, - "h": 21 - } - }, - { - "filename": "380_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 21 - }, - "frame": { - "x": 29, - "y": 415, - "w": 27, - "h": 21 - } - }, - { - "filename": "303_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 26, - "h": 21 - }, - "frame": { - "x": 29, - "y": 436, - "w": 26, - "h": 21 - } - }, - { - "filename": "278_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 14, - "w": 26, - "h": 14 - }, - "frame": { - "x": 29, - "y": 457, - "w": 26, - "h": 14 - } - }, - { - "filename": "303_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 26, - "h": 21 - }, - "frame": { - "x": 28, - "y": 471, - "w": 26, - "h": 21 - } - }, - { - "filename": "315_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 28, - "y": 492, - "w": 25, - "h": 22 - } - }, - { - "filename": "362-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 29, - "y": 514, - "w": 23, - "h": 24 - } - }, - { - "filename": "362-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 29, - "y": 538, - "w": 23, - "h": 24 - } - }, - { - "filename": "315_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 29, - "y": 562, - "w": 25, - "h": 22 - } - }, - { - "filename": "334_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 32, - "y": 584, - "w": 20, - "h": 24 - } - }, - { - "filename": "334_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 32, - "y": 608, - "w": 20, - "h": 24 - } - }, - { - "filename": "308_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 3, - "w": 17, - "h": 25 - }, - "frame": { - "x": 33, - "y": 632, - "w": 17, - "h": 25 - } - }, - { - "filename": "308_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 3, - "w": 17, - "h": 25 - }, - "frame": { - "x": 33, - "y": 657, - "w": 17, - "h": 25 - } - }, - { - "filename": "278_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 14, - "w": 26, - "h": 14 - }, - "frame": { - "x": 58, - "y": 393, - "w": 26, - "h": 14 - } - }, - { - "filename": "278_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 14, - "w": 26, - "h": 14 - }, - "frame": { - "x": 57, - "y": 407, - "w": 26, - "h": 14 - } - }, - { - "filename": "329_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 25, - "h": 20 - }, - "frame": { - "x": 56, - "y": 421, - "w": 25, - "h": 20 - } - }, - { - "filename": "369_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 55, - "y": 441, - "w": 25, - "h": 21 - } - }, - { - "filename": "329_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 25, - "h": 20 - }, - "frame": { - "x": 55, - "y": 462, - "w": 25, - "h": 20 - } - }, - { - "filename": "369_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 54, - "y": 482, - "w": 25, - "h": 21 - } - }, - { - "filename": "320_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 10, - "w": 24, - "h": 18 - }, - "frame": { - "x": 53, - "y": 503, - "w": 24, - "h": 18 - } - }, - { - "filename": "335_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 52, - "y": 521, - "w": 23, - "h": 22 - } - }, - { - "filename": "354_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 22, - "h": 19 - }, - "frame": { - "x": 52, - "y": 543, - "w": 22, - "h": 19 - } - }, - { - "filename": "310_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 54, - "y": 562, - "w": 20, - "h": 23 - } - }, - { - "filename": "335_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 52, - "y": 585, - "w": 23, - "h": 22 - } - }, - { - "filename": "279_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 52, - "y": 607, - "w": 23, - "h": 21 - } - }, - { - "filename": "279_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 52, - "y": 628, - "w": 23, - "h": 21 - } - }, - { - "filename": "279_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 50, - "y": 649, - "w": 23, - "h": 21 - } - }, - { - "filename": "290_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 14, - "w": 23, - "h": 14 - }, - "frame": { - "x": 50, - "y": 670, - "w": 23, - "h": 14 - } - }, - { - "filename": "310_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 20, - "h": 23 - }, - "frame": { - "x": 79, - "y": 160, - "w": 20, - "h": 23 - } - }, - { - "filename": "301_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 21 - }, - "frame": { - "x": 79, - "y": 183, - "w": 22, - "h": 21 - } - }, - { - "filename": "302_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 99, - "y": 162, - "w": 23, - "h": 21 - } - }, - { - "filename": "301_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 21 - }, - "frame": { - "x": 101, - "y": 183, - "w": 22, - "h": 21 - } - }, - { - "filename": "302_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 80, - "y": 204, - "w": 23, - "h": 21 - } - }, - { - "filename": "301_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 21 - }, - "frame": { - "x": 103, - "y": 204, - "w": 22, - "h": 21 - } - }, - { - "filename": "291_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 83, - "y": 225, - "w": 23, - "h": 20 - } - }, - { - "filename": "264_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 106, - "y": 225, - "w": 22, - "h": 20 - } - }, - { - "filename": "291_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 84, - "y": 245, - "w": 23, - "h": 20 - } - }, - { - "filename": "341_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 107, - "y": 245, - "w": 21, - "h": 19 - } - }, - { - "filename": "291_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 84, - "y": 265, - "w": 23, - "h": 20 - } - }, - { - "filename": "341_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 107, - "y": 264, - "w": 21, - "h": 19 - } - }, - { - "filename": "336_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 84, - "y": 285, - "w": 23, - "h": 20 - } - }, - { - "filename": "339_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 14, - "w": 21, - "h": 13 - }, - "frame": { - "x": 107, - "y": 283, - "w": 21, - "h": 13 - } - }, - { - "filename": "336_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 8, - "w": 23, - "h": 20 - }, - "frame": { - "x": 84, - "y": 305, - "w": 23, - "h": 20 - } - }, - { - "filename": "339_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 14, - "w": 21, - "h": 13 - }, - "frame": { - "x": 107, - "y": 296, - "w": 21, - "h": 13 - } - }, - { - "filename": "264_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 84, - "y": 325, - "w": 22, - "h": 20 - } - }, - { - "filename": "385_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 84, - "y": 345, - "w": 22, - "h": 20 - } - }, - { - "filename": "385_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 106, - "y": 325, - "w": 22, - "h": 20 - } - }, - { - "filename": "385_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 106, - "y": 345, - "w": 22, - "h": 20 - } - }, - { - "filename": "333_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 19, - "h": 16 - }, - "frame": { - "x": 107, - "y": 309, - "w": 19, - "h": 16 - } - }, - { - "filename": "320_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 10, - "w": 24, - "h": 18 - }, - "frame": { - "x": 86, - "y": 365, - "w": 24, - "h": 18 - } - }, - { - "filename": "351-sunny_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 110, - "y": 365, - "w": 18, - "h": 20 - } - }, - { - "filename": "290_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 14, - "w": 23, - "h": 14 - }, - "frame": { - "x": 86, - "y": 383, - "w": 23, - "h": 14 - } - }, - { - "filename": "374_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 19, - "h": 17 - }, - "frame": { - "x": 109, - "y": 385, - "w": 19, - "h": 17 - } - }, - { - "filename": "290_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 14, - "w": 23, - "h": 14 - }, - "frame": { - "x": 84, - "y": 397, - "w": 23, - "h": 14 - } - }, - { - "filename": "305_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 83, - "y": 411, - "w": 23, - "h": 17 - } - }, - { - "filename": "354_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 22, - "h": 19 - }, - "frame": { - "x": 106, - "y": 411, - "w": 22, - "h": 19 - } - }, - { - "filename": "305_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 81, - "y": 428, - "w": 23, - "h": 17 - } - }, - { - "filename": "372_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 80, - "y": 445, - "w": 20, - "h": 21 - } - }, - { - "filename": "263_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 22, - "h": 16 - }, - "frame": { - "x": 80, - "y": 466, - "w": 22, - "h": 16 - } - }, - { - "filename": "372_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 79, - "y": 482, - "w": 20, - "h": 21 - } - }, - { - "filename": "305_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 77, - "y": 503, - "w": 23, - "h": 17 - } - }, - { - "filename": "263_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 22, - "h": 16 - }, - "frame": { - "x": 104, - "y": 430, - "w": 22, - "h": 16 - } - }, - { - "filename": "300_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 100, - "y": 446, - "w": 20, - "h": 20 - } - }, - { - "filename": "292_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 102, - "y": 466, - "w": 20, - "h": 19 - } - }, - { - "filename": "374_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 19, - "h": 17 - }, - "frame": { - "x": 99, - "y": 485, - "w": 19, - "h": 17 - } - }, - { - "filename": "292_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 100, - "y": 502, - "w": 20, - "h": 19 - } - }, - { - "filename": "351-snowy_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 73, - "y": 649, - "w": 17, - "h": 23 - } - }, - { - "filename": "285_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 13, - "w": 18, - "h": 15 - }, - "frame": { - "x": 73, - "y": 672, - "w": 18, - "h": 15 - } - }, - { - "filename": "351-snowy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 74, - "y": 543, - "w": 17, - "h": 23 - } - }, - { - "filename": "292_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 74, - "y": 566, - "w": 20, - "h": 19 - } - }, - { - "filename": "351-snowy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 75, - "y": 585, - "w": 17, - "h": 23 - } - }, - { - "filename": "300_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 75, - "y": 608, - "w": 20, - "h": 20 - } - }, - { - "filename": "358_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 21 - }, - "frame": { - "x": 75, - "y": 628, - "w": 15, - "h": 21 - } - }, - { - "filename": "351-rainy_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 90, - "y": 628, - "w": 14, - "h": 21 - } - }, - { - "filename": "351-rainy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 90, - "y": 649, - "w": 14, - "h": 21 - } - }, - { - "filename": "280_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 14, - "h": 18 - }, - "frame": { - "x": 91, - "y": 670, - "w": 14, - "h": 18 - } - }, - { - "filename": "351-rainy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 75, - "y": 521, - "w": 14, - "h": 21 - } - }, - { - "filename": "300_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 89, - "y": 521, - "w": 20, - "h": 20 - } - }, - { - "filename": "333_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 19, - "h": 16 - }, - "frame": { - "x": 109, - "y": 521, - "w": 19, - "h": 16 - } - }, - { - "filename": "309_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 13, - "w": 19, - "h": 15 - }, - "frame": { - "x": 109, - "y": 537, - "w": 19, - "h": 15 - } - }, - { - "filename": "351-sunny_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 91, - "y": 541, - "w": 18, - "h": 20 - } - }, - { - "filename": "309_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 13, - "w": 19, - "h": 15 - }, - "frame": { - "x": 109, - "y": 552, - "w": 19, - "h": 15 - } - }, - { - "filename": "358_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 21 - }, - "frame": { - "x": 94, - "y": 561, - "w": 15, - "h": 21 - } - }, - { - "filename": "285_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 13, - "w": 18, - "h": 15 - }, - "frame": { - "x": 109, - "y": 567, - "w": 18, - "h": 15 - } - }, - { - "filename": "352_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 94, - "y": 582, - "w": 20, - "h": 20 - } - }, - { - "filename": "280_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 10, - "w": 14, - "h": 18 - }, - "frame": { - "x": 114, - "y": 582, - "w": 14, - "h": 18 - } - }, - { - "filename": "352_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 95, - "y": 602, - "w": 20, - "h": 20 - } - }, - { - "filename": "351_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 13, - "h": 20 - }, - "frame": { - "x": 115, - "y": 600, - "w": 13, - "h": 20 - } - }, - { - "filename": "351_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 13, - "h": 20 - }, - "frame": { - "x": 115, - "y": 620, - "w": 13, - "h": 20 - } - }, - { - "filename": "352_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 20, - "h": 20 - }, - "frame": { - "x": 104, - "y": 640, - "w": 20, - "h": 20 - } - }, - { - "filename": "351-sunny_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 105, - "y": 660, - "w": 18, - "h": 20 - } - }, - { - "filename": "307_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 105, - "y": 680, - "w": 17, - "h": 20 - } - }, - { - "filename": "307_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 33, - "y": 682, - "w": 17, - "h": 20 - } - }, - { - "filename": "311_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 50, - "y": 684, - "w": 16, - "h": 19 - } - }, - { - "filename": "311_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 32, - "y": 702, - "w": 16, - "h": 19 - } - }, - { - "filename": "371_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 20 - }, - "frame": { - "x": 32, - "y": 721, - "w": 15, - "h": 20 - } - }, - { - "filename": "371_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 20 - }, - "frame": { - "x": 47, - "y": 721, - "w": 15, - "h": 20 - } - }, - { - "filename": "304_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 16, - "w": 16, - "h": 12 - }, - "frame": { - "x": 48, - "y": 703, - "w": 16, - "h": 12 - } - }, - { - "filename": "312_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 66, - "y": 687, - "w": 16, - "h": 19 - } - }, - { - "filename": "312_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 82, - "y": 688, - "w": 16, - "h": 19 - } - }, - { - "filename": "304_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 16, - "w": 16, - "h": 12 - }, - "frame": { - "x": 64, - "y": 706, - "w": 16, - "h": 12 - } - }, - { - "filename": "298_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 62, - "y": 718, - "w": 15, - "h": 19 - } - }, - { - "filename": "304_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 16, - "w": 16, - "h": 12 - }, - "frame": { - "x": 80, - "y": 707, - "w": 16, - "h": 12 - } - }, - { - "filename": "298_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 77, - "y": 719, - "w": 15, - "h": 19 - } - }, - { - "filename": "353_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 19 - }, - "frame": { - "x": 92, - "y": 719, - "w": 15, - "h": 19 - } - }, - { - "filename": "353_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 15, - "h": 19 - }, - "frame": { - "x": 98, - "y": 700, - "w": 15, - "h": 19 - } - }, - { - "filename": "361_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 113, - "y": 700, - "w": 15, - "h": 19 - } - }, - { - "filename": "361_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 15, - "h": 19 - }, - "frame": { - "x": 107, - "y": 719, - "w": 15, - "h": 19 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:08d789205e17c770aba587de5930cc48:1f40918738164700bc9f35cd79349b0a:039b026190bf1878996b3e03190bcdf3$" - } -} +{ "frames": { + "255_2": { + "frame": { "x": 167, "y": 275, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "255_3": { + "frame": { "x": 367, "y": 186, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "256_2": { + "frame": { "x": 106, "y": 124, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "256_3": { + "frame": { "x": 51, "y": 124, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "257-mega_2": { + "frame": { "x": 146, "y": 0, "w": 32, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 32, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "257-mega_3": { + "frame": { "x": 178, "y": 0, "w": 32, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 32, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "257_2": { + "frame": { "x": 0, "y": 81, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "257_3": { + "frame": { "x": 150, "y": 78, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "261_2": { + "frame": { "x": 17, "y": 232, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "261_3": { + "frame": { "x": 38, "y": 232, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "262_2": { + "frame": { "x": 48, "y": 149, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "262_3": { + "frame": { "x": 96, "y": 149, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "263_2": { + "frame": { "x": 123, "y": 243, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "263_3": { + "frame": { "x": 252, "y": 243, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "264_2": { + "frame": { "x": 115, "y": 193, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "264_3": { + "frame": { "x": 66, "y": 192, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "278_1": { + "frame": { "x": 275, "y": 78, "w": 26, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 26, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "278_2": { + "frame": { "x": 151, "y": 232, "w": 26, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 26, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "278_3": { + "frame": { "x": 97, "y": 233, "w": 26, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 14, "w": 26, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "279_1": { + "frame": { "x": 178, "y": 165, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "279_2": { + "frame": { "x": 144, "y": 166, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "279_3": { + "frame": { "x": 254, "y": 161, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "280_2": { + "frame": { "x": 122, "y": 275, "w": 14, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 14, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "280_3": { + "frame": { "x": 108, "y": 275, "w": 14, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 14, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "281_2": { + "frame": { "x": 159, "y": 209, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "281_3": { + "frame": { "x": 177, "y": 210, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "282-mega_2": { + "frame": { "x": 227, "y": 99, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "282-mega_3": { + "frame": { "x": 352, "y": 0, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "282_2": { + "frame": { "x": 201, "y": 98, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "282_3": { + "frame": { "x": 175, "y": 98, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "285_2": { + "frame": { "x": 15, "y": 271, "w": 18, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 13, "w": 18, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "285_3": { + "frame": { "x": 307, "y": 269, "w": 18, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 13, "w": 18, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "286_2": { + "frame": { "x": 220, "y": 123, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "286_3": { + "frame": { "x": 0, "y": 107, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "290_1": { + "frame": { "x": 291, "y": 249, "w": 23, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 14, "w": 23, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "290_2": { + "frame": { "x": 353, "y": 248, "w": 23, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 14, "w": 23, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "290_3": { + "frame": { "x": 97, "y": 247, "w": 23, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 14, "w": 23, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "291_1": { + "frame": { "x": 277, "y": 180, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "291_2": { + "frame": { "x": 245, "y": 182, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "291_3": { + "frame": { "x": 222, "y": 180, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "292_1": { + "frame": { "x": 357, "y": 229, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "292_2": { + "frame": { "x": 77, "y": 231, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "292_3": { + "frame": { "x": 296, "y": 230, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "298_2": { + "frame": { "x": 139, "y": 263, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "298_3": { + "frame": { "x": 277, "y": 263, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "300_1": { + "frame": { "x": 108, "y": 213, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "300_2": { + "frame": { "x": 17, "y": 212, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "300_3": { + "frame": { "x": 88, "y": 211, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "301_1": { + "frame": { "x": 115, "y": 172, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "301_2": { + "frame": { "x": 0, "y": 178, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "301_3": { + "frame": { "x": 93, "y": 170, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "302-mega_2": { + "frame": { "x": 274, "y": 51, "w": 28, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 28, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "302-mega_3": { + "frame": { "x": 150, "y": 51, "w": 28, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 28, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "302_2": { + "frame": { "x": 338, "y": 166, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "302_3": { + "frame": { "x": 315, "y": 166, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "303-mega_1": { + "frame": { "x": 26, "y": 51, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "303-mega_2": { + "frame": { "x": 56, "y": 51, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "303-mega_3": { + "frame": { "x": 342, "y": 50, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "303_1": { + "frame": { "x": 315, "y": 145, "w": 26, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 26, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "303_2": { + "frame": { "x": 341, "y": 145, "w": 26, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 26, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "303_3": { + "frame": { "x": 178, "y": 144, "w": 26, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 26, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "304_1": { + "frame": { "x": 196, "y": 275, "w": 16, "h": 12 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 16, "w": 16, "h": 12 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "304_2": { + "frame": { "x": 180, "y": 275, "w": 16, "h": 12 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 16, "w": 16, "h": 12 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "304_3": { + "frame": { "x": 252, "y": 202, "w": 16, "h": 12 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 16, "w": 16, "h": 12 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "305_1": { + "frame": { "x": 334, "y": 227, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "305_2": { + "frame": { "x": 128, "y": 226, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "305_3": { + "frame": { "x": 273, "y": 226, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "306-mega_1": { + "frame": { "x": 62, "y": 25, "w": 31, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 31, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "306-mega_2": { + "frame": { "x": 93, "y": 25, "w": 31, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 31, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "306-mega_3": { + "frame": { "x": 342, "y": 24, "w": 31, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 31, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "306_1": { + "frame": { "x": 55, "y": 77, "w": 29, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 29, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "306_2": { + "frame": { "x": 338, "y": 76, "w": 29, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 29, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "306_3": { + "frame": { "x": 26, "y": 77, "w": 29, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 29, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "307_2": { + "frame": { "x": 215, "y": 241, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "307_3": { + "frame": { "x": 274, "y": 243, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "308-mega_2": { + "frame": { "x": 190, "y": 48, "w": 29, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 29, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "308-mega_3": { + "frame": { "x": 219, "y": 48, "w": 29, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 29, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "308_2": { + "frame": { "x": 0, "y": 199, "w": 17, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 3, "w": 17, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "308_3": { + "frame": { "x": 235, "y": 202, "w": 17, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 3, "w": 17, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "309_2": { + "frame": { "x": 45, "y": 268, "w": 19, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 13, "w": 19, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "309_3": { + "frame": { "x": 253, "y": 99, "w": 19, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 13, "w": 19, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "310-mega_2": { + "frame": { "x": 25, "y": 101, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "310-mega_3": { + "frame": { "x": 338, "y": 100, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "310_2": { + "frame": { "x": 323, "y": 187, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "310_3": { + "frame": { "x": 167, "y": 186, "w": 20, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 20, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "311_1": { + "frame": { "x": 164, "y": 256, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "311_2": { + "frame": { "x": 77, "y": 250, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "311_3": { + "frame": { "x": 314, "y": 250, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "312_2": { + "frame": { "x": 196, "y": 256, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "312_3": { + "frame": { "x": 180, "y": 256, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "315_2": { + "frame": { "x": 153, "y": 144, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "315_3": { + "frame": { "x": 290, "y": 138, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "320_2": { + "frame": { "x": 211, "y": 200, "w": 24, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 24, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "320_3": { + "frame": { "x": 268, "y": 200, "w": 24, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 10, "w": 24, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "321_2": { + "frame": { "x": 84, "y": 98, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "321_3": { + "frame": { "x": 308, "y": 93, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "327_2": { + "frame": { "x": 364, "y": 100, "w": 15, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 15, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "327_3": { + "frame": { "x": 0, "y": 247, "w": 15, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 15, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "328_2": { + "frame": { "x": 177, "y": 237, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "328_3": { + "frame": { "x": 196, "y": 237, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "329_2": { + "frame": { "x": 229, "y": 160, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "329_3": { + "frame": { "x": 290, "y": 160, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "330_2": { + "frame": { "x": 51, "y": 101, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "330_3": { + "frame": { "x": 139, "y": 104, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "333_2": { + "frame": { "x": 45, "y": 252, "w": 19, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 19, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "333_3": { + "frame": { "x": 120, "y": 259, "w": 19, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 19, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "334-mega_2": { + "frame": { "x": 280, "y": 114, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "334-mega_3": { + "frame": { "x": 253, "y": 114, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "334_2": { + "frame": { "x": 73, "y": 168, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "334_3": { + "frame": { "x": 23, "y": 167, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "335_2": { + "frame": { "x": 0, "y": 156, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "335_3": { + "frame": { "x": 121, "y": 150, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "336_2": { + "frame": { "x": 137, "y": 187, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "336_3": { + "frame": { "x": 300, "y": 187, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 8, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "337_2": { + "frame": { "x": 277, "y": 161, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "337_3": { + "frame": { "x": 154, "y": 275, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "338_2": { + "frame": { "x": 43, "y": 170, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "338_3": { + "frame": { "x": 201, "y": 169, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "339_2": { + "frame": { "x": 226, "y": 268, "w": 21, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 14, "w": 21, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "339_3": { + "frame": { "x": 64, "y": 269, "w": 21, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 14, "w": 21, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "340_2": { + "frame": { "x": 187, "y": 191, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "340_3": { + "frame": { "x": 343, "y": 187, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "341_2": { + "frame": { "x": 252, "y": 218, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "341_3": { + "frame": { "x": 195, "y": 218, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "342_2": { + "frame": { "x": 129, "y": 127, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "342_3": { + "frame": { "x": 243, "y": 137, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-rainy_1": { + "frame": { "x": 330, "y": 261, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-rainy_2": { + "frame": { "x": 344, "y": 262, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-rainy_3": { + "frame": { "x": 212, "y": 261, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-snowy_1": { + "frame": { "x": 216, "y": 218, "w": 17, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 17, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-snowy_2": { + "frame": { "x": 363, "y": 206, "w": 17, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 17, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-snowy_3": { + "frame": { "x": 0, "y": 224, "w": 17, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 17, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-sunny_1": { + "frame": { "x": 59, "y": 232, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-sunny_2": { + "frame": { "x": 316, "y": 230, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351-sunny_3": { + "frame": { "x": 362, "y": 124, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351_2": { + "frame": { "x": 367, "y": 76, "w": 13, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 13, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "351_3": { + "frame": { "x": 367, "y": 144, "w": 13, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 13, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "352_1": { + "frame": { "x": 37, "y": 212, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "352_2": { + "frame": { "x": 57, "y": 212, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "352_3": { + "frame": { "x": 314, "y": 210, "w": 20, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 20, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "353_2": { + "frame": { "x": 262, "y": 263, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "353_3": { + "frame": { "x": 292, "y": 263, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "354-mega_2": { + "frame": { "x": 0, "y": 51, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "354-mega_3": { + "frame": { "x": 248, "y": 48, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "354_2": { + "frame": { "x": 137, "y": 207, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "354_3": { + "frame": { "x": 292, "y": 207, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "357_2": { + "frame": { "x": 31, "y": 25, "w": 31, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 31, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "357_3": { + "frame": { "x": 0, "y": 25, "w": 31, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 31, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "358_1": { + "frame": { "x": 232, "y": 247, "w": 15, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "358_2": { + "frame": { "x": 15, "y": 250, "w": 15, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "358_3": { + "frame": { "x": 30, "y": 250, "w": 15, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "361_2": { + "frame": { "x": 0, "y": 268, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "361_3": { + "frame": { "x": 358, "y": 262, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "362-mega_2": { + "frame": { "x": 0, "y": 132, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "362-mega_3": { + "frame": { "x": 267, "y": 137, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "362_2": { + "frame": { "x": 233, "y": 227, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "362_3": { + "frame": { "x": 361, "y": 166, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "369_2": { + "frame": { "x": 204, "y": 148, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "369_3": { + "frame": { "x": 23, "y": 146, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "371_2": { + "frame": { "x": 247, "y": 259, "w": 15, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "371_3": { + "frame": { "x": 93, "y": 261, "w": 15, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 15, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "372_2": { + "frame": { "x": 343, "y": 206, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "372_3": { + "frame": { "x": 190, "y": 27, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "373-mega_2": { + "frame": { "x": 111, "y": 0, "w": 35, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 35, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "373-mega_3": { + "frame": { "x": 76, "y": 0, "w": 35, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 2, "y": 3, "w": 35, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "373_2": { + "frame": { "x": 86, "y": 75, "w": 32, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 32, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "373_3": { + "frame": { "x": 118, "y": 75, "w": 32, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 32, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "374_2": { + "frame": { "x": 145, "y": 246, "w": 19, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "374_3": { + "frame": { "x": 334, "y": 244, "w": 19, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "375_2": { + "frame": { "x": 166, "y": 122, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "375_3": { + "frame": { "x": 193, "y": 122, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "376-mega_2": { + "frame": { "x": 118, "y": 51, "w": 32, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 5, "w": 32, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "376-mega_3": { + "frame": { "x": 86, "y": 51, "w": 32, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 5, "w": 32, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "376_2": { + "frame": { "x": 178, "y": 75, "w": 32, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 32, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "376_3": { + "frame": { "x": 210, "y": 75, "w": 32, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 32, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "380-mega_2": { + "frame": { "x": 282, "y": 0, "w": 35, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 35, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "380-mega_3": { + "frame": { "x": 317, "y": 0, "w": 35, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 35, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "380_2": { + "frame": { "x": 23, "y": 125, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "380_3": { + "frame": { "x": 335, "y": 124, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "381-mega_2": { + "frame": { "x": 210, "y": 24, "w": 35, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 35, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "381-mega_3": { + "frame": { "x": 245, "y": 24, "w": 35, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 35, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "381_2": { + "frame": { "x": 78, "y": 121, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "381_3": { + "frame": { "x": 307, "y": 116, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "382-primal_2": { + "frame": { "x": 302, "y": 72, "w": 36, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 36, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "382-primal_3": { + "frame": { "x": 302, "y": 51, "w": 36, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 8, "w": 36, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "382_2": { + "frame": { "x": 275, "y": 93, "w": 33, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 8, "w": 33, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "382_3": { + "frame": { "x": 242, "y": 78, "w": 33, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 8, "w": 33, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "383-primal_2": { + "frame": { "x": 246, "y": 0, "w": 36, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 4, "w": 36, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "383-primal_3": { + "frame": { "x": 210, "y": 0, "w": 36, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 4, "w": 36, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "383_2": { + "frame": { "x": 157, "y": 27, "w": 33, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 33, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "383_3": { + "frame": { "x": 124, "y": 27, "w": 33, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 4, "w": 33, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "384-mega_2": { + "frame": { "x": 38, "y": 0, "w": 38, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 3, "w": 38, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "384-mega_3": { + "frame": { "x": 0, "y": 0, "w": 38, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 3, "w": 38, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "384_2": { + "frame": { "x": 311, "y": 24, "w": 31, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 31, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "384_3": { + "frame": { "x": 280, "y": 24, "w": 31, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 31, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "385_1": { + "frame": { "x": 22, "y": 192, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "385_2": { + "frame": { "x": 93, "y": 191, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "385_3": { + "frame": { "x": 44, "y": 192, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "475-mega_3": { + "frame": { "x": 114, "y": 98, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "475_3": { + "frame": { "x": 74, "y": 143, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_3v.png", + "format": "RGBA8888", + "size": { "w": 380, "h": 294 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_3v.png b/public/images/pokemon_icons_3v.png index ab3eeae09ae..51a1707ea35 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_4.png b/public/images/pokemon_icons_4.png index 7e475c0685a..5b271a3930c 100644 Binary files a/public/images/pokemon_icons_4.png and b/public/images/pokemon_icons_4.png differ diff --git a/public/images/pokemon_icons_4v.json b/public/images/pokemon_icons_4v.json index 44bced3adc7..9113fe89dc8 100644 --- a/public/images/pokemon_icons_4v.json +++ b/public/images/pokemon_icons_4v.json @@ -1,3359 +1,1390 @@ -{ - "textures": [ - { - "image": "pokemon_icons_4v.png", - "format": "RGBA8888", - "size": { - "w": 123, - "h": 656 - }, - "scale": 1, - "frames": [ - { - "filename": "491_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 31, - "h": 28 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 28 - } - }, - { - "filename": "491_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 31, - "h": 28 - }, - "frame": { - "x": 0, - "y": 28, - "w": 31, - "h": 28 - } - }, - { - "filename": "428-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 33, - "h": 24 - }, - "frame": { - "x": 31, - "y": 0, - "w": 33, - "h": 24 - } - }, - { - "filename": "428-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 33, - "h": 24 - }, - "frame": { - "x": 31, - "y": 24, - "w": 33, - "h": 24 - } - }, - { - "filename": "445-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 30, - "h": 25 - }, - "frame": { - "x": 0, - "y": 56, - "w": 30, - "h": 25 - } - }, - { - "filename": "445-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 30, - "h": 25 - }, - "frame": { - "x": 64, - "y": 0, - "w": 30, - "h": 25 - } - }, - { - "filename": "445_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 94, - "y": 0, - "w": 29, - "h": 22 - } - }, - { - "filename": "445-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 30, - "h": 25 - }, - "frame": { - "x": 0, - "y": 81, - "w": 30, - "h": 25 - } - }, - { - "filename": "445_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 94, - "y": 22, - "w": 29, - "h": 22 - } - }, - { - "filename": "487-altered_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 30, - "h": 24 - }, - "frame": { - "x": 64, - "y": 25, - "w": 30, - "h": 24 - } - }, - { - "filename": "445_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 94, - "y": 44, - "w": 29, - "h": 22 - } - }, - { - "filename": "487-altered_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 30, - "h": 24 - }, - "frame": { - "x": 0, - "y": 106, - "w": 30, - "h": 24 - } - }, - { - "filename": "487-origin_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 28, - "h": 25 - }, - "frame": { - "x": 0, - "y": 130, - "w": 28, - "h": 25 - } - }, - { - "filename": "487-origin_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 28, - "h": 25 - }, - "frame": { - "x": 0, - "y": 155, - "w": 28, - "h": 25 - } - }, - { - "filename": "389_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 0, - "y": 180, - "w": 28, - "h": 23 - } - }, - { - "filename": "389_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 0, - "y": 203, - "w": 28, - "h": 23 - } - }, - { - "filename": "475-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 0, - "y": 226, - "w": 25, - "h": 26 - } - }, - { - "filename": "475-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 0, - "y": 252, - "w": 25, - "h": 26 - } - }, - { - "filename": "488_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 0, - "y": 278, - "w": 25, - "h": 26 - } - }, - { - "filename": "488_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 0, - "y": 304, - "w": 25, - "h": 26 - } - }, - { - "filename": "462_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 330, - "w": 26, - "h": 24 - } - }, - { - "filename": "462_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 354, - "w": 26, - "h": 24 - } - }, - { - "filename": "482_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 378, - "w": 26, - "h": 24 - } - }, - { - "filename": "482_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 402, - "w": 26, - "h": 24 - } - }, - { - "filename": "482_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 426, - "w": 26, - "h": 24 - } - }, - { - "filename": "466_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 23 - }, - "frame": { - "x": 0, - "y": 450, - "w": 26, - "h": 23 - } - }, - { - "filename": "466_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 23 - }, - "frame": { - "x": 0, - "y": 473, - "w": 26, - "h": 23 - } - }, - { - "filename": "466_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 23 - }, - "frame": { - "x": 0, - "y": 496, - "w": 26, - "h": 23 - } - }, - { - "filename": "471_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 0, - "y": 519, - "w": 27, - "h": 23 - } - }, - { - "filename": "471_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 0, - "y": 542, - "w": 27, - "h": 23 - } - }, - { - "filename": "471_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 0, - "y": 565, - "w": 27, - "h": 23 - } - }, - { - "filename": "464_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 22 - }, - "frame": { - "x": 0, - "y": 588, - "w": 27, - "h": 22 - } - }, - { - "filename": "464_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 22 - }, - "frame": { - "x": 0, - "y": 610, - "w": 27, - "h": 22 - } - }, - { - "filename": "426_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 0, - "y": 632, - "w": 24, - "h": 24 - } - }, - { - "filename": "426_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 24, - "y": 632, - "w": 24, - "h": 24 - } - }, - { - "filename": "485_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 33, - "h": 20 - }, - "frame": { - "x": 31, - "y": 48, - "w": 33, - "h": 20 - } - }, - { - "filename": "472_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 31, - "h": 22 - }, - "frame": { - "x": 30, - "y": 68, - "w": 31, - "h": 22 - } - }, - { - "filename": "472_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 6, - "w": 31, - "h": 22 - }, - "frame": { - "x": 30, - "y": 90, - "w": 31, - "h": 22 - } - }, - { - "filename": "485_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 33, - "h": 20 - }, - "frame": { - "x": 30, - "y": 112, - "w": 33, - "h": 20 - } - }, - { - "filename": "465_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 28, - "y": 132, - "w": 29, - "h": 22 - } - }, - { - "filename": "465_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 28, - "y": 154, - "w": 29, - "h": 22 - } - }, - { - "filename": "481_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 28, - "y": 176, - "w": 29, - "h": 22 - } - }, - { - "filename": "481_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 28, - "y": 198, - "w": 29, - "h": 22 - } - }, - { - "filename": "481_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 64, - "y": 49, - "w": 29, - "h": 22 - } - }, - { - "filename": "428_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 61, - "y": 71, - "w": 26, - "h": 22 - } - }, - { - "filename": "468_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 28, - "h": 19 - }, - "frame": { - "x": 61, - "y": 93, - "w": 28, - "h": 19 - } - }, - { - "filename": "428_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 63, - "y": 112, - "w": 26, - "h": 22 - } - }, - { - "filename": "437_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 21 - }, - "frame": { - "x": 57, - "y": 134, - "w": 27, - "h": 21 - } - }, - { - "filename": "437_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 21 - }, - "frame": { - "x": 57, - "y": 155, - "w": 27, - "h": 21 - } - }, - { - "filename": "480_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 57, - "y": 176, - "w": 26, - "h": 22 - } - }, - { - "filename": "480_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 57, - "y": 198, - "w": 26, - "h": 22 - } - }, - { - "filename": "468_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 28, - "h": 19 - }, - "frame": { - "x": 28, - "y": 220, - "w": 28, - "h": 19 - } - }, - { - "filename": "468_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 28, - "h": 19 - }, - "frame": { - "x": 56, - "y": 220, - "w": 28, - "h": 19 - } - }, - { - "filename": "480_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 25, - "y": 239, - "w": 26, - "h": 22 - } - }, - { - "filename": "413-sandy_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 25, - "y": 261, - "w": 24, - "h": 23 - } - }, - { - "filename": "413-sandy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 25, - "y": 284, - "w": 24, - "h": 23 - } - }, - { - "filename": "413-sandy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 25, - "y": 307, - "w": 24, - "h": 23 - } - }, - { - "filename": "429_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 19, - "h": 28 - }, - "frame": { - "x": 26, - "y": 330, - "w": 19, - "h": 28 - } - }, - { - "filename": "429_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 19, - "h": 28 - }, - "frame": { - "x": 26, - "y": 358, - "w": 19, - "h": 28 - } - }, - { - "filename": "429_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 19, - "h": 28 - }, - "frame": { - "x": 26, - "y": 386, - "w": 19, - "h": 28 - } - }, - { - "filename": "470_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 51, - "y": 239, - "w": 25, - "h": 22 - } - }, - { - "filename": "470_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 49, - "y": 261, - "w": 25, - "h": 22 - } - }, - { - "filename": "470_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 49, - "y": 283, - "w": 25, - "h": 22 - } - }, - { - "filename": "475_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 22, - "h": 25 - }, - "frame": { - "x": 49, - "y": 305, - "w": 22, - "h": 25 - } - }, - { - "filename": "475_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 22, - "h": 25 - }, - "frame": { - "x": 45, - "y": 330, - "w": 22, - "h": 25 - } - }, - { - "filename": "413-plant_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 45, - "y": 355, - "w": 22, - "h": 23 - } - }, - { - "filename": "413-plant_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 45, - "y": 378, - "w": 22, - "h": 23 - } - }, - { - "filename": "402_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 26, - "y": 414, - "w": 20, - "h": 24 - } - }, - { - "filename": "402_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 26, - "y": 438, - "w": 20, - "h": 24 - } - }, - { - "filename": "413-plant_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 26, - "y": 462, - "w": 22, - "h": 23 - } - }, - { - "filename": "413-trash_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 26, - "y": 485, - "w": 23, - "h": 23 - } - }, - { - "filename": "413-trash_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 27, - "y": 508, - "w": 23, - "h": 23 - } - }, - { - "filename": "413-trash_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 27, - "y": 531, - "w": 23, - "h": 23 - } - }, - { - "filename": "423-east_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 27, - "y": 554, - "w": 23, - "h": 22 - } - }, - { - "filename": "423-east_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 27, - "y": 576, - "w": 23, - "h": 22 - } - }, - { - "filename": "423-east_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 27, - "y": 598, - "w": 23, - "h": 22 - } - }, - { - "filename": "387_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 87, - "y": 71, - "w": 18, - "h": 22 - } - }, - { - "filename": "387_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 105, - "y": 66, - "w": 18, - "h": 22 - } - }, - { - "filename": "427_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 105, - "y": 88, - "w": 18, - "h": 22 - } - }, - { - "filename": "412-trash_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 16, - "h": 23 - }, - "frame": { - "x": 89, - "y": 93, - "w": 16, - "h": 23 - } - }, - { - "filename": "427_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 105, - "y": 110, - "w": 18, - "h": 22 - } - }, - { - "filename": "412-trash_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 16, - "h": 23 - }, - "frame": { - "x": 89, - "y": 116, - "w": 16, - "h": 23 - } - }, - { - "filename": "447_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 105, - "y": 132, - "w": 18, - "h": 18 - } - }, - { - "filename": "454_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 84, - "y": 139, - "w": 21, - "h": 22 - } - }, - { - "filename": "447_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 105, - "y": 150, - "w": 18, - "h": 18 - } - }, - { - "filename": "442_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 84, - "y": 161, - "w": 21, - "h": 20 - } - }, - { - "filename": "447_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 105, - "y": 168, - "w": 18, - "h": 18 - } - }, - { - "filename": "400_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 83, - "y": 181, - "w": 22, - "h": 22 - } - }, - { - "filename": "492-land_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 18, - "h": 16 - }, - "frame": { - "x": 105, - "y": 186, - "w": 18, - "h": 16 - } - }, - { - "filename": "489_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 83, - "y": 203, - "w": 23, - "h": 17 - } - }, - { - "filename": "401_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 106, - "y": 202, - "w": 17, - "h": 22 - } - }, - { - "filename": "388_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 21 - }, - "frame": { - "x": 84, - "y": 220, - "w": 22, - "h": 21 - } - }, - { - "filename": "401_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 106, - "y": 224, - "w": 17, - "h": 22 - } - }, - { - "filename": "414_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 25, - "h": 20 - }, - "frame": { - "x": 76, - "y": 241, - "w": 25, - "h": 20 - } - }, - { - "filename": "400_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 101, - "y": 246, - "w": 22, - "h": 22 - } - }, - { - "filename": "414_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 25, - "h": 20 - }, - "frame": { - "x": 74, - "y": 261, - "w": 25, - "h": 20 - } - }, - { - "filename": "423-west_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 74, - "y": 281, - "w": 23, - "h": 22 - } - }, - { - "filename": "423-west_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 99, - "y": 268, - "w": 23, - "h": 22 - } - }, - { - "filename": "423-west_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 97, - "y": 290, - "w": 23, - "h": 22 - } - }, - { - "filename": "433_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 23, - "h": 19 - }, - "frame": { - "x": 74, - "y": 303, - "w": 23, - "h": 19 - } - }, - { - "filename": "433_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 23, - "h": 19 - }, - "frame": { - "x": 97, - "y": 312, - "w": 23, - "h": 19 - } - }, - { - "filename": "448-mega_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 19, - "h": 24 - }, - "frame": { - "x": 46, - "y": 401, - "w": 19, - "h": 24 - } - }, - { - "filename": "448-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 19, - "h": 24 - }, - "frame": { - "x": 46, - "y": 425, - "w": 19, - "h": 24 - } - }, - { - "filename": "433_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 23, - "h": 19 - }, - "frame": { - "x": 71, - "y": 322, - "w": 23, - "h": 19 - } - }, - { - "filename": "444_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 67, - "y": 341, - "w": 23, - "h": 21 - } - }, - { - "filename": "444_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 67, - "y": 362, - "w": 23, - "h": 21 - } - }, - { - "filename": "444_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 23, - "h": 21 - }, - "frame": { - "x": 67, - "y": 383, - "w": 23, - "h": 21 - } - }, - { - "filename": "388_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 21 - }, - "frame": { - "x": 65, - "y": 404, - "w": 22, - "h": 21 - } - }, - { - "filename": "448-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 19, - "h": 24 - }, - "frame": { - "x": 65, - "y": 425, - "w": 19, - "h": 24 - } - }, - { - "filename": "454_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 48, - "y": 449, - "w": 21, - "h": 22 - } - }, - { - "filename": "407_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 69, - "y": 449, - "w": 20, - "h": 22 - } - }, - { - "filename": "489_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 94, - "y": 331, - "w": 23, - "h": 17 - } - }, - { - "filename": "492-sky_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 90, - "y": 348, - "w": 21, - "h": 22 - } - }, - { - "filename": "492-sky_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 90, - "y": 370, - "w": 21, - "h": 22 - } - }, - { - "filename": "406_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 12, - "h": 18 - }, - "frame": { - "x": 111, - "y": 348, - "w": 12, - "h": 18 - } - }, - { - "filename": "406_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 12, - "h": 18 - }, - "frame": { - "x": 111, - "y": 366, - "w": 12, - "h": 18 - } - }, - { - "filename": "442_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 90, - "y": 392, - "w": 21, - "h": 20 - } - }, - { - "filename": "489_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 11, - "w": 23, - "h": 17 - }, - "frame": { - "x": 87, - "y": 412, - "w": 23, - "h": 17 - } - }, - { - "filename": "490_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 84, - "y": 429, - "w": 22, - "h": 20 - } - }, - { - "filename": "412-plant_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 22 - }, - "frame": { - "x": 106, - "y": 429, - "w": 17, - "h": 22 - } - }, - { - "filename": "412-plant_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 22 - }, - "frame": { - "x": 89, - "y": 449, - "w": 17, - "h": 22 - } - }, - { - "filename": "412-plant_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 17, - "h": 22 - }, - "frame": { - "x": 106, - "y": 451, - "w": 17, - "h": 22 - } - }, - { - "filename": "436_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 13, - "h": 16 - }, - "frame": { - "x": 110, - "y": 412, - "w": 13, - "h": 16 - } - }, - { - "filename": "407_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 49, - "y": 471, - "w": 20, - "h": 22 - } - }, - { - "filename": "490_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 69, - "y": 471, - "w": 22, - "h": 20 - } - }, - { - "filename": "412-sandy_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 15, - "h": 23 - }, - "frame": { - "x": 91, - "y": 471, - "w": 15, - "h": 23 - } - }, - { - "filename": "422-west_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 106, - "y": 473, - "w": 17, - "h": 20 - } - }, - { - "filename": "422-west_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 106, - "y": 493, - "w": 17, - "h": 20 - } - }, - { - "filename": "490_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 69, - "y": 491, - "w": 22, - "h": 20 - } - }, - { - "filename": "412-sandy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 15, - "h": 23 - }, - "frame": { - "x": 91, - "y": 494, - "w": 15, - "h": 23 - } - }, - { - "filename": "461_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 50, - "y": 493, - "w": 19, - "h": 22 - } - }, - { - "filename": "422-west_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 106, - "y": 513, - "w": 17, - "h": 20 - } - }, - { - "filename": "461_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 19, - "h": 22 - }, - "frame": { - "x": 50, - "y": 515, - "w": 19, - "h": 22 - } - }, - { - "filename": "412-trash_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 16, - "h": 23 - }, - "frame": { - "x": 69, - "y": 511, - "w": 16, - "h": 23 - } - }, - { - "filename": "422-east_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 50, - "y": 537, - "w": 19, - "h": 20 - } - }, - { - "filename": "422-east_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 50, - "y": 557, - "w": 19, - "h": 20 - } - }, - { - "filename": "422-east_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 50, - "y": 577, - "w": 19, - "h": 20 - } - }, - { - "filename": "412-sandy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 15, - "h": 23 - }, - "frame": { - "x": 69, - "y": 534, - "w": 15, - "h": 23 - } - }, - { - "filename": "443_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 50, - "y": 597, - "w": 19, - "h": 19 - } - }, - { - "filename": "425_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 15, - "h": 22 - }, - "frame": { - "x": 69, - "y": 557, - "w": 15, - "h": 22 - } - }, - { - "filename": "425_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 15, - "h": 22 - }, - "frame": { - "x": 69, - "y": 579, - "w": 15, - "h": 22 - } - }, - { - "filename": "458_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 10, - "w": 20, - "h": 17 - }, - "frame": { - "x": 85, - "y": 517, - "w": 20, - "h": 17 - } - }, - { - "filename": "443_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 84, - "y": 534, - "w": 19, - "h": 19 - } - }, - { - "filename": "443_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 19, - "h": 19 - }, - "frame": { - "x": 84, - "y": 553, - "w": 19, - "h": 19 - } - }, - { - "filename": "478_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 22 - }, - "frame": { - "x": 84, - "y": 572, - "w": 16, - "h": 22 - } - }, - { - "filename": "458_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 10, - "w": 20, - "h": 17 - }, - "frame": { - "x": 103, - "y": 534, - "w": 20, - "h": 17 - } - }, - { - "filename": "399_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 103, - "y": 551, - "w": 20, - "h": 16 - } - }, - { - "filename": "399_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 103, - "y": 567, - "w": 20, - "h": 16 - } - }, - { - "filename": "448_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 16, - "h": 21 - }, - "frame": { - "x": 69, - "y": 601, - "w": 16, - "h": 21 - } - }, - { - "filename": "478_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 16, - "h": 22 - }, - "frame": { - "x": 85, - "y": 594, - "w": 16, - "h": 22 - } - }, - { - "filename": "448_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 16, - "h": 21 - }, - "frame": { - "x": 101, - "y": 583, - "w": 16, - "h": 21 - } - }, - { - "filename": "448_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 16, - "h": 21 - }, - "frame": { - "x": 101, - "y": 604, - "w": 16, - "h": 21 - } - }, - { - "filename": "492-land_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 18, - "h": 16 - }, - "frame": { - "x": 50, - "y": 616, - "w": 18, - "h": 16 - } - }, - { - "filename": "453_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 17 - }, - "frame": { - "x": 48, - "y": 632, - "w": 17, - "h": 17 - } - }, - { - "filename": "453_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 17 - }, - "frame": { - "x": 68, - "y": 622, - "w": 17, - "h": 17 - } - }, - { - "filename": "440_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 14, - "h": 19 - }, - "frame": { - "x": 85, - "y": 616, - "w": 14, - "h": 19 - } - }, - { - "filename": "440_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 14, - "h": 19 - }, - "frame": { - "x": 99, - "y": 625, - "w": 14, - "h": 19 - } - }, - { - "filename": "440_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 14, - "h": 19 - }, - "frame": { - "x": 85, - "y": 635, - "w": 14, - "h": 19 - } - }, - { - "filename": "436_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 13, - "h": 16 - }, - "frame": { - "x": 65, - "y": 639, - "w": 13, - "h": 16 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ff9a4f796b02d3e2c7977d3c3d76a7b8:eabe987f61ff488162814a018b9b9c12:ebc3f8ec5b2480b298192d752b6e57dc$" - } -} +{ "frames": { + "387_2": { + "frame": { "x": 39, "y": 225, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "387_3": { + "frame": { "x": 148, "y": 225, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "388_2": { + "frame": { "x": 261, "y": 187, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "388_3": { + "frame": { "x": 64, "y": 190, "w": 22, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "389_2": { + "frame": { "x": 272, "y": 47, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "389_3": { + "frame": { "x": 244, "y": 47, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "393_2": { + "frame": { "x": 69, "y": 275, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "393_3": { + "frame": { "x": 285, "y": 275, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "394_2": { + "frame": { "x": 321, "y": 232, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "394_3": { + "frame": { "x": 0, "y": 244, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "395_2": { + "frame": { "x": 340, "y": 95, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "395_3": { + "frame": { "x": 24, "y": 98, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "399_2": { + "frame": { "x": 24, "y": 123, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "399_3": { + "frame": { "x": 108, "y": 267, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "400_2": { + "frame": { "x": 217, "y": 180, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "400_3": { + "frame": { "x": 239, "y": 180, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "401_2": { + "frame": { "x": 279, "y": 243, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "401_3": { + "frame": { "x": 201, "y": 243, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "402_2": { + "frame": { "x": 97, "y": 186, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "402_3": { + "frame": { "x": 289, "y": 182, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "406_2": { + "frame": { "x": 298, "y": 275, "w": 12, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 12, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "406_3": { + "frame": { "x": 184, "y": 225, "w": 12, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 12, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "407_2": { + "frame": { "x": 177, "y": 203, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "407_3": { + "frame": { "x": 86, "y": 210, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-plant_1": { + "frame": { "x": 338, "y": 232, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-plant_2": { + "frame": { "x": 184, "y": 243, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-plant_3": { + "frame": { "x": 99, "y": 242, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-sandy_1": { + "frame": { "x": 164, "y": 247, "w": 15, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 15, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-sandy_2": { + "frame": { "x": 76, "y": 252, "w": 15, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 15, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-sandy_3": { + "frame": { "x": 296, "y": 252, "w": 15, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 15, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-trash_1": { + "frame": { "x": 218, "y": 245, "w": 16, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 16, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-trash_2": { + "frame": { "x": 132, "y": 244, "w": 16, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 16, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "412-trash_3": { + "frame": { "x": 116, "y": 244, "w": 16, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 16, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-plant_1": { + "frame": { "x": 333, "y": 168, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-plant_2": { + "frame": { "x": 311, "y": 168, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-plant_3": { + "frame": { "x": 75, "y": 167, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-sandy_1": { + "frame": { "x": 0, "y": 117, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-sandy_2": { + "frame": { "x": 292, "y": 117, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-sandy_3": { + "frame": { "x": 316, "y": 117, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-trash_1": { + "frame": { "x": 125, "y": 157, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-trash_2": { + "frame": { "x": 319, "y": 145, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "413-trash_3": { + "frame": { "x": 266, "y": 142, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "414_2": { + "frame": { "x": 120, "y": 180, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "414_3": { + "frame": { "x": 145, "y": 180, "w": 25, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 25, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "418_2": { + "frame": { "x": 127, "y": 224, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "418_3": { + "frame": { "x": 0, "y": 224, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "419_2": { + "frame": { "x": 221, "y": 159, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "419_3": { + "frame": { "x": 50, "y": 158, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "422-east_1": { + "frame": { "x": 197, "y": 203, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "422-east_2": { + "frame": { "x": 302, "y": 232, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "422-east_3": { + "frame": { "x": 80, "y": 232, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "422-west_1": { + "frame": { "x": 36, "y": 265, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "422-west_2": { + "frame": { "x": 91, "y": 264, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "422-west_3": { + "frame": { "x": 253, "y": 264, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "423-east_1": { + "frame": { "x": 148, "y": 157, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "423-east_2": { + "frame": { "x": 266, "y": 165, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "423-east_3": { + "frame": { "x": 41, "y": 179, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "423-west_1": { + "frame": { "x": 97, "y": 164, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "423-west_2": { + "frame": { "x": 194, "y": 160, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "423-west_3": { + "frame": { "x": 171, "y": 160, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "424_2": { + "frame": { "x": 303, "y": 0, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "424_3": { + "frame": { "x": 274, "y": 0, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "425_2": { + "frame": { "x": 270, "y": 265, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "425_3": { + "frame": { "x": 234, "y": 265, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "426_2": { + "frame": { "x": 110, "y": 96, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "426_3": { + "frame": { "x": 268, "y": 96, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "427_2": { + "frame": { "x": 21, "y": 225, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "427_3": { + "frame": { "x": 166, "y": 225, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "428-mega_2": { + "frame": { "x": 95, "y": 0, "w": 33, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 33, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "428-mega_3": { + "frame": { "x": 62, "y": 0, "w": 33, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 5, "w": 33, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "428_2": { + "frame": { "x": 47, "y": 117, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "428_3": { + "frame": { "x": 73, "y": 117, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "429_1": { + "frame": { "x": 247, "y": 138, "w": 19, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 19, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "429_2": { + "frame": { "x": 0, "y": 140, "w": 19, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 19, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "429_3": { + "frame": { "x": 78, "y": 139, "w": 19, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 19, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "433_1": { + "frame": { "x": 328, "y": 213, "w": 23, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 23, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "433_2": { + "frame": { "x": 305, "y": 213, "w": 23, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 23, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "433_3": { + "frame": { "x": 61, "y": 211, "w": 23, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 23, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "436_2": { + "frame": { "x": 0, "y": 284, "w": 13, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 13, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "436_3": { + "frame": { "x": 108, "y": 283, "w": 13, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 13, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "437_2": { + "frame": { "x": 239, "y": 117, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "437_3": { + "frame": { "x": 212, "y": 117, "w": 27, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "438_2": { + "frame": { "x": 351, "y": 211, "w": 12, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 8, "w": 12, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "438_3": { + "frame": { "x": 351, "y": 191, "w": 12, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 8, "w": 12, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "440_1": { + "frame": { "x": 163, "y": 270, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "440_2": { + "frame": { "x": 343, "y": 271, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "440_3": { + "frame": { "x": 329, "y": 271, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "441_2": { + "frame": { "x": 157, "y": 203, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "441_3": { + "frame": { "x": 237, "y": 202, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "442_2": { + "frame": { "x": 106, "y": 222, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "442_3": { + "frame": { "x": 197, "y": 223, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "443_1": { + "frame": { "x": 256, "y": 245, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "443_2": { + "frame": { "x": 17, "y": 247, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "443_3": { + "frame": { "x": 234, "y": 246, "w": 19, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 19, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "444_1": { + "frame": { "x": 170, "y": 182, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "444_2": { + "frame": { "x": 0, "y": 183, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "444_3": { + "frame": { "x": 193, "y": 182, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "445-mega_1": { + "frame": { "x": 214, "y": 0, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "445-mega_2": { + "frame": { "x": 184, "y": 0, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "445-mega_3": { + "frame": { "x": 244, "y": 0, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "445_1": { + "frame": { "x": 207, "y": 48, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "445_2": { + "frame": { "x": 87, "y": 49, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "445_3": { + "frame": { "x": 331, "y": 49, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "447_1": { + "frame": { "x": 23, "y": 183, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "447_2": { + "frame": { "x": 0, "y": 266, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "447_3": { + "frame": { "x": 18, "y": 266, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "448-mega_1": { + "frame": { "x": 138, "y": 200, "w": 19, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 19, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "448-mega_2": { + "frame": { "x": 42, "y": 201, "w": 19, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 19, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "448-mega_3": { + "frame": { "x": 23, "y": 201, "w": 19, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 19, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "448_1": { + "frame": { "x": 195, "y": 265, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "448_2": { + "frame": { "x": 179, "y": 265, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "448_3": { + "frame": { "x": 53, "y": 265, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "453_2": { + "frame": { "x": 128, "y": 267, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "453_3": { + "frame": { "x": 211, "y": 268, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "454_2": { + "frame": { "x": 330, "y": 191, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "454_3": { + "frame": { "x": 342, "y": 145, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "456_2": { + "frame": { "x": 56, "y": 247, "w": 20, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 20, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "456_3": { + "frame": { "x": 36, "y": 247, "w": 20, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 20, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "457_2": { + "frame": { "x": 19, "y": 160, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "457_3": { + "frame": { "x": 289, "y": 159, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "458_2": { + "frame": { "x": 311, "y": 254, "w": 20, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 20, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "458_3": { + "frame": { "x": 331, "y": 254, "w": 20, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 20, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "461_2": { + "frame": { "x": 218, "y": 223, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "461_3": { + "frame": { "x": 237, "y": 224, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "462_2": { + "frame": { "x": 58, "y": 70, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "462_3": { + "frame": { "x": 329, "y": 71, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "464_2": { + "frame": { "x": 83, "y": 95, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "464_3": { + "frame": { "x": 313, "y": 95, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "465_2": { + "frame": { "x": 145, "y": 53, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "465_3": { + "frame": { "x": 300, "y": 51, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "466_1": { + "frame": { "x": 216, "y": 94, "w": 26, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "466_2": { + "frame": { "x": 242, "y": 94, "w": 26, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "466_3": { + "frame": { "x": 57, "y": 94, "w": 26, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "467_2": { + "frame": { "x": 171, "y": 138, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "467_3": { + "frame": { "x": 121, "y": 120, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "468_1": { + "frame": { "x": 97, "y": 145, "w": 28, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 28, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "468_2": { + "frame": { "x": 291, "y": 140, "w": 28, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 28, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "468_3": { + "frame": { "x": 50, "y": 139, "w": 28, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 28, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "469_2": { + "frame": { "x": 204, "y": 70, "w": 30, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 30, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "469_3": { + "frame": { "x": 174, "y": 70, "w": 30, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 30, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "470_1": { + "frame": { "x": 266, "y": 120, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "470_2": { + "frame": { "x": 146, "y": 135, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "470_3": { + "frame": { "x": 196, "y": 138, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "471_1": { + "frame": { "x": 110, "y": 73, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "471_2": { + "frame": { "x": 286, "y": 73, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "471_3": { + "frame": { "x": 137, "y": 75, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "472_2": { + "frame": { "x": 275, "y": 25, "w": 31, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 6, "w": 31, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "472_3": { + "frame": { "x": 244, "y": 25, "w": 31, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 6, "w": 31, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "474_2": { + "frame": { "x": 292, "y": 96, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "474_3": { + "frame": { "x": 216, "y": 202, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "475-mega_2": { + "frame": { "x": 120, "y": 47, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "475-mega_3": { + "frame": { "x": 33, "y": 28, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "475_2": { + "frame": { "x": 99, "y": 120, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "475_3": { + "frame": { "x": 340, "y": 120, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "478_2": { + "frame": { "x": 148, "y": 247, "w": 16, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 16, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "478_3": { + "frame": { "x": 313, "y": 73, "w": 16, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 16, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-fan_2": { + "frame": { "x": 221, "y": 138, "w": 26, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 26, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-fan_3": { + "frame": { "x": 24, "y": 139, "w": 26, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 26, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-frost_2": { + "frame": { "x": 214, "y": 25, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-frost_3": { + "frame": { "x": 184, "y": 25, "w": 30, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 30, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-heat_2": { + "frame": { "x": 58, "y": 48, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-heat_3": { + "frame": { "x": 0, "y": 70, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-mow_2": { + "frame": { "x": 192, "y": 91, "w": 24, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-mow_3": { + "frame": { "x": 0, "y": 92, "w": 24, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-wash_2": { + "frame": { "x": 164, "y": 91, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479-wash_3": { + "frame": { "x": 29, "y": 76, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479_2": { + "frame": { "x": 156, "y": 0, "w": 28, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 28, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "479_3": { + "frame": { "x": 128, "y": 0, "w": 28, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 28, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "480_1": { + "frame": { "x": 186, "y": 116, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "480_2": { + "frame": { "x": 160, "y": 113, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "480_3": { + "frame": { "x": 134, "y": 98, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "481_1": { + "frame": { "x": 178, "y": 48, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "481_2": { + "frame": { "x": 0, "y": 48, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "481_3": { + "frame": { "x": 29, "y": 54, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "482_1": { + "frame": { "x": 84, "y": 71, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "482_2": { + "frame": { "x": 260, "y": 70, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "482_3": { + "frame": { "x": 234, "y": 70, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "485_2": { + "frame": { "x": 0, "y": 28, "w": 33, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 33, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "485_3": { + "frame": { "x": 120, "y": 27, "w": 33, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 33, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "487-altered_2": { + "frame": { "x": 332, "y": 0, "w": 30, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 30, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "487-altered_3": { + "frame": { "x": 62, "y": 24, "w": 30, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 4, "w": 30, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "487-origin_2": { + "frame": { "x": 92, "y": 24, "w": 28, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 28, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "487-origin_3": { + "frame": { "x": 332, "y": 24, "w": 28, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 28, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "488_2": { + "frame": { "x": 153, "y": 27, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "488_3": { + "frame": { "x": 306, "y": 25, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "489_1": { + "frame": { "x": 57, "y": 230, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "489_2": { + "frame": { "x": 279, "y": 226, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "489_3": { + "frame": { "x": 256, "y": 228, "w": 23, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 11, "w": 23, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "490_1": { + "frame": { "x": 257, "y": 208, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "490_2": { + "frame": { "x": 283, "y": 206, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "490_3": { + "frame": { "x": 0, "y": 204, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "491_2": { + "frame": { "x": 0, "y": 0, "w": 31, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 31, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "491_3": { + "frame": { "x": 31, "y": 0, "w": 31, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 31, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "492-land_2": { + "frame": { "x": 145, "y": 269, "w": 18, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 18, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "492-land_3": { + "frame": { "x": 311, "y": 271, "w": 18, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 18, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "492-sky_2": { + "frame": { "x": 117, "y": 200, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "492-sky_3": { + "frame": { "x": 309, "y": 191, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_4v.png", + "format": "RGBA8888", + "size": { "w": 363, "h": 300 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_4v.png b/public/images/pokemon_icons_4v.png index 9f2a9ac1f19..4dbf5cc6918 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 111cc3ab6ab..ef3ce80e8ef 100644 --- a/public/images/pokemon_icons_5v.json +++ b/public/images/pokemon_icons_5v.json @@ -1,3716 +1,1341 @@ -{ - "textures": [ - { - "image": "pokemon_icons_5v.png", - "format": "RGBA8888", - "size": { - "w": 123, - "h": 696 - }, - "scale": 1, - "frames": [ - { - "filename": "569-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 29 - }, - "frame": { - "x": 0, - "y": 0, - "w": 32, - "h": 29 - } - }, - { - "filename": "569-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 29 - }, - "frame": { - "x": 0, - "y": 29, - "w": 32, - "h": 29 - } - }, - { - "filename": "642-incarnate_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 31, - "h": 27 - }, - "frame": { - "x": 32, - "y": 0, - "w": 31, - "h": 27 - } - }, - { - "filename": "642-therian_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 3, - "w": 32, - "h": 26 - }, - "frame": { - "x": 0, - "y": 58, - "w": 32, - "h": 26 - } - }, - { - "filename": "641-therian_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 27 - }, - "frame": { - "x": 32, - "y": 27, - "w": 30, - "h": 27 - } - }, - { - "filename": "645-incarnate_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 2, - "w": 31, - "h": 26 - }, - "frame": { - "x": 63, - "y": 0, - "w": 31, - "h": 26 - } - }, - { - "filename": "635_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 94, - "y": 0, - "w": 29, - "h": 25 - } - }, - { - "filename": "534_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 31, - "h": 25 - }, - "frame": { - "x": 0, - "y": 84, - "w": 31, - "h": 25 - } - }, - { - "filename": "534_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 31, - "h": 25 - }, - "frame": { - "x": 0, - "y": 109, - "w": 31, - "h": 25 - } - }, - { - "filename": "641-incarnate_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 32, - "y": 54, - "w": 30, - "h": 26 - } - }, - { - "filename": "563_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 30, - "h": 25 - }, - "frame": { - "x": 0, - "y": 134, - "w": 30, - "h": 25 - } - }, - { - "filename": "563_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 30, - "h": 25 - }, - "frame": { - "x": 0, - "y": 159, - "w": 30, - "h": 25 - } - }, - { - "filename": "635_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 94, - "y": 25, - "w": 29, - "h": 25 - } - }, - { - "filename": "645-therian_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 27, - "h": 28 - }, - "frame": { - "x": 0, - "y": 184, - "w": 27, - "h": 28 - } - }, - { - "filename": "533_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 27, - "h": 24 - }, - "frame": { - "x": 0, - "y": 212, - "w": 27, - "h": 24 - } - }, - { - "filename": "533_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 27, - "h": 24 - }, - "frame": { - "x": 0, - "y": 236, - "w": 27, - "h": 24 - } - }, - { - "filename": "623_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 260, - "w": 26, - "h": 25 - } - }, - { - "filename": "623_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 285, - "w": 26, - "h": 25 - } - }, - { - "filename": "586-autumn_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 0, - "y": 310, - "w": 25, - "h": 25 - } - }, - { - "filename": "612_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 335, - "w": 26, - "h": 24 - } - }, - { - "filename": "612_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 24 - }, - "frame": { - "x": 0, - "y": 359, - "w": 26, - "h": 24 - } - }, - { - "filename": "553_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 0, - "y": 383, - "w": 28, - "h": 23 - } - }, - { - "filename": "553_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 0, - "y": 406, - "w": 28, - "h": 23 - } - }, - { - "filename": "609_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 29, - "h": 23 - }, - "frame": { - "x": 0, - "y": 429, - "w": 29, - "h": 23 - } - }, - { - "filename": "609_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 29, - "h": 23 - }, - "frame": { - "x": 0, - "y": 452, - "w": 29, - "h": 23 - } - }, - { - "filename": "530_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 0, - "y": 475, - "w": 29, - "h": 22 - } - }, - { - "filename": "530_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 0, - "y": 497, - "w": 29, - "h": 22 - } - }, - { - "filename": "545_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 0, - "y": 519, - "w": 29, - "h": 22 - } - }, - { - "filename": "545_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 0, - "y": 541, - "w": 29, - "h": 22 - } - }, - { - "filename": "569_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 22 - }, - "frame": { - "x": 0, - "y": 563, - "w": 30, - "h": 22 - } - }, - { - "filename": "569_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 22 - }, - "frame": { - "x": 0, - "y": 585, - "w": 30, - "h": 22 - } - }, - { - "filename": "604_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 30, - "h": 22 - }, - "frame": { - "x": 0, - "y": 607, - "w": 30, - "h": 22 - } - }, - { - "filename": "604_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 30, - "h": 22 - }, - "frame": { - "x": 0, - "y": 629, - "w": 30, - "h": 22 - } - }, - { - "filename": "647-resolute_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 22 - }, - "frame": { - "x": 0, - "y": 651, - "w": 30, - "h": 22 - } - }, - { - "filename": "648-pirouette_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 15, - "h": 23 - }, - "frame": { - "x": 0, - "y": 673, - "w": 15, - "h": 23 - } - }, - { - "filename": "648-pirouette_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 15, - "h": 23 - }, - "frame": { - "x": 15, - "y": 673, - "w": 15, - "h": 23 - } - }, - { - "filename": "579_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 30, - "h": 21 - }, - "frame": { - "x": 32, - "y": 80, - "w": 30, - "h": 21 - } - }, - { - "filename": "647-resolute_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 30, - "h": 22 - }, - "frame": { - "x": 31, - "y": 101, - "w": 30, - "h": 22 - } - }, - { - "filename": "579_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 30, - "h": 21 - }, - "frame": { - "x": 31, - "y": 123, - "w": 30, - "h": 21 - } - }, - { - "filename": "571_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 30, - "y": 144, - "w": 29, - "h": 22 - } - }, - { - "filename": "571_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 30, - "y": 166, - "w": 29, - "h": 22 - } - }, - { - "filename": "579_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 7, - "w": 30, - "h": 21 - }, - "frame": { - "x": 27, - "y": 188, - "w": 30, - "h": 21 - } - }, - { - "filename": "497_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 22 - }, - "frame": { - "x": 27, - "y": 209, - "w": 28, - "h": 22 - } - }, - { - "filename": "497_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 22 - }, - "frame": { - "x": 27, - "y": 231, - "w": 28, - "h": 22 - } - }, - { - "filename": "538_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 28, - "h": 20 - }, - "frame": { - "x": 27, - "y": 253, - "w": 28, - "h": 20 - } - }, - { - "filename": "593_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 22 - }, - "frame": { - "x": 26, - "y": 273, - "w": 28, - "h": 22 - } - }, - { - "filename": "538_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 8, - "w": 28, - "h": 20 - }, - "frame": { - "x": 26, - "y": 295, - "w": 28, - "h": 20 - } - }, - { - "filename": "496_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 25, - "y": 315, - "w": 22, - "h": 20 - } - }, - { - "filename": "531-mega_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 22, - "h": 26 - }, - "frame": { - "x": 26, - "y": 335, - "w": 22, - "h": 26 - } - }, - { - "filename": "518_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 26, - "y": 361, - "w": 23, - "h": 22 - } - }, - { - "filename": "531-mega_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 22, - "h": 26 - }, - "frame": { - "x": 28, - "y": 383, - "w": 22, - "h": 26 - } - }, - { - "filename": "496_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 22, - "h": 20 - }, - "frame": { - "x": 28, - "y": 409, - "w": 22, - "h": 20 - } - }, - { - "filename": "640_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 26 - }, - "frame": { - "x": 29, - "y": 429, - "w": 21, - "h": 26 - } - }, - { - "filename": "640_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 21, - "h": 26 - }, - "frame": { - "x": 29, - "y": 455, - "w": 21, - "h": 26 - } - }, - { - "filename": "586-spring_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 29, - "y": 481, - "w": 23, - "h": 24 - } - }, - { - "filename": "586-summer_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 29, - "y": 505, - "w": 23, - "h": 24 - } - }, - { - "filename": "586-winter_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 23, - "h": 24 - }, - "frame": { - "x": 29, - "y": 529, - "w": 23, - "h": 24 - } - }, - { - "filename": "649-burn_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 30, - "y": 553, - "w": 22, - "h": 24 - } - }, - { - "filename": "649-burn_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 30, - "y": 577, - "w": 22, - "h": 24 - } - }, - { - "filename": "649-chill_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 30, - "y": 601, - "w": 22, - "h": 24 - } - }, - { - "filename": "649-chill_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 30, - "y": 625, - "w": 22, - "h": 24 - } - }, - { - "filename": "649-douse_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 30, - "y": 649, - "w": 22, - "h": 24 - } - }, - { - "filename": "518_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 30, - "y": 673, - "w": 23, - "h": 22 - } - }, - { - "filename": "593_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 22 - }, - "frame": { - "x": 63, - "y": 26, - "w": 28, - "h": 22 - } - }, - { - "filename": "596_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 22 - }, - "frame": { - "x": 62, - "y": 48, - "w": 28, - "h": 22 - } - }, - { - "filename": "596_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 22 - }, - "frame": { - "x": 62, - "y": 70, - "w": 28, - "h": 22 - } - }, - { - "filename": "593-f_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 22 - }, - "frame": { - "x": 90, - "y": 50, - "w": 27, - "h": 22 - } - }, - { - "filename": "593-f_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 22 - }, - "frame": { - "x": 90, - "y": 72, - "w": 27, - "h": 22 - } - }, - { - "filename": "593-f_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 27, - "h": 22 - }, - "frame": { - "x": 62, - "y": 92, - "w": 27, - "h": 22 - } - }, - { - "filename": "634_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 61, - "y": 114, - "w": 26, - "h": 22 - } - }, - { - "filename": "634_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 26, - "h": 22 - }, - "frame": { - "x": 89, - "y": 94, - "w": 26, - "h": 22 - } - }, - { - "filename": "552_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 87, - "y": 116, - "w": 25, - "h": 21 - } - }, - { - "filename": "552_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 61, - "y": 136, - "w": 25, - "h": 21 - } - }, - { - "filename": "620_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 59, - "y": 157, - "w": 25, - "h": 22 - } - }, - { - "filename": "611_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 86, - "y": 137, - "w": 25, - "h": 21 - } - }, - { - "filename": "611_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 84, - "y": 158, - "w": 25, - "h": 21 - } - }, - { - "filename": "542_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 109, - "y": 158, - "w": 14, - "h": 21 - } - }, - { - "filename": "548_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 12, - "h": 18 - }, - "frame": { - "x": 111, - "y": 137, - "w": 12, - "h": 18 - } - }, - { - "filename": "620_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 59, - "y": 179, - "w": 25, - "h": 22 - } - }, - { - "filename": "647-ordinary_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 84, - "y": 179, - "w": 25, - "h": 22 - } - }, - { - "filename": "542_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 109, - "y": 179, - "w": 14, - "h": 21 - } - }, - { - "filename": "648-aria_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 109, - "y": 200, - "w": 14, - "h": 21 - } - }, - { - "filename": "647-ordinary_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 57, - "y": 201, - "w": 25, - "h": 22 - } - }, - { - "filename": "531_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 82, - "y": 201, - "w": 22, - "h": 22 - } - }, - { - "filename": "649-douse_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 55, - "y": 223, - "w": 22, - "h": 24 - } - }, - { - "filename": "649-shock_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 55, - "y": 247, - "w": 22, - "h": 24 - } - }, - { - "filename": "649-shock_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 77, - "y": 223, - "w": 22, - "h": 24 - } - }, - { - "filename": "649_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 77, - "y": 247, - "w": 22, - "h": 24 - } - }, - { - "filename": "532_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 9, - "w": 24, - "h": 19 - }, - "frame": { - "x": 99, - "y": 223, - "w": 24, - "h": 19 - } - }, - { - "filename": "532_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 9, - "w": 24, - "h": 19 - }, - "frame": { - "x": 99, - "y": 242, - "w": 24, - "h": 19 - } - }, - { - "filename": "632_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 12, - "w": 24, - "h": 16 - }, - "frame": { - "x": 99, - "y": 261, - "w": 24, - "h": 16 - } - }, - { - "filename": "592-f_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 47, - "y": 315, - "w": 19, - "h": 20 - } - }, - { - "filename": "649_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 48, - "y": 335, - "w": 22, - "h": 24 - } - }, - { - "filename": "531_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 49, - "y": 359, - "w": 22, - "h": 22 - } - }, - { - "filename": "539_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 50, - "y": 381, - "w": 22, - "h": 22 - } - }, - { - "filename": "539_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 22, - "h": 22 - }, - "frame": { - "x": 50, - "y": 403, - "w": 22, - "h": 22 - } - }, - { - "filename": "547_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 50, - "y": 425, - "w": 21, - "h": 22 - } - }, - { - "filename": "547_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 22 - }, - "frame": { - "x": 50, - "y": 447, - "w": 21, - "h": 22 - } - }, - { - "filename": "494_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 52, - "y": 469, - "w": 18, - "h": 22 - } - }, - { - "filename": "494_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 52, - "y": 491, - "w": 18, - "h": 22 - } - }, - { - "filename": "585-autumn_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 52, - "y": 513, - "w": 18, - "h": 22 - } - }, - { - "filename": "585-spring_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 52, - "y": 535, - "w": 18, - "h": 22 - } - }, - { - "filename": "585-summer_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 52, - "y": 557, - "w": 18, - "h": 22 - } - }, - { - "filename": "585-winter_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 52, - "y": 579, - "w": 18, - "h": 22 - } - }, - { - "filename": "560_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 52, - "y": 601, - "w": 20, - "h": 21 - } - }, - { - "filename": "560_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 52, - "y": 622, - "w": 20, - "h": 21 - } - }, - { - "filename": "560_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 20, - "h": 21 - }, - "frame": { - "x": 52, - "y": 643, - "w": 20, - "h": 21 - } - }, - { - "filename": "592-f_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 53, - "y": 664, - "w": 19, - "h": 20 - } - }, - { - "filename": "632_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 12, - "w": 24, - "h": 16 - }, - "frame": { - "x": 55, - "y": 271, - "w": 24, - "h": 16 - } - }, - { - "filename": "495_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 20, - "h": 17 - }, - "frame": { - "x": 79, - "y": 271, - "w": 20, - "h": 17 - } - }, - { - "filename": "572_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 22, - "h": 19 - }, - "frame": { - "x": 54, - "y": 287, - "w": 22, - "h": 19 - } - }, - { - "filename": "572_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 22, - "h": 19 - }, - "frame": { - "x": 76, - "y": 288, - "w": 22, - "h": 19 - } - }, - { - "filename": "544_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 22, - "h": 16 - }, - "frame": { - "x": 99, - "y": 277, - "w": 22, - "h": 16 - } - }, - { - "filename": "544_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 22, - "h": 16 - }, - "frame": { - "x": 98, - "y": 293, - "w": 22, - "h": 16 - } - }, - { - "filename": "602_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 17, - "w": 14, - "h": 11 - }, - "frame": { - "x": 53, - "y": 684, - "w": 14, - "h": 11 - } - }, - { - "filename": "606_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 71, - "y": 425, - "w": 15, - "h": 22 - } - }, - { - "filename": "606_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 71, - "y": 447, - "w": 15, - "h": 22 - } - }, - { - "filename": "549_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 70, - "y": 469, - "w": 17, - "h": 21 - } - }, - { - "filename": "549_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 70, - "y": 490, - "w": 17, - "h": 21 - } - }, - { - "filename": "592-f_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 70, - "y": 511, - "w": 19, - "h": 20 - } - }, - { - "filename": "592_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 70, - "y": 531, - "w": 19, - "h": 20 - } - }, - { - "filename": "592_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 19, - "h": 20 - }, - "frame": { - "x": 70, - "y": 551, - "w": 19, - "h": 20 - } - }, - { - "filename": "603_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 70, - "y": 571, - "w": 21, - "h": 19 - } - }, - { - "filename": "602_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 17, - "w": 14, - "h": 11 - }, - "frame": { - "x": 70, - "y": 590, - "w": 14, - "h": 11 - } - }, - { - "filename": "606_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 72, - "y": 601, - "w": 15, - "h": 22 - } - }, - { - "filename": "610_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 72, - "y": 623, - "w": 18, - "h": 20 - } - }, - { - "filename": "610_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 18, - "h": 20 - }, - "frame": { - "x": 72, - "y": 643, - "w": 18, - "h": 20 - } - }, - { - "filename": "603_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 72, - "y": 663, - "w": 21, - "h": 19 - } - }, - { - "filename": "546_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 14, - "w": 21, - "h": 14 - }, - "frame": { - "x": 72, - "y": 682, - "w": 21, - "h": 14 - } - }, - { - "filename": "568_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 18 - }, - "frame": { - "x": 66, - "y": 307, - "w": 21, - "h": 18 - } - }, - { - "filename": "551_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 13, - "w": 22, - "h": 16 - }, - "frame": { - "x": 87, - "y": 309, - "w": 22, - "h": 16 - } - }, - { - "filename": "648-aria_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 109, - "y": 309, - "w": 14, - "h": 21 - } - }, - { - "filename": "568_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 18 - }, - "frame": { - "x": 70, - "y": 325, - "w": 21, - "h": 18 - } - }, - { - "filename": "619_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 91, - "y": 325, - "w": 18, - "h": 19 - } - }, - { - "filename": "595_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 21, - "h": 16 - }, - "frame": { - "x": 70, - "y": 343, - "w": 21, - "h": 16 - } - }, - { - "filename": "495_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 20, - "h": 17 - }, - "frame": { - "x": 71, - "y": 359, - "w": 20, - "h": 17 - } - }, - { - "filename": "619_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 91, - "y": 344, - "w": 18, - "h": 19 - } - }, - { - "filename": "605_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 13, - "h": 19 - }, - "frame": { - "x": 109, - "y": 330, - "w": 13, - "h": 19 - } - }, - { - "filename": "608_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 19, - "h": 18 - }, - "frame": { - "x": 72, - "y": 376, - "w": 19, - "h": 18 - } - }, - { - "filename": "608_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 19, - "h": 18 - }, - "frame": { - "x": 72, - "y": 394, - "w": 19, - "h": 18 - } - }, - { - "filename": "622_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 91, - "y": 363, - "w": 18, - "h": 18 - } - }, - { - "filename": "622_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 10, - "w": 18, - "h": 18 - }, - "frame": { - "x": 91, - "y": 381, - "w": 18, - "h": 18 - } - }, - { - "filename": "605_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 13, - "h": 19 - }, - "frame": { - "x": 109, - "y": 349, - "w": 13, - "h": 19 - } - }, - { - "filename": "605_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 9, - "w": 13, - "h": 19 - }, - "frame": { - "x": 109, - "y": 368, - "w": 13, - "h": 19 - } - }, - { - "filename": "529_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 21, - "h": 17 - }, - "frame": { - "x": 91, - "y": 399, - "w": 21, - "h": 17 - } - }, - { - "filename": "529_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 11, - "w": 21, - "h": 17 - }, - "frame": { - "x": 86, - "y": 416, - "w": 21, - "h": 17 - } - }, - { - "filename": "633_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 20 - }, - "frame": { - "x": 107, - "y": 416, - "w": 16, - "h": 20 - } - }, - { - "filename": "595_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 21, - "h": 16 - }, - "frame": { - "x": 86, - "y": 433, - "w": 21, - "h": 16 - } - }, - { - "filename": "633_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 20 - }, - "frame": { - "x": 107, - "y": 436, - "w": 16, - "h": 20 - } - }, - { - "filename": "546_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 14, - "w": 21, - "h": 14 - }, - "frame": { - "x": 86, - "y": 449, - "w": 21, - "h": 14 - } - }, - { - "filename": "578_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 107, - "y": 456, - "w": 16, - "h": 19 - } - }, - { - "filename": "541_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 87, - "y": 463, - "w": 20, - "h": 16 - } - }, - { - "filename": "578_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 107, - "y": 475, - "w": 16, - "h": 19 - } - }, - { - "filename": "541_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 87, - "y": 479, - "w": 20, - "h": 16 - } - }, - { - "filename": "551_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 13, - "w": 22, - "h": 16 - }, - "frame": { - "x": 87, - "y": 495, - "w": 22, - "h": 16 - } - }, - { - "filename": "562_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 22, - "h": 16 - }, - "frame": { - "x": 89, - "y": 511, - "w": 22, - "h": 16 - } - }, - { - "filename": "562_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 22, - "h": 16 - }, - "frame": { - "x": 89, - "y": 527, - "w": 22, - "h": 16 - } - }, - { - "filename": "578_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 16, - "h": 19 - }, - "frame": { - "x": 89, - "y": 543, - "w": 16, - "h": 19 - } - }, - { - "filename": "543_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 14, - "w": 18, - "h": 14 - }, - "frame": { - "x": 105, - "y": 543, - "w": 18, - "h": 14 - } - }, - { - "filename": "543_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 14, - "w": 18, - "h": 14 - }, - "frame": { - "x": 105, - "y": 557, - "w": 18, - "h": 14 - } - }, - { - "filename": "548_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 12, - "h": 18 - }, - "frame": { - "x": 111, - "y": 494, - "w": 12, - "h": 18 - } - }, - { - "filename": "548_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 12, - "h": 18 - }, - "frame": { - "x": 111, - "y": 512, - "w": 12, - "h": 18 - } - }, - { - "filename": "607_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 13, - "h": 18 - }, - "frame": { - "x": 91, - "y": 562, - "w": 13, - "h": 18 - } - }, - { - "filename": "570_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 104, - "y": 571, - "w": 16, - "h": 17 - } - }, - { - "filename": "607_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 10, - "w": 13, - "h": 18 - }, - "frame": { - "x": 91, - "y": 580, - "w": 13, - "h": 18 - } - }, - { - "filename": "570_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 87, - "y": 598, - "w": 16, - "h": 17 - } - }, - { - "filename": "517_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 104, - "y": 588, - "w": 15, - "h": 14 - } - }, - { - "filename": "517_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 103, - "y": 602, - "w": 15, - "h": 14 - } - }, - { - "filename": "540_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 11, - "w": 15, - "h": 17 - }, - "frame": { - "x": 90, - "y": 616, - "w": 15, - "h": 17 - } - }, - { - "filename": "540_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 11, - "w": 15, - "h": 17 - }, - "frame": { - "x": 90, - "y": 633, - "w": 15, - "h": 17 - } - }, - { - "filename": "559_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 15, - "h": 16 - }, - "frame": { - "x": 105, - "y": 616, - "w": 15, - "h": 16 - } - }, - { - "filename": "559_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 15, - "h": 16 - }, - "frame": { - "x": 105, - "y": 632, - "w": 15, - "h": 16 - } - }, - { - "filename": "559_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 12, - "w": 15, - "h": 16 - }, - "frame": { - "x": 105, - "y": 648, - "w": 15, - "h": 16 - } - }, - { - "filename": "577_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 93, - "y": 664, - "w": 15, - "h": 14 - } - }, - { - "filename": "577_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 108, - "y": 664, - "w": 15, - "h": 14 - } - }, - { - "filename": "577_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 93, - "y": 678, - "w": 15, - "h": 14 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:982d6d8f8bd84ab35fcc0559c4fe5188:e14c2b4fa19e2d528ab6fda3d5a817e6:f1931bc28ee7f32dba7543723757cf2a$" - } -} +{ "frames": { + "494_2": { + "frame": { "x": 251, "y": 190, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "494_3": { + "frame": { "x": 212, "y": 186, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "495_2": { + "frame": { "x": 192, "y": 225, "w": 20, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 20, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "495_3": { + "frame": { "x": 103, "y": 224, "w": 20, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 20, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "496_2": { + "frame": { "x": 138, "y": 180, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "496_3": { + "frame": { "x": 95, "y": 183, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "497_2": { + "frame": { "x": 28, "y": 94, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "497_3": { + "frame": { "x": 242, "y": 74, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "517_2": { + "frame": { "x": 92, "y": 260, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "517_3": { + "frame": { "x": 62, "y": 260, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "518_2": { + "frame": { "x": 288, "y": 149, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "518_3": { + "frame": { "x": 0, "y": 164, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "524_2": { + "frame": { "x": 88, "y": 140, "w": 11, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 11, "w": 11, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "524_3": { + "frame": { "x": 99, "y": 118, "w": 11, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 15, "y": 11, "w": 11, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "525_2": { + "frame": { "x": 47, "y": 164, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "525_3": { + "frame": { "x": 23, "y": 164, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "526_2": { + "frame": { "x": 95, "y": 26, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "526_3": { + "frame": { "x": 157, "y": 26, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "529_2": { + "frame": { "x": 202, "y": 208, "w": 21, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 11, "w": 21, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "529_3": { + "frame": { "x": 269, "y": 209, "w": 21, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 11, "w": 21, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "530_2": { + "frame": { "x": 183, "y": 71, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "530_3": { + "frame": { "x": 0, "y": 51, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "531-mega_2": { + "frame": { "x": 292, "y": 97, "w": 22, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 22, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "531-mega_3": { + "frame": { "x": 270, "y": 74, "w": 22, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 22, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "531_2": { + "frame": { "x": 311, "y": 169, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "531_3": { + "frame": { "x": 263, "y": 168, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "532_2": { + "frame": { "x": 71, "y": 179, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "532_3": { + "frame": { "x": 60, "y": 75, "w": 24, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 9, "w": 24, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "533_2": { + "frame": { "x": 242, "y": 50, "w": 27, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 27, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "533_3": { + "frame": { "x": 269, "y": 50, "w": 27, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 27, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "534_2": { + "frame": { "x": 249, "y": 0, "w": 31, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 31, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "534_3": { + "frame": { "x": 218, "y": 0, "w": 31, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 5, "w": 31, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "538_2": { + "frame": { "x": 166, "y": 115, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "538_3": { + "frame": { "x": 0, "y": 116, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "539_2": { + "frame": { "x": 169, "y": 165, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "539_3": { + "frame": { "x": 208, "y": 164, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "540_2": { + "frame": { "x": 16, "y": 248, "w": 15, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 11, "w": 15, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "540_3": { + "frame": { "x": 297, "y": 245, "w": 15, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 11, "w": 15, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "541_2": { + "frame": { "x": 288, "y": 229, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "541_3": { + "frame": { "x": 57, "y": 230, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "542_2": { + "frame": { "x": 195, "y": 242, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "542_3": { + "frame": { "x": 181, "y": 242, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "543_2": { + "frame": { "x": 312, "y": 249, "w": 18, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 14, "w": 18, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "543_3": { + "frame": { "x": 241, "y": 249, "w": 18, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 14, "w": 18, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "544_2": { + "frame": { "x": 223, "y": 213, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "544_3": { + "frame": { "x": 245, "y": 213, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "545_2": { + "frame": { "x": 154, "y": 51, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "545_3": { + "frame": { "x": 115, "y": 71, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "546_2": { + "frame": { "x": 160, "y": 242, "w": 21, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 14, "w": 21, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "546_3": { + "frame": { "x": 139, "y": 242, "w": 21, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 14, "w": 21, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "547_2": { + "frame": { "x": 230, "y": 171, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "547_3": { + "frame": { "x": 285, "y": 171, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "548_1": { + "frame": { "x": 251, "y": 171, "w": 12, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 12, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "548_2": { + "frame": { "x": 340, "y": 97, "w": 12, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 12, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "548_3": { + "frame": { "x": 228, "y": 97, "w": 12, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 12, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "549_2": { + "frame": { "x": 191, "y": 165, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "549_3": { + "frame": { "x": 335, "y": 119, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "551_2": { + "frame": { "x": 324, "y": 211, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 13, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "551_3": { + "frame": { "x": 62, "y": 214, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 13, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "552_2": { + "frame": { "x": 88, "y": 158, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "552_3": { + "frame": { "x": 144, "y": 159, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "553_2": { + "frame": { "x": 324, "y": 50, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "553_3": { + "frame": { "x": 296, "y": 50, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "556_2": { + "frame": { "x": 99, "y": 135, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "556_3": { + "frame": { "x": 253, "y": 124, "w": 23, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 23, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "559_1": { + "frame": { "x": 166, "y": 256, "w": 15, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 15, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "559_2": { + "frame": { "x": 136, "y": 256, "w": 15, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 15, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "559_3": { + "frame": { "x": 151, "y": 256, "w": 15, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 12, "w": 15, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "560_1": { + "frame": { "x": 144, "y": 138, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "560_2": { + "frame": { "x": 117, "y": 183, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "560_3": { + "frame": { "x": 23, "y": 185, "w": 20, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 20, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "562_2": { + "frame": { "x": 127, "y": 220, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "562_3": { + "frame": { "x": 290, "y": 213, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "563_2": { + "frame": { "x": 218, "y": 25, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "563_3": { + "frame": { "x": 307, "y": 0, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 3, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "568_2": { + "frame": { "x": 181, "y": 205, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "568_3": { + "frame": { "x": 0, "y": 205, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "569-gigantamax_2": { + "frame": { "x": 32, "y": 0, "w": 32, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "569-gigantamax_3": { + "frame": { "x": 0, "y": 0, "w": 32, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "569_2": { + "frame": { "x": 277, "y": 28, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "569_3": { + "frame": { "x": 0, "y": 29, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "570_2": { + "frame": { "x": 209, "y": 247, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "570_3": { + "frame": { "x": 225, "y": 247, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "571_2": { + "frame": { "x": 86, "y": 51, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "571_3": { + "frame": { "x": 29, "y": 51, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "572_2": { + "frame": { "x": 43, "y": 185, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "572_3": { + "frame": { "x": 0, "y": 186, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "577_1": { + "frame": { "x": 47, "y": 260, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "577_2": { + "frame": { "x": 71, "y": 164, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "577_3": { + "frame": { "x": 77, "y": 260, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "578_1": { + "frame": { "x": 0, "y": 241, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "578_2": { + "frame": { "x": 93, "y": 241, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "578_3": { + "frame": { "x": 77, "y": 241, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "579_1": { + "frame": { "x": 0, "y": 73, "w": 30, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 30, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "579_2": { + "frame": { "x": 30, "y": 73, "w": 30, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 30, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "579_3": { + "frame": { "x": 144, "y": 73, "w": 30, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 30, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "585-autumn_1": { + "frame": { "x": 333, "y": 145, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "585-spring_1": { + "frame": { "x": 333, "y": 167, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "585-summer_1": { + "frame": { "x": 333, "y": 189, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "585-winter_1": { + "frame": { "x": 306, "y": 191, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "586-autumn_1": { + "frame": { "x": 86, "y": 73, "w": 25, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 25, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "586-spring_1": { + "frame": { "x": 51, "y": 116, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "586-summer_1": { + "frame": { "x": 28, "y": 116, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "586-winter_1": { + "frame": { "x": 267, "y": 100, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "592-f_1": { + "frame": { "x": 89, "y": 203, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "592-f_2": { + "frame": { "x": 43, "y": 204, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "592-f_3": { + "frame": { "x": 108, "y": 204, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "592_2": { + "frame": { "x": 137, "y": 200, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "592_3": { + "frame": { "x": 230, "y": 193, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "593-f_1": { + "frame": { "x": 56, "y": 94, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "593-f_2": { + "frame": { "x": 139, "y": 94, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "593-f_3": { + "frame": { "x": 240, "y": 96, "w": 27, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 27, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "593_2": { + "frame": { "x": 0, "y": 94, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "593_3": { + "frame": { "x": 212, "y": 75, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "594_2": { + "frame": { "x": 264, "y": 242, "w": 13, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 6, "w": 13, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "594_3": { + "frame": { "x": 34, "y": 243, "w": 13, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 6, "w": 13, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "595_2": { + "frame": { "x": 149, "y": 226, "w": 21, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 21, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "595_3": { + "frame": { "x": 267, "y": 226, "w": 21, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 21, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "596_2": { + "frame": { "x": 174, "y": 93, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "596_3": { + "frame": { "x": 111, "y": 93, "w": 28, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "602_2": { + "frame": { "x": 107, "y": 262, "w": 14, "h": 11 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 17, "w": 14, "h": 11 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "602_3": { + "frame": { "x": 290, "y": 262, "w": 14, "h": 11 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 17, "w": 14, "h": 11 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "603_2": { + "frame": { "x": 191, "y": 186, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "603_3": { + "frame": { "x": 160, "y": 187, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "604_2": { + "frame": { "x": 186, "y": 49, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "604_3": { + "frame": { "x": 124, "y": 49, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 7, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "605_1": { + "frame": { "x": 123, "y": 256, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "605_2": { + "frame": { "x": 330, "y": 249, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "605_3": { + "frame": { "x": 293, "y": 193, "w": 13, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 13, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "606_1": { + "frame": { "x": 19, "y": 226, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "606_2": { + "frame": { "x": 312, "y": 227, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "606_3": { + "frame": { "x": 327, "y": 227, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "607_2": { + "frame": { "x": 0, "y": 260, "w": 13, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 13, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "607_3": { + "frame": { "x": 277, "y": 259, "w": 13, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 10, "w": 13, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "608_2": { + "frame": { "x": 0, "y": 223, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "608_3": { + "frame": { "x": 84, "y": 223, "w": 19, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 19, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "609_2": { + "frame": { "x": 64, "y": 27, "w": 29, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 29, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "609_3": { + "frame": { "x": 186, "y": 26, "w": 29, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 29, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "610_2": { + "frame": { "x": 21, "y": 206, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "610_3": { + "frame": { "x": 156, "y": 206, "w": 18, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 18, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "611_2": { + "frame": { "x": 113, "y": 162, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "611_3": { + "frame": { "x": 263, "y": 147, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "612_2": { + "frame": { "x": 322, "y": 73, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "612_3": { + "frame": { "x": 296, "y": 73, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "618_2": { + "frame": { "x": 277, "y": 245, "w": 20, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 14, "w": 20, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "618_3": { + "frame": { "x": 47, "y": 246, "w": 20, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 14, "w": 20, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "619_2": { + "frame": { "x": 39, "y": 224, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "619_3": { + "frame": { "x": 174, "y": 223, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "620_2": { + "frame": { "x": 228, "y": 118, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "620_3": { + "frame": { "x": 74, "y": 118, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "622_2": { + "frame": { "x": 212, "y": 229, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "622_3": { + "frame": { "x": 230, "y": 229, "w": 18, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 18, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "623_2": { + "frame": { "x": 60, "y": 50, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "623_3": { + "frame": { "x": 216, "y": 50, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "631_2": { + "frame": { "x": 83, "y": 98, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "631_3": { + "frame": { "x": 111, "y": 115, "w": 28, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 8, "w": 28, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "632_2": { + "frame": { "x": 65, "y": 198, "w": 24, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 24, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "632_3": { + "frame": { "x": 269, "y": 193, "w": 24, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 24, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "633_2": { + "frame": { "x": 248, "y": 229, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "633_3": { + "frame": { "x": 123, "y": 236, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "634_2": { + "frame": { "x": 202, "y": 97, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "634_3": { + "frame": { "x": 314, "y": 97, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "635_2": { + "frame": { "x": 307, "y": 25, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "635_3": { + "frame": { "x": 248, "y": 25, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "640_2": { + "frame": { "x": 290, "y": 123, "w": 21, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 21, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "640_3": { + "frame": { "x": 314, "y": 119, "w": 21, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 21, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "641-incarnate_1": { + "frame": { "x": 188, "y": 0, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "641-therian_1": { + "frame": { "x": 127, "y": 0, "w": 30, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 30, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "642-incarnate_1": { + "frame": { "x": 64, "y": 0, "w": 31, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 31, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "642-therian_1": { + "frame": { "x": 95, "y": 0, "w": 32, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 3, "w": 32, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "645-incarnate_1": { + "frame": { "x": 157, "y": 0, "w": 31, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 2, "w": 31, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "645-therian_1": { + "frame": { "x": 280, "y": 0, "w": 27, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 27, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "647-ordinary_2": { + "frame": { "x": 194, "y": 119, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "647-ordinary_3": { + "frame": { "x": 139, "y": 116, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "647-resolute_2": { + "frame": { "x": 124, "y": 27, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "647-resolute_3": { + "frame": { "x": 30, "y": 29, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "648-aria_2": { + "frame": { "x": 109, "y": 241, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "648-aria_3": { + "frame": { "x": 276, "y": 124, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "648-pirouette_2": { + "frame": { "x": 337, "y": 23, "w": 15, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 15, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "648-pirouette_3": { + "frame": { "x": 337, "y": 0, "w": 15, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 15, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-burn_2": { + "frame": { "x": 22, "y": 140, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-burn_3": { + "frame": { "x": 122, "y": 138, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-chill_2": { + "frame": { "x": 0, "y": 136, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-chill_3": { + "frame": { "x": 164, "y": 135, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-douse_2": { + "frame": { "x": 241, "y": 147, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-douse_3": { + "frame": { "x": 311, "y": 145, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-shock_2": { + "frame": { "x": 186, "y": 141, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649-shock_3": { + "frame": { "x": 219, "y": 140, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649_2": { + "frame": { "x": 66, "y": 140, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "649_3": { + "frame": { "x": 44, "y": 140, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_5v.png", + "format": "RGBA8888", + "size": { "w": 352, "h": 278 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_5v.png b/public/images/pokemon_icons_5v.png index d82ea5cc881..917e0621263 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_6v.json b/public/images/pokemon_icons_6v.json index d6c7c38304c..600624ca730 100644 --- a/public/images/pokemon_icons_6v.json +++ b/public/images/pokemon_icons_6v.json @@ -1,2099 +1,1026 @@ -{ - "textures": [ - { - "image": "pokemon_icons_6v.png", - "format": "RGBA8888", - "size": { - "w": 128, - "h": 503 - }, - "scale": 1, - "frames": [ - { - "filename": "720-unbound_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 38, - "h": 28 - }, - "frame": { - "x": 0, - "y": 0, - "w": 38, - "h": 28 - } - }, - { - "filename": "720-unbound_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 38, - "h": 28 - }, - "frame": { - "x": 0, - "y": 28, - "w": 38, - "h": 28 - } - }, - { - "filename": "720-unbound_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 2, - "w": 38, - "h": 28 - }, - "frame": { - "x": 38, - "y": 0, - "w": 38, - "h": 28 - } - }, - { - "filename": "716-active_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 56, - "w": 29, - "h": 30 - } - }, - { - "filename": "716-active_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 86, - "w": 29, - "h": 30 - } - }, - { - "filename": "716-neutral_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 116, - "w": 29, - "h": 30 - } - }, - { - "filename": "716-neutral_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 146, - "w": 29, - "h": 30 - } - }, - { - "filename": "717_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 30, - "h": 27 - }, - "frame": { - "x": 38, - "y": 28, - "w": 30, - "h": 27 - } - }, - { - "filename": "717_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 30, - "h": 27 - }, - "frame": { - "x": 76, - "y": 0, - "w": 30, - "h": 27 - } - }, - { - "filename": "700_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 106, - "y": 0, - "w": 22, - "h": 23 - } - }, - { - "filename": "666-archipelago_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 236, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-archipelago_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 261, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-continental_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 286, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-continental_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 311, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-elegant_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 336, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-elegant_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 361, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-fancy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 386, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-fancy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 411, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-garden_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 436, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-garden_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 0, - "y": 461, - "w": 26, - "h": 25 - } - }, - { - "filename": "696_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 17 - }, - "frame": { - "x": 0, - "y": 486, - "w": 20, - "h": 17 - } - }, - { - "filename": "700_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 106, - "y": 23, - "w": 22, - "h": 23 - } - }, - { - "filename": "697_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 30, - "h": 22 - }, - "frame": { - "x": 76, - "y": 27, - "w": 30, - "h": 22 - } - }, - { - "filename": "696_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 17 - }, - "frame": { - "x": 20, - "y": 486, - "w": 20, - "h": 17 - } - }, - { - "filename": "666-high-plains_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 29, - "y": 56, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-high-plains_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 29, - "y": 81, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-icy-snow_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 29, - "y": 106, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-icy-snow_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 29, - "y": 131, - "w": 26, - "h": 25 - } - }, - { - "filename": "655_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 29, - "y": 156, - "w": 27, - "h": 23 - } - }, - { - "filename": "691_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 32, - "h": 23 - }, - "frame": { - "x": 26, - "y": 179, - "w": 32, - "h": 23 - } - }, - { - "filename": "691_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 32, - "h": 23 - }, - "frame": { - "x": 26, - "y": 202, - "w": 32, - "h": 23 - } - }, - { - "filename": "697_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 30, - "h": 22 - }, - "frame": { - "x": 26, - "y": 225, - "w": 30, - "h": 22 - } - }, - { - "filename": "715_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 28, - "h": 24 - }, - "frame": { - "x": 26, - "y": 247, - "w": 28, - "h": 24 - } - }, - { - "filename": "715_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 28, - "h": 24 - }, - "frame": { - "x": 26, - "y": 271, - "w": 28, - "h": 24 - } - }, - { - "filename": "666-jungle_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 295, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-jungle_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 320, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-marine_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 345, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-marine_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 370, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-meadow_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 395, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-meadow_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 420, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-modern_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 26, - "y": 445, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-modern_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 55, - "y": 55, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-monsoon_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 55, - "y": 80, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-monsoon_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 55, - "y": 105, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-ocean_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 55, - "y": 130, - "w": 26, - "h": 25 - } - }, - { - "filename": "713_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 27, - "h": 24 - }, - "frame": { - "x": 56, - "y": 155, - "w": 27, - "h": 24 - } - }, - { - "filename": "666-ocean_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 58, - "y": 179, - "w": 26, - "h": 25 - } - }, - { - "filename": "655_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 58, - "y": 204, - "w": 27, - "h": 23 - } - }, - { - "filename": "713_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 27, - "h": 24 - }, - "frame": { - "x": 56, - "y": 227, - "w": 27, - "h": 24 - } - }, - { - "filename": "666-poke-ball_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 54, - "y": 251, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-poke-ball_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 54, - "y": 276, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-polar_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 301, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-polar_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 326, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-river_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 351, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-river_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 376, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-sandstorm_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 401, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-sandstorm_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 426, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-savanna_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 451, - "w": 26, - "h": 25 - } - }, - { - "filename": "666-savanna_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 81, - "y": 49, - "w": 26, - "h": 25 - } - }, - { - "filename": "711_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 107, - "y": 46, - "w": 21, - "h": 23 - } - }, - { - "filename": "666-sun_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 81, - "y": 74, - "w": 26, - "h": 25 - } - }, - { - "filename": "711_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 107, - "y": 69, - "w": 21, - "h": 23 - } - }, - { - "filename": "666-sun_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 81, - "y": 99, - "w": 26, - "h": 25 - } - }, - { - "filename": "711_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 107, - "y": 92, - "w": 21, - "h": 23 - } - }, - { - "filename": "666-tundra_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 81, - "y": 124, - "w": 26, - "h": 25 - } - }, - { - "filename": "714_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 20 - }, - "frame": { - "x": 107, - "y": 115, - "w": 21, - "h": 20 - } - }, - { - "filename": "714_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 6, - "w": 21, - "h": 20 - }, - "frame": { - "x": 107, - "y": 135, - "w": 21, - "h": 20 - } - }, - { - "filename": "706_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 24 - }, - "frame": { - "x": 83, - "y": 149, - "w": 24, - "h": 24 - } - }, - { - "filename": "673_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 84, - "y": 173, - "w": 23, - "h": 22 - } - }, - { - "filename": "666-tundra_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 26, - "h": 25 - }, - "frame": { - "x": 85, - "y": 195, - "w": 26, - "h": 25 - } - }, - { - "filename": "653_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 111, - "y": 195, - "w": 17, - "h": 19 - } - }, - { - "filename": "653_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 111, - "y": 214, - "w": 17, - "h": 19 - } - }, - { - "filename": "708_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 85, - "y": 220, - "w": 25, - "h": 21 - } - }, - { - "filename": "690_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 18, - "h": 21 - }, - "frame": { - "x": 110, - "y": 233, - "w": 18, - "h": 21 - } - }, - { - "filename": "708_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 83, - "y": 241, - "w": 25, - "h": 21 - } - }, - { - "filename": "654_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 108, - "y": 254, - "w": 20, - "h": 22 - } - }, - { - "filename": "709_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 80, - "y": 262, - "w": 25, - "h": 25 - } - }, - { - "filename": "673_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 23, - "h": 22 - }, - "frame": { - "x": 105, - "y": 276, - "w": 23, - "h": 22 - } - }, - { - "filename": "709_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 80, - "y": 287, - "w": 25, - "h": 25 - } - }, - { - "filename": "706_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 24 - }, - "frame": { - "x": 78, - "y": 312, - "w": 24, - "h": 24 - } - }, - { - "filename": "654_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 78, - "y": 336, - "w": 20, - "h": 22 - } - }, - { - "filename": "690_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 18, - "h": 21 - }, - "frame": { - "x": 78, - "y": 402, - "w": 18, - "h": 21 - } - }, - { - "filename": "720_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 19 - }, - "frame": { - "x": 105, - "y": 298, - "w": 21, - "h": 19 - } - }, - { - "filename": "720_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 19 - }, - "frame": { - "x": 102, - "y": 317, - "w": 21, - "h": 19 - } - }, - { - "filename": "720_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 19 - }, - "frame": { - "x": 98, - "y": 336, - "w": 21, - "h": 19 - } - }, - { - "filename": "705_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 98, - "y": 355, - "w": 15, - "h": 22 - } - }, - { - "filename": "705_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 113, - "y": 355, - "w": 15, - "h": 22 - } - }, - { - "filename": "710_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 98, - "y": 377, - "w": 17, - "h": 19 - } - }, - { - "filename": "672_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 78, - "y": 463, - "w": 17, - "h": 18 - } - }, - { - "filename": "704_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 14, - "w": 12, - "h": 14 - }, - "frame": { - "x": 26, - "y": 470, - "w": 12, - "h": 14 - } - }, - { - "filename": "704_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 14, - "w": 12, - "h": 14 - }, - "frame": { - "x": 115, - "y": 377, - "w": 12, - "h": 14 - } - }, - { - "filename": "664_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 96, - "y": 402, - "w": 14, - "h": 21 - } - }, - { - "filename": "664_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 14, - "h": 21 - }, - "frame": { - "x": 97, - "y": 423, - "w": 14, - "h": 21 - } - }, - { - "filename": "710_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 9, - "w": 17, - "h": 19 - }, - "frame": { - "x": 97, - "y": 444, - "w": 17, - "h": 19 - } - }, - { - "filename": "672_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 95, - "y": 463, - "w": 17, - "h": 18 - } - }, - { - "filename": "665_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 112, - "y": 463, - "w": 16, - "h": 17 - } - }, - { - "filename": "665_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 112, - "y": 480, - "w": 16, - "h": 17 - } - }, - { - "filename": "712_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 40, - "y": 476, - "w": 17, - "h": 18 - } - }, - { - "filename": "712_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 10, - "w": 17, - "h": 18 - }, - "frame": { - "x": 57, - "y": 476, - "w": 17, - "h": 18 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:ec18ec1c07f3c5e9a4d73cc7718bb008:72df57c833892d8aac4a220844408721:8a74f769af240f74b0e67390bbb36c14$" - } -} +{ "frames": { + "2670_2": { + "frame": { "x": 119, "y": 159, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2670_3": { + "frame": { "x": 175, "y": 157, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "653_2": { + "frame": { "x": 142, "y": 204, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "653_3": { + "frame": { "x": 304, "y": 210, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "654_2": { + "frame": { "x": 322, "y": 22, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "654_3": { + "frame": { "x": 322, "y": 0, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "655_2": { + "frame": { "x": 287, "y": 145, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "655_3": { + "frame": { "x": 260, "y": 145, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "664_2": { + "frame": { "x": 38, "y": 214, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "664_3": { + "frame": { "x": 159, "y": 204, "w": 14, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 14, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "665_2": { + "frame": { "x": 173, "y": 217, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "665_3": { + "frame": { "x": 52, "y": 218, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-archipelago_2": { + "frame": { "x": 78, "y": 105, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-archipelago_3": { + "frame": { "x": 130, "y": 107, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-continental_2": { + "frame": { "x": 156, "y": 107, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-continental_3": { + "frame": { "x": 182, "y": 107, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-elegant_2": { + "frame": { "x": 260, "y": 120, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-elegant_3": { + "frame": { "x": 286, "y": 120, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-fancy_2": { + "frame": { "x": 52, "y": 105, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-fancy_3": { + "frame": { "x": 208, "y": 126, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-garden_2": { + "frame": { "x": 156, "y": 82, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-garden_3": { + "frame": { "x": 234, "y": 126, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-high-plains_2": { + "frame": { "x": 0, "y": 130, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-high-plains_3": { + "frame": { "x": 26, "y": 130, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-icy-snow_2": { + "frame": { "x": 0, "y": 55, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-icy-snow_3": { + "frame": { "x": 26, "y": 55, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-jungle_2": { + "frame": { "x": 52, "y": 55, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-jungle_3": { + "frame": { "x": 78, "y": 55, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-marine_2": { + "frame": { "x": 104, "y": 57, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-marine_3": { + "frame": { "x": 130, "y": 57, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-meadow_2": { + "frame": { "x": 156, "y": 57, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-meadow_3": { + "frame": { "x": 182, "y": 57, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-modern_2": { + "frame": { "x": 268, "y": 70, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-modern_3": { + "frame": { "x": 294, "y": 70, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-monsoon_2": { + "frame": { "x": 208, "y": 76, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-monsoon_3": { + "frame": { "x": 234, "y": 76, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-ocean_2": { + "frame": { "x": 312, "y": 120, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-ocean_3": { + "frame": { "x": 0, "y": 80, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-poke-ball_2": { + "frame": { "x": 26, "y": 80, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-poke-ball_3": { + "frame": { "x": 52, "y": 80, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-polar_2": { + "frame": { "x": 78, "y": 80, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-polar_3": { + "frame": { "x": 104, "y": 82, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-river_2": { + "frame": { "x": 130, "y": 82, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-river_3": { + "frame": { "x": 104, "y": 107, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-sandstorm_2": { + "frame": { "x": 182, "y": 82, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-sandstorm_3": { + "frame": { "x": 260, "y": 95, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-savanna_2": { + "frame": { "x": 286, "y": 95, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-savanna_3": { + "frame": { "x": 312, "y": 95, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-sun_2": { + "frame": { "x": 208, "y": 101, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-sun_3": { + "frame": { "x": 234, "y": 101, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-tundra_2": { + "frame": { "x": 0, "y": 105, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "666-tundra_3": { + "frame": { "x": 26, "y": 105, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-blue_2": { + "frame": { "x": 0, "y": 220, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-blue_3": { + "frame": { "x": 142, "y": 223, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-orange_2": { + "frame": { "x": 83, "y": 223, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-orange_3": { + "frame": { "x": 113, "y": 224, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-red_2": { + "frame": { "x": 157, "y": 225, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-red_3": { + "frame": { "x": 229, "y": 229, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-white_2": { + "frame": { "x": 296, "y": 229, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-white_3": { + "frame": { "x": 189, "y": 218, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-yellow_2": { + "frame": { "x": 98, "y": 219, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "669-yellow_3": { + "frame": { "x": 68, "y": 223, "w": 15, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 10, "w": 15, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-blue_2": { + "frame": { "x": 175, "y": 178, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-blue_3": { + "frame": { "x": 138, "y": 180, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-orage_2": { + "frame": { "x": 86, "y": 182, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-orage_3": { + "frame": { "x": 268, "y": 190, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-red_2": { + "frame": { "x": 67, "y": 179, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-red_3": { + "frame": { "x": 119, "y": 180, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-white_2": { + "frame": { "x": 249, "y": 190, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-white_3": { + "frame": { "x": 198, "y": 175, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-yellow_2": { + "frame": { "x": 0, "y": 177, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "670-yellow_3": { + "frame": { "x": 19, "y": 177, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-blue_2": { + "frame": { "x": 230, "y": 27, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-blue_3": { + "frame": { "x": 182, "y": 30, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-orange_2": { + "frame": { "x": 156, "y": 30, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-orange_3": { + "frame": { "x": 256, "y": 27, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-red_2": { + "frame": { "x": 0, "y": 28, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-red_3": { + "frame": { "x": 26, "y": 28, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-white_2": { + "frame": { "x": 52, "y": 28, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-white_3": { + "frame": { "x": 130, "y": 30, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-yellow_2": { + "frame": { "x": 78, "y": 28, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "671-yellow_3": { + "frame": { "x": 104, "y": 30, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "672_2": { + "frame": { "x": 263, "y": 212, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "672_3": { + "frame": { "x": 321, "y": 213, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "673_2": { + "frame": { "x": 23, "y": 155, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "673_3": { + "frame": { "x": 0, "y": 155, "w": 23, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 23, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "677_2": { + "frame": { "x": 280, "y": 215, "w": 16, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 16, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "677_3": { + "frame": { "x": 18, "y": 216, "w": 16, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 10, "w": 16, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "678-female_2": { + "frame": { "x": 316, "y": 169, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "678-female_3": { + "frame": { "x": 253, "y": 168, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "678_2": { + "frame": { "x": 295, "y": 169, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "678_3": { + "frame": { "x": 274, "y": 168, "w": 21, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 21, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "690_2": { + "frame": { "x": 194, "y": 197, "w": 18, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 18, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "690_3": { + "frame": { "x": 0, "y": 199, "w": 18, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 18, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "691_2": { + "frame": { "x": 290, "y": 0, "w": 32, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 32, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "691_3": { + "frame": { "x": 290, "y": 23, "w": 32, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 32, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "696_2": { + "frame": { "x": 174, "y": 200, "w": 20, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "696_3": { + "frame": { "x": 18, "y": 199, "w": 20, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "697_2": { + "frame": { "x": 208, "y": 54, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "697_3": { + "frame": { "x": 238, "y": 54, "w": 30, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 30, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "698_2": { + "frame": { "x": 157, "y": 180, "w": 17, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "698_3": { + "frame": { "x": 287, "y": 191, "w": 17, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "699_2": { + "frame": { "x": 130, "y": 132, "w": 24, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 24, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "699_3": { + "frame": { "x": 106, "y": 132, "w": 24, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 24, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "700_2": { + "frame": { "x": 320, "y": 70, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "700_3": { + "frame": { "x": 208, "y": 30, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "702_2": { + "frame": { "x": 105, "y": 202, "w": 22, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 11, "w": 22, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "702_3": { + "frame": { "x": 59, "y": 201, "w": 22, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 11, "w": 22, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "703_2": { + "frame": { "x": 105, "y": 182, "w": 14, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 15, "w": 14, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "703_3": { + "frame": { "x": 268, "y": 54, "w": 14, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 15, "w": 14, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "704_2": { + "frame": { "x": 142, "y": 159, "w": 12, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 14, "w": 12, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "704_3": { + "frame": { "x": 128, "y": 224, "w": 12, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 14, "w": 12, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "705_2": { + "frame": { "x": 325, "y": 191, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "705_3": { + "frame": { "x": 127, "y": 202, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "706_2": { + "frame": { "x": 204, "y": 151, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "706_3": { + "frame": { "x": 314, "y": 145, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "708_2": { + "frame": { "x": 228, "y": 151, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "708_3": { + "frame": { "x": 52, "y": 154, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "709_2": { + "frame": { "x": 154, "y": 132, "w": 25, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 25, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "709_3": { + "frame": { "x": 179, "y": 132, "w": 25, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 25, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "710_2": { + "frame": { "x": 81, "y": 204, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "710_3": { + "frame": { "x": 212, "y": 211, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 9, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "711_1": { + "frame": { "x": 77, "y": 156, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "711_2": { + "frame": { "x": 154, "y": 157, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "711_3": { + "frame": { "x": 98, "y": 159, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "712_2": { + "frame": { "x": 229, "y": 211, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "712_3": { + "frame": { "x": 246, "y": 212, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 10, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "713_2": { + "frame": { "x": 52, "y": 130, "w": 27, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 27, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "713_3": { + "frame": { "x": 79, "y": 132, "w": 27, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 27, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "714_2": { + "frame": { "x": 46, "y": 175, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "714_3": { + "frame": { "x": 228, "y": 172, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 6, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "715_2": { + "frame": { "x": 310, "y": 46, "w": 28, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 28, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "715_3": { + "frame": { "x": 282, "y": 46, "w": 28, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 4, "w": 28, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "716-active_2": { + "frame": { "x": 114, "y": 0, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "716-active_3": { + "frame": { "x": 143, "y": 0, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "716-neutral_2": { + "frame": { "x": 172, "y": 0, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "716-neutral_3": { + "frame": { "x": 201, "y": 0, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "717_2": { + "frame": { "x": 230, "y": 0, "w": 30, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 30, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "717_3": { + "frame": { "x": 260, "y": 0, "w": 30, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 30, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "720-unbound_1": { + "frame": { "x": 38, "y": 0, "w": 38, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 2, "w": 38, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "720-unbound_2": { + "frame": { "x": 76, "y": 0, "w": 38, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 2, "w": 38, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "720-unbound_3": { + "frame": { "x": 0, "y": 0, "w": 38, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 2, "w": 38, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "720_1": { + "frame": { "x": 217, "y": 192, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "720_2": { + "frame": { "x": 38, "y": 195, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "720_3": { + "frame": { "x": 304, "y": 191, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_6v.png", + "format": "RGBA8888", + "size": { "w": 342, "h": 247 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_6v.png b/public/images/pokemon_icons_6v.png index 8b0ecd85af5..83e29e28738 100644 Binary files a/public/images/pokemon_icons_6v.png and b/public/images/pokemon_icons_6v.png differ diff --git a/public/images/pokemon_icons_7v.json b/public/images/pokemon_icons_7v.json index cf34740925a..a7f828a0fe1 100644 --- a/public/images/pokemon_icons_7v.json +++ b/public/images/pokemon_icons_7v.json @@ -1,2687 +1,956 @@ -{ - "textures": [ - { - "image": "pokemon_icons_7v.png", - "format": "RGBA8888", - "size": { - "w": 126, - "h": 614 - }, - "scale": 1, - "frames": [ - { - "filename": "809_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 28 - }, - "frame": { - "x": 0, - "y": 0, - "w": 40, - "h": 28 - } - }, - { - "filename": "809_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 0, - "y": 1, - "w": 40, - "h": 28 - }, - "frame": { - "x": 0, - "y": 28, - "w": 40, - "h": 28 - } - }, - { - "filename": "800-dusk-mane_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 34, - "h": 30 - }, - "frame": { - "x": 40, - "y": 0, - "w": 34, - "h": 30 - } - }, - { - "filename": "800-dusk-mane_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 0, - "w": 34, - "h": 30 - }, - "frame": { - "x": 0, - "y": 56, - "w": 34, - "h": 30 - } - }, - { - "filename": "800-ultra_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 35, - "h": 28 - }, - "frame": { - "x": 74, - "y": 0, - "w": 35, - "h": 28 - } - }, - { - "filename": "797_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 86, - "w": 32, - "h": 30 - } - }, - { - "filename": "797_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 30 - }, - "frame": { - "x": 0, - "y": 116, - "w": 32, - "h": 30 - } - }, - { - "filename": "778-disguised_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 113, - "y": 72, - "w": 17, - "h": 22 - } - }, - { - "filename": "800-dawn-wings_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 0, - "y": 146, - "w": 31, - "h": 30 - } - }, - { - "filename": "800-dawn-wings_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 0, - "y": 176, - "w": 31, - "h": 30 - } - }, - { - "filename": "798_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 31, - "h": 29 - }, - "frame": { - "x": 0, - "y": 206, - "w": 31, - "h": 29 - } - }, - { - "filename": "798_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 31, - "h": 29 - }, - "frame": { - "x": 0, - "y": 235, - "w": 31, - "h": 29 - } - }, - { - "filename": "800-ultra_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 35, - "h": 28 - }, - "frame": { - "x": 40, - "y": 30, - "w": 35, - "h": 28 - } - }, - { - "filename": "800_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 28, - "h": 30 - }, - "frame": { - "x": 0, - "y": 264, - "w": 28, - "h": 30 - } - }, - { - "filename": "800_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 28, - "h": 30 - }, - "frame": { - "x": 0, - "y": 294, - "w": 28, - "h": 30 - } - }, - { - "filename": "773-bug_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 324, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-bug_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 354, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-dark_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 384, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-dark_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 414, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-dragon_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 444, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-dragon_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 474, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-electric_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 504, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-electric_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 534, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-fairy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 564, - "w": 26, - "h": 30 - } - }, - { - "filename": "789_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 0, - "y": 594, - "w": 23, - "h": 20 - } - }, - { - "filename": "809-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 28 - }, - "frame": { - "x": 75, - "y": 28, - "w": 30, - "h": 28 - } - }, - { - "filename": "763_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 109, - "y": 0, - "w": 21, - "h": 24 - } - }, - { - "filename": "809-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 28 - }, - "frame": { - "x": 34, - "y": 58, - "w": 30, - "h": 28 - } - }, - { - "filename": "791_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 28 - }, - "frame": { - "x": 32, - "y": 86, - "w": 29, - "h": 28 - } - }, - { - "filename": "791_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 28 - }, - "frame": { - "x": 32, - "y": 114, - "w": 29, - "h": 28 - } - }, - { - "filename": "763_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 109, - "y": 24, - "w": 21, - "h": 24 - } - }, - { - "filename": "789_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 23, - "y": 594, - "w": 23, - "h": 20 - } - }, - { - "filename": "772_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 25, - "h": 28 - }, - "frame": { - "x": 64, - "y": 58, - "w": 25, - "h": 28 - } - }, - { - "filename": "773-fairy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 61, - "y": 86, - "w": 26, - "h": 30 - } - }, - { - "filename": "730_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 27 - }, - "frame": { - "x": 61, - "y": 116, - "w": 28, - "h": 27 - } - }, - { - "filename": "761_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 16, - "h": 19 - }, - "frame": { - "x": 98, - "y": 516, - "w": 16, - "h": 19 - } - }, - { - "filename": "773-fighting_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 87, - "y": 86, - "w": 26, - "h": 30 - } - }, - { - "filename": "730_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 28, - "h": 27 - }, - "frame": { - "x": 89, - "y": 116, - "w": 28, - "h": 27 - } - }, - { - "filename": "755_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 4, - "w": 13, - "h": 24 - }, - "frame": { - "x": 117, - "y": 117, - "w": 13, - "h": 24 - } - }, - { - "filename": "791_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 29, - "h": 28 - }, - "frame": { - "x": 32, - "y": 142, - "w": 29, - "h": 28 - } - }, - { - "filename": "773-fighting_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 31, - "y": 170, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-fire_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 31, - "y": 200, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-fire_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 31, - "y": 230, - "w": 26, - "h": 30 - } - }, - { - "filename": "792_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 28, - "h": 28 - }, - "frame": { - "x": 61, - "y": 143, - "w": 28, - "h": 28 - } - }, - { - "filename": "792_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 1, - "w": 28, - "h": 28 - }, - "frame": { - "x": 89, - "y": 143, - "w": 28, - "h": 28 - } - }, - { - "filename": "773-flying_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 57, - "y": 171, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-flying_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 57, - "y": 201, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-ghost_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 83, - "y": 171, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-ghost_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 83, - "y": 201, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-grass_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 57, - "y": 231, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-grass_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 83, - "y": 231, - "w": 26, - "h": 30 - } - }, - { - "filename": "778-disguised_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 96, - "y": 446, - "w": 17, - "h": 22 - } - }, - { - "filename": "728_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 113, - "y": 448, - "w": 17, - "h": 20 - } - }, - { - "filename": "728_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 113, - "y": 94, - "w": 17, - "h": 20 - } - }, - { - "filename": "808_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 17 - }, - "frame": { - "x": 114, - "y": 468, - "w": 17, - "h": 17 - } - }, - { - "filename": "808_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 17, - "h": 17 - }, - "frame": { - "x": 113, - "y": 235, - "w": 17, - "h": 17 - } - }, - { - "filename": "773-ground_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 28, - "y": 264, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-ground_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 28, - "y": 294, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-ice_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 324, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-ice_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 354, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-poison_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 384, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-poison_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 414, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-psychic_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 444, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-psychic_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 474, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-rock_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 504, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-rock_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 534, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-steel_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 26, - "y": 564, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-steel_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 54, - "y": 261, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-water_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 54, - "y": 291, - "w": 26, - "h": 30 - } - }, - { - "filename": "773-water_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 80, - "y": 261, - "w": 26, - "h": 30 - } - }, - { - "filename": "735_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 109, - "y": 171, - "w": 20, - "h": 24 - } - }, - { - "filename": "773_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 80, - "y": 291, - "w": 26, - "h": 30 - } - }, - { - "filename": "735_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 109, - "y": 195, - "w": 20, - "h": 24 - } - }, - { - "filename": "789_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 23, - "h": 20 - }, - "frame": { - "x": 46, - "y": 594, - "w": 23, - "h": 20 - } - }, - { - "filename": "754_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 106, - "y": 318, - "w": 20, - "h": 22 - } - }, - { - "filename": "773_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 52, - "y": 324, - "w": 26, - "h": 30 - } - }, - { - "filename": "772_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 25, - "h": 28 - }, - "frame": { - "x": 52, - "y": 354, - "w": 25, - "h": 28 - } - }, - { - "filename": "748_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 382, - "w": 26, - "h": 25 - } - }, - { - "filename": "748_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 26, - "h": 25 - }, - "frame": { - "x": 52, - "y": 407, - "w": 26, - "h": 25 - } - }, - { - "filename": "776_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 23, - "h": 26 - }, - "frame": { - "x": 52, - "y": 432, - "w": 23, - "h": 26 - } - }, - { - "filename": "776_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 23, - "h": 26 - }, - "frame": { - "x": 101, - "y": 382, - "w": 23, - "h": 26 - } - }, - { - "filename": "729_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 23, - "h": 24 - }, - "frame": { - "x": 52, - "y": 484, - "w": 23, - "h": 24 - } - }, - { - "filename": "729_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 23, - "h": 24 - }, - "frame": { - "x": 52, - "y": 508, - "w": 23, - "h": 24 - } - }, - { - "filename": "756_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 52, - "y": 532, - "w": 22, - "h": 24 - } - }, - { - "filename": "756_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 24 - }, - "frame": { - "x": 52, - "y": 556, - "w": 22, - "h": 24 - } - }, - { - "filename": "767_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 24, - "h": 14 - }, - "frame": { - "x": 52, - "y": 580, - "w": 24, - "h": 14 - } - }, - { - "filename": "747_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 22, - "h": 20 - }, - "frame": { - "x": 69, - "y": 594, - "w": 22, - "h": 20 - } - }, - { - "filename": "768_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 78, - "y": 321, - "w": 24, - "h": 23 - } - }, - { - "filename": "768_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 106, - "y": 295, - "w": 24, - "h": 23 - } - }, - { - "filename": "2053_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 24, - "h": 22 - }, - "frame": { - "x": 78, - "y": 344, - "w": 24, - "h": 22 - } - }, - { - "filename": "2053_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 24, - "h": 22 - }, - "frame": { - "x": 102, - "y": 360, - "w": 24, - "h": 22 - } - }, - { - "filename": "734_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 25, - "h": 16 - }, - "frame": { - "x": 77, - "y": 366, - "w": 25, - "h": 16 - } - }, - { - "filename": "802_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 78, - "y": 382, - "w": 22, - "h": 24 - } - }, - { - "filename": "802_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 78, - "y": 406, - "w": 22, - "h": 24 - } - }, - { - "filename": "802_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 4, - "w": 22, - "h": 24 - }, - "frame": { - "x": 52, - "y": 458, - "w": 22, - "h": 24 - } - }, - { - "filename": "793_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 109, - "y": 48, - "w": 21, - "h": 24 - } - }, - { - "filename": "734_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 25, - "h": 16 - }, - "frame": { - "x": 78, - "y": 430, - "w": 25, - "h": 16 - } - }, - { - "filename": "752_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 23, - "h": 18 - }, - "frame": { - "x": 104, - "y": 408, - "w": 23, - "h": 18 - } - }, - { - "filename": "793_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 75, - "y": 446, - "w": 21, - "h": 24 - } - }, - { - "filename": "754_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 6, - "w": 20, - "h": 22 - }, - "frame": { - "x": 74, - "y": 470, - "w": 20, - "h": 22 - } - }, - { - "filename": "762_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 18, - "h": 23 - }, - "frame": { - "x": 75, - "y": 492, - "w": 18, - "h": 23 - } - }, - { - "filename": "747_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 22, - "h": 20 - }, - "frame": { - "x": 109, - "y": 426, - "w": 22, - "h": 20 - } - }, - { - "filename": "752_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 23, - "h": 18 - }, - "frame": { - "x": 75, - "y": 515, - "w": 23, - "h": 18 - } - }, - { - "filename": "2052_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 21 - }, - "frame": { - "x": 74, - "y": 533, - "w": 21, - "h": 21 - } - }, - { - "filename": "2052_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 7, - "w": 21, - "h": 21 - }, - "frame": { - "x": 74, - "y": 554, - "w": 21, - "h": 21 - } - }, - { - "filename": "790_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 19 - }, - "frame": { - "x": 76, - "y": 575, - "w": 21, - "h": 19 - } - }, - { - "filename": "751_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 14, - "h": 20 - }, - "frame": { - "x": 102, - "y": 340, - "w": 14, - "h": 20 - } - }, - { - "filename": "790_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 19 - }, - "frame": { - "x": 91, - "y": 594, - "w": 21, - "h": 19 - } - }, - { - "filename": "762_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 4, - "w": 18, - "h": 23 - }, - "frame": { - "x": 93, - "y": 492, - "w": 18, - "h": 23 - } - }, - { - "filename": "755_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 4, - "w": 13, - "h": 24 - }, - "frame": { - "x": 117, - "y": 141, - "w": 13, - "h": 24 - } - }, - { - "filename": "751_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 14, - "h": 20 - }, - "frame": { - "x": 116, - "y": 340, - "w": 14, - "h": 20 - } - }, - { - "filename": "753_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 8, - "w": 14, - "h": 19 - }, - "frame": { - "x": 116, - "y": 537, - "w": 14, - "h": 19 - } - }, - { - "filename": "753_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 14, - "y": 8, - "w": 14, - "h": 19 - }, - "frame": { - "x": 116, - "y": 556, - "w": 14, - "h": 19 - } - }, - { - "filename": "761_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 16, - "h": 19 - }, - "frame": { - "x": 96, - "y": 575, - "w": 16, - "h": 19 - } - }, - { - "filename": "767_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 11, - "w": 24, - "h": 14 - }, - "frame": { - "x": 106, - "y": 265, - "w": 24, - "h": 14 - } - }, - { - "filename": "742_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 19, - "h": 20 - }, - "frame": { - "x": 112, - "y": 575, - "w": 19, - "h": 20 - } - }, - { - "filename": "742_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 19, - "h": 20 - }, - "frame": { - "x": 112, - "y": 594, - "w": 19, - "h": 20 - } - }, - { - "filename": "743_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 94, - "y": 470, - "w": 20, - "h": 22 - } - }, - { - "filename": "743_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 89, - "y": 56, - "w": 20, - "h": 22 - } - }, - { - "filename": "777_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 17, - "h": 19 - }, - "frame": { - "x": 114, - "y": 518, - "w": 17, - "h": 19 - } - }, - { - "filename": "777_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 8, - "w": 17, - "h": 19 - }, - "frame": { - "x": 114, - "y": 486, - "w": 17, - "h": 19 - } - }, - { - "filename": "778-busted_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 21, - "h": 16 - }, - "frame": { - "x": 109, - "y": 219, - "w": 21, - "h": 16 - } - }, - { - "filename": "778-busted_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 12, - "w": 21, - "h": 16 - }, - "frame": { - "x": 106, - "y": 279, - "w": 21, - "h": 16 - } - }, - { - "filename": "779_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 20 - }, - "frame": { - "x": 95, - "y": 535, - "w": 21, - "h": 20 - } - }, - { - "filename": "779_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 21, - "h": 20 - }, - "frame": { - "x": 95, - "y": 555, - "w": 21, - "h": 20 - } - }, - { - "filename": "771_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 11, - "w": 18, - "h": 13 - }, - "frame": { - "x": 112, - "y": 505, - "w": 18, - "h": 13 - } - }, - { - "filename": "771_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 11, - "w": 18, - "h": 13 - }, - "frame": { - "x": 109, - "y": 252, - "w": 18, - "h": 13 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:4de745903870d93aebe9c754281ab9a1:4247d298b98d033d5b01c30d46133c87:d5975df27e1e94206a68aa1fd3c2c8d0$" - } +{ "frames": { + "2027_2": { + "frame": { "x": 160, "y": 218, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2027_3": { + "frame": { "x": 91, "y": 218, "w": 21, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 10, "w": 21, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2028_2": { + "frame": { "x": 26, "y": 148, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2028_3": { + "frame": { "x": 104, "y": 148, "w": 25, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 25, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2052_2": { + "frame": { "x": 144, "y": 195, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2052_3": { + "frame": { "x": 331, "y": 195, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2053_2": { + "frame": { "x": 121, "y": 172, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "2053_3": { + "frame": { "x": 312, "y": 172, "w": 24, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 24, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "728_2": { + "frame": { "x": 62, "y": 219, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "728_3": { + "frame": { "x": 45, "y": 219, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "729_2": { + "frame": { "x": 158, "y": 171, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "729_3": { + "frame": { "x": 98, "y": 172, "w": 23, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 23, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "730_2": { + "frame": { "x": 130, "y": 145, "w": 28, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 28, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "730_3": { + "frame": { "x": 234, "y": 147, "w": 28, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 28, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "734_2": { + "frame": { "x": 306, "y": 214, "w": 25, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 25, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "734_3": { + "frame": { "x": 20, "y": 215, "w": 25, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 25, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "735_2": { + "frame": { "x": 268, "y": 175, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "735_3": { + "frame": { "x": 288, "y": 175, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "742_2": { + "frame": { "x": 187, "y": 217, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "742_3": { + "frame": { "x": 283, "y": 217, "w": 19, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 19, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "743_2": { + "frame": { "x": 0, "y": 197, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "743_3": { + "frame": { "x": 96, "y": 196, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "747_2": { + "frame": { "x": 165, "y": 198, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "747_3": { + "frame": { "x": 202, "y": 197, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "748_2": { + "frame": { "x": 0, "y": 148, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "748_3": { + "frame": { "x": 312, "y": 147, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "751_2": { + "frame": { "x": 104, "y": 60, "w": 14, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 14, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "751_3": { + "frame": { "x": 130, "y": 88, "w": 14, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 14, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "752_2": { + "frame": { "x": 283, "y": 199, "w": 23, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 23, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "752_3": { + "frame": { "x": 116, "y": 214, "w": 23, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 8, "w": 23, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "753_2": { + "frame": { "x": 187, "y": 198, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 8, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "753_3": { + "frame": { "x": 234, "y": 118, "w": 14, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 8, "w": 14, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "754_2": { + "frame": { "x": 71, "y": 197, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "754_3": { + "frame": { "x": 224, "y": 198, "w": 20, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 20, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "755_2": { + "frame": { "x": 346, "y": 52, "w": 13, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 4, "w": 13, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "755_3": { + "frame": { "x": 268, "y": 30, "w": 13, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 14, "y": 4, "w": 13, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "756_2": { + "frame": { "x": 338, "y": 171, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "756_3": { + "frame": { "x": 0, "y": 173, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "761_2": { + "frame": { "x": 323, "y": 235, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "761_3": { + "frame": { "x": 129, "y": 235, "w": 16, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 16, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "762_2": { + "frame": { "x": 342, "y": 29, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "762_3": { + "frame": { "x": 265, "y": 199, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 4, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "763_2": { + "frame": { "x": 50, "y": 175, "w": 21, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 21, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "763_3": { + "frame": { "x": 181, "y": 174, "w": 21, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 21, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "767_2": { + "frame": { "x": 223, "y": 220, "w": 24, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 24, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "767_3": { + "frame": { "x": 17, "y": 231, "w": 24, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 11, "w": 24, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "768_2": { + "frame": { "x": 26, "y": 172, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "768_3": { + "frame": { "x": 74, "y": 150, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "771_2": { + "frame": { "x": 163, "y": 236, "w": 18, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 11, "w": 18, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "771_3": { + "frame": { "x": 145, "y": 236, "w": 18, "h": 13 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 11, "w": 18, "h": 13 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "772_2": { + "frame": { "x": 262, "y": 147, "w": 25, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 25, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "772_3": { + "frame": { "x": 287, "y": 147, "w": 25, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 25, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-bug_2": { + "frame": { "x": 0, "y": 118, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-bug_3": { + "frame": { "x": 26, "y": 118, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-dark_2": { + "frame": { "x": 104, "y": 118, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-dark_3": { + "frame": { "x": 182, "y": 118, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-dragon_2": { + "frame": { "x": 208, "y": 118, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-dragon_3": { + "frame": { "x": 52, "y": 120, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-electric_2": { + "frame": { "x": 78, "y": 120, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-electric_3": { + "frame": { "x": 268, "y": 57, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-fairy_2": { + "frame": { "x": 294, "y": 57, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-fairy_3": { + "frame": { "x": 320, "y": 57, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-fighting_2": { + "frame": { "x": 0, "y": 58, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-fighting_3": { + "frame": { "x": 26, "y": 58, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-fire_2": { + "frame": { "x": 118, "y": 58, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-fire_3": { + "frame": { "x": 203, "y": 58, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-flying_2": { + "frame": { "x": 229, "y": 58, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-flying_3": { + "frame": { "x": 326, "y": 117, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-ghost_2": { + "frame": { "x": 78, "y": 60, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-ghost_3": { + "frame": { "x": 144, "y": 85, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-grass_2": { + "frame": { "x": 170, "y": 85, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-grass_3": { + "frame": { "x": 255, "y": 87, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-ground_2": { + "frame": { "x": 281, "y": 87, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-ground_3": { + "frame": { "x": 307, "y": 87, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-ice_2": { + "frame": { "x": 333, "y": 87, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-ice_3": { + "frame": { "x": 0, "y": 88, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-poison_2": { + "frame": { "x": 26, "y": 88, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-poison_3": { + "frame": { "x": 104, "y": 88, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-psychic_2": { + "frame": { "x": 196, "y": 88, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-psychic_3": { + "frame": { "x": 222, "y": 88, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-rock_2": { + "frame": { "x": 52, "y": 90, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-rock_3": { + "frame": { "x": 78, "y": 90, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-steel_2": { + "frame": { "x": 130, "y": 115, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-steel_3": { + "frame": { "x": 52, "y": 60, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-water_2": { + "frame": { "x": 156, "y": 115, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773-water_3": { + "frame": { "x": 248, "y": 117, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773_2": { + "frame": { "x": 274, "y": 117, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "773_3": { + "frame": { "x": 300, "y": 117, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "776_2": { + "frame": { "x": 181, "y": 148, "w": 23, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "776_3": { + "frame": { "x": 158, "y": 145, "w": 23, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "777_2": { + "frame": { "x": 223, "y": 234, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "777_3": { + "frame": { "x": 112, "y": 232, "w": 17, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 8, "w": 17, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "778-busted_2": { + "frame": { "x": 302, "y": 230, "w": 21, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 21, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "778-busted_3": { + "frame": { "x": 247, "y": 222, "w": 21, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 12, "w": 21, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "778-disguised_2": { + "frame": { "x": 206, "y": 217, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "778-disguised_3": { + "frame": { "x": 0, "y": 219, "w": 17, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 5, "w": 17, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "779_2": { + "frame": { "x": 244, "y": 199, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "779_3": { + "frame": { "x": 45, "y": 199, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "789_1": { + "frame": { "x": 308, "y": 194, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "789_2": { + "frame": { "x": 22, "y": 195, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "789_3": { + "frame": { "x": 121, "y": 194, "w": 23, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 6, "w": 23, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "790_2": { + "frame": { "x": 331, "y": 216, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "790_3": { + "frame": { "x": 139, "y": 216, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "791_1": { + "frame": { "x": 239, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "791_2": { + "frame": { "x": 210, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "791_3": { + "frame": { "x": 118, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "792_2": { + "frame": { "x": 175, "y": 57, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "792_3": { + "frame": { "x": 147, "y": 57, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 1, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "793_2": { + "frame": { "x": 247, "y": 175, "w": 21, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 21, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "793_3": { + "frame": { "x": 226, "y": 174, "w": 21, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 21, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "797_2": { + "frame": { "x": 250, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "797_3": { + "frame": { "x": 218, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "798_2": { + "frame": { "x": 179, "y": 28, "w": 31, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 31, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "798_3": { + "frame": { "x": 148, "y": 28, "w": 31, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 31, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800-dawn-wings_2": { + "frame": { "x": 31, "y": 28, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800-dawn-wings_3": { + "frame": { "x": 0, "y": 28, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800-dusk-mane_2": { + "frame": { "x": 114, "y": 0, "w": 34, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 34, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800-dusk-mane_3": { + "frame": { "x": 80, "y": 0, "w": 34, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 0, "w": 34, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800-ultra_2": { + "frame": { "x": 183, "y": 0, "w": 35, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 35, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800-ultra_3": { + "frame": { "x": 148, "y": 0, "w": 35, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 35, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800_2": { + "frame": { "x": 90, "y": 30, "w": 28, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 28, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "800_3": { + "frame": { "x": 62, "y": 30, "w": 28, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 28, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "802_1": { + "frame": { "x": 74, "y": 173, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 4, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "802_2": { + "frame": { "x": 204, "y": 173, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 4, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "802_3": { + "frame": { "x": 338, "y": 147, "w": 22, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 4, "w": 22, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "803_2": { + "frame": { "x": 51, "y": 150, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "803_3": { + "frame": { "x": 204, "y": 148, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 3, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "804_2": { + "frame": { "x": 315, "y": 0, "w": 33, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 33, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "804_3": { + "frame": { "x": 282, "y": 0, "w": 33, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 33, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "808_2": { + "frame": { "x": 339, "y": 235, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "808_3": { + "frame": { "x": 79, "y": 236, "w": 17, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 17, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "809-gigantamax_2": { + "frame": { "x": 312, "y": 29, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "809-gigantamax_3": { + "frame": { "x": 282, "y": 29, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "809_2": { + "frame": { "x": 40, "y": 0, "w": 40, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 40, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "809_3": { + "frame": { "x": 0, "y": 0, "w": 40, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 0, "y": 1, "w": 40, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_6v.png", + "format": "RGBA8888", + "size": { "w": 360, "h": 254 }, + "scale": "1" + } } diff --git a/public/images/pokemon_icons_7v.png b/public/images/pokemon_icons_7v.png index 308e405525d..50fee6de396 100644 Binary files a/public/images/pokemon_icons_7v.png and b/public/images/pokemon_icons_7v.png differ diff --git a/public/images/pokemon_icons_8v.json b/public/images/pokemon_icons_8v.json index 38419d46699..002957bba0c 100644 --- a/public/images/pokemon_icons_8v.json +++ b/public/images/pokemon_icons_8v.json @@ -1,3359 +1,1306 @@ -{ - "textures": [ - { - "image": "pokemon_icons_8v.png", - "format": "RGBA8888", - "size": { - "w": 127, - "h": 711 - }, - "scale": 1, - "frames": [ - { - "filename": "890-eternamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 38, - "h": 30 - }, - "frame": { - "x": 0, - "y": 0, - "w": 38, - "h": 30 - } - }, - { - "filename": "890-eternamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 38, - "h": 30 - }, - "frame": { - "x": 0, - "y": 30, - "w": 38, - "h": 30 - } - }, - { - "filename": "851_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 37, - "h": 30 - }, - "frame": { - "x": 38, - "y": 0, - "w": 37, - "h": 30 - } - }, - { - "filename": "851_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 1, - "y": 0, - "w": 37, - "h": 30 - }, - "frame": { - "x": 0, - "y": 60, - "w": 37, - "h": 30 - } - }, - { - "filename": "890_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 33, - "h": 28 - }, - "frame": { - "x": 38, - "y": 30, - "w": 33, - "h": 28 - } - }, - { - "filename": "890_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 3, - "y": 1, - "w": 33, - "h": 28 - }, - "frame": { - "x": 75, - "y": 0, - "w": 33, - "h": 28 - } - }, - { - "filename": "876_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 24 - }, - "frame": { - "x": 108, - "y": 0, - "w": 19, - "h": 24 - } - }, - { - "filename": "818-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 0, - "y": 90, - "w": 30, - "h": 30 - } - }, - { - "filename": "818-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 0, - "y": 120, - "w": 30, - "h": 30 - } - }, - { - "filename": "858-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 150, - "w": 29, - "h": 30 - } - }, - { - "filename": "858-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 29, - "h": 30 - }, - "frame": { - "x": 0, - "y": 180, - "w": 29, - "h": 30 - } - }, - { - "filename": "884-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 0, - "y": 210, - "w": 27, - "h": 30 - } - }, - { - "filename": "884-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 0, - "y": 240, - "w": 27, - "h": 30 - } - }, - { - "filename": "861-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 270, - "w": 26, - "h": 30 - } - }, - { - "filename": "861-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 300, - "w": 26, - "h": 30 - } - }, - { - "filename": "898-shadow_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 330, - "w": 26, - "h": 30 - } - }, - { - "filename": "898-shadow_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 360, - "w": 26, - "h": 30 - } - }, - { - "filename": "898-shadow_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 0, - "w": 26, - "h": 30 - }, - "frame": { - "x": 0, - "y": 390, - "w": 26, - "h": 30 - } - }, - { - "filename": "823-gigantamax_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 32, - "h": 27 - }, - "frame": { - "x": 0, - "y": 420, - "w": 32, - "h": 27 - } - }, - { - "filename": "823-gigantamax_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 1, - "w": 32, - "h": 27 - }, - "frame": { - "x": 0, - "y": 447, - "w": 32, - "h": 27 - } - }, - { - "filename": "864_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 27 - }, - "frame": { - "x": 0, - "y": 474, - "w": 30, - "h": 27 - } - }, - { - "filename": "864_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 27 - }, - "frame": { - "x": 0, - "y": 501, - "w": 30, - "h": 27 - } - }, - { - "filename": "887_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 0, - "y": 528, - "w": 30, - "h": 26 - } - }, - { - "filename": "887_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 0, - "y": 554, - "w": 30, - "h": 26 - } - }, - { - "filename": "887_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 2, - "w": 30, - "h": 26 - }, - "frame": { - "x": 0, - "y": 580, - "w": 30, - "h": 26 - } - }, - { - "filename": "898-ice_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 0, - "y": 606, - "w": 24, - "h": 29 - } - }, - { - "filename": "898-ice_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 0, - "y": 635, - "w": 24, - "h": 29 - } - }, - { - "filename": "898-ice_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 24, - "h": 29 - }, - "frame": { - "x": 0, - "y": 664, - "w": 24, - "h": 29 - } - }, - { - "filename": "4146_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 18 - }, - "frame": { - "x": 0, - "y": 693, - "w": 28, - "h": 18 - } - }, - { - "filename": "876_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 24 - }, - "frame": { - "x": 108, - "y": 24, - "w": 19, - "h": 24 - } - }, - { - "filename": "892-gigantamax-single_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 29 - }, - "frame": { - "x": 30, - "y": 90, - "w": 23, - "h": 29 - } - }, - { - "filename": "892-gigantamax-single_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 29 - }, - "frame": { - "x": 30, - "y": 119, - "w": 23, - "h": 29 - } - }, - { - "filename": "892-gigantamax-single_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 29 - }, - "frame": { - "x": 24, - "y": 606, - "w": 23, - "h": 29 - } - }, - { - "filename": "818_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 24, - "y": 635, - "w": 22, - "h": 27 - } - }, - { - "filename": "818_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 24, - "y": 662, - "w": 22, - "h": 27 - } - }, - { - "filename": "892-rapid-strike_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 22 - }, - "frame": { - "x": 28, - "y": 689, - "w": 26, - "h": 22 - } - }, - { - "filename": "903_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 21, - "h": 27 - }, - "frame": { - "x": 71, - "y": 30, - "w": 21, - "h": 27 - } - }, - { - "filename": "6549_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 16, - "h": 23 - }, - "frame": { - "x": 92, - "y": 28, - "w": 16, - "h": 23 - } - }, - { - "filename": "830_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 108, - "y": 48, - "w": 19, - "h": 23 - } - }, - { - "filename": "6549_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 5, - "w": 16, - "h": 23 - }, - "frame": { - "x": 92, - "y": 51, - "w": 16, - "h": 23 - } - }, - { - "filename": "830_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 108, - "y": 71, - "w": 19, - "h": 23 - } - }, - { - "filename": "903_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 21, - "h": 27 - }, - "frame": { - "x": 71, - "y": 57, - "w": 21, - "h": 27 - } - }, - { - "filename": "6101_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 16, - "h": 16 - }, - "frame": { - "x": 92, - "y": 74, - "w": 16, - "h": 16 - } - }, - { - "filename": "891_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 22 - }, - "frame": { - "x": 53, - "y": 58, - "w": 18, - "h": 22 - } - }, - { - "filename": "6705_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 38, - "y": 58, - "w": 15, - "h": 22 - } - }, - { - "filename": "850_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 10 - }, - "frame": { - "x": 37, - "y": 80, - "w": 21, - "h": 10 - } - }, - { - "filename": "4199_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 20, - "h": 27 - }, - "frame": { - "x": 53, - "y": 90, - "w": 20, - "h": 27 - } - }, - { - "filename": "861_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 53, - "y": 117, - "w": 25, - "h": 26 - } - }, - { - "filename": "856_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 73, - "y": 84, - "w": 19, - "h": 23 - } - }, - { - "filename": "6101_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 16, - "h": 16 - }, - "frame": { - "x": 92, - "y": 90, - "w": 16, - "h": 16 - } - }, - { - "filename": "856_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 23 - }, - "frame": { - "x": 108, - "y": 94, - "w": 19, - "h": 23 - } - }, - { - "filename": "850_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 10, - "w": 21, - "h": 10 - }, - "frame": { - "x": 73, - "y": 107, - "w": 21, - "h": 10 - } - }, - { - "filename": "861_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 78, - "y": 117, - "w": 25, - "h": 26 - } - }, - { - "filename": "892-gigantamax-rapid_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 103, - "y": 117, - "w": 24, - "h": 26 - } - }, - { - "filename": "901_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 53, - "y": 143, - "w": 28, - "h": 23 - } - }, - { - "filename": "901_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 28, - "h": 23 - }, - "frame": { - "x": 81, - "y": 143, - "w": 28, - "h": 23 - } - }, - { - "filename": "891_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 22 - }, - "frame": { - "x": 109, - "y": 143, - "w": 18, - "h": 22 - } - }, - { - "filename": "892-gigantamax-rapid_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 29, - "y": 150, - "w": 24, - "h": 26 - } - }, - { - "filename": "892-gigantamax-rapid_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 24, - "h": 26 - }, - "frame": { - "x": 29, - "y": 176, - "w": 24, - "h": 26 - } - }, - { - "filename": "823_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 53, - "y": 166, - "w": 27, - "h": 24 - } - }, - { - "filename": "823_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 24 - }, - "frame": { - "x": 80, - "y": 166, - "w": 27, - "h": 24 - } - }, - { - "filename": "863_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 20, - "h": 24 - }, - "frame": { - "x": 107, - "y": 166, - "w": 20, - "h": 24 - } - }, - { - "filename": "4145_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 53, - "y": 190, - "w": 28, - "h": 23 - } - }, - { - "filename": "4145_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 81, - "y": 190, - "w": 28, - "h": 23 - } - }, - { - "filename": "891_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 18, - "h": 22 - }, - "frame": { - "x": 109, - "y": 190, - "w": 18, - "h": 22 - } - }, - { - "filename": "817_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 29, - "y": 202, - "w": 24, - "h": 24 - } - }, - { - "filename": "6706_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 26, - "h": 25 - }, - "frame": { - "x": 27, - "y": 226, - "w": 26, - "h": 25 - } - }, - { - "filename": "6706_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 26, - "h": 25 - }, - "frame": { - "x": 53, - "y": 213, - "w": 26, - "h": 25 - } - }, - { - "filename": "886_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 79, - "y": 213, - "w": 26, - "h": 24 - } - }, - { - "filename": "858_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 105, - "y": 213, - "w": 22, - "h": 25 - } - }, - { - "filename": "886_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 27, - "y": 251, - "w": 26, - "h": 24 - } - }, - { - "filename": "886_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 53, - "y": 238, - "w": 26, - "h": 24 - } - }, - { - "filename": "897_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 79, - "y": 237, - "w": 26, - "h": 24 - } - }, - { - "filename": "858_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 105, - "y": 238, - "w": 22, - "h": 25 - } - }, - { - "filename": "897_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 26, - "y": 275, - "w": 26, - "h": 24 - } - }, - { - "filename": "897_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 26, - "h": 24 - }, - "frame": { - "x": 26, - "y": 299, - "w": 26, - "h": 24 - } - }, - { - "filename": "900_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 26, - "y": 323, - "w": 25, - "h": 25 - } - }, - { - "filename": "900_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 3, - "w": 25, - "h": 25 - }, - "frame": { - "x": 26, - "y": 348, - "w": 25, - "h": 25 - } - }, - { - "filename": "817_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 26, - "y": 373, - "w": 24, - "h": 24 - } - }, - { - "filename": "4078_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 23 - }, - "frame": { - "x": 26, - "y": 397, - "w": 27, - "h": 23 - } - }, - { - "filename": "884_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 32, - "y": 420, - "w": 22, - "h": 25 - } - }, - { - "filename": "884_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 2, - "w": 22, - "h": 25 - }, - "frame": { - "x": 32, - "y": 445, - "w": 22, - "h": 25 - } - }, - { - "filename": "892-rapid-strike_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 22 - }, - "frame": { - "x": 53, - "y": 262, - "w": 26, - "h": 22 - } - }, - { - "filename": "892-rapid-strike_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 26, - "h": 22 - }, - "frame": { - "x": 79, - "y": 261, - "w": 26, - "h": 22 - } - }, - { - "filename": "816_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 105, - "y": 263, - "w": 22, - "h": 23 - } - }, - { - "filename": "4078_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 27, - "h": 23 - }, - "frame": { - "x": 52, - "y": 284, - "w": 27, - "h": 23 - } - }, - { - "filename": "896_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 79, - "y": 283, - "w": 24, - "h": 24 - } - }, - { - "filename": "896_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 103, - "y": 286, - "w": 24, - "h": 24 - } - }, - { - "filename": "4146_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 28, - "h": 18 - }, - "frame": { - "x": 52, - "y": 307, - "w": 28, - "h": 18 - } - }, - { - "filename": "6713_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 51, - "y": 325, - "w": 27, - "h": 23 - } - }, - { - "filename": "6713_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 27, - "h": 23 - }, - "frame": { - "x": 51, - "y": 348, - "w": 27, - "h": 23 - } - }, - { - "filename": "892_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 80, - "y": 307, - "w": 23, - "h": 25 - } - }, - { - "filename": "896_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 24 - }, - "frame": { - "x": 103, - "y": 310, - "w": 24, - "h": 24 - } - }, - { - "filename": "6571_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 78, - "y": 332, - "w": 25, - "h": 23 - } - }, - { - "filename": "4080_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 3, - "w": 24, - "h": 23 - }, - "frame": { - "x": 103, - "y": 334, - "w": 24, - "h": 23 - } - }, - { - "filename": "873_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 - }, - "frame": { - "x": 78, - "y": 355, - "w": 25, - "h": 22 - } - }, - { - "filename": "4077_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 21 - }, - "frame": { - "x": 103, - "y": 357, - "w": 24, - "h": 21 - } - }, - { - "filename": "873_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 - }, - "frame": { - "x": 53, - "y": 371, - "w": 25, - "h": 22 - } - }, - { - "filename": "892_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 53, - "y": 393, - "w": 23, - "h": 25 - } - }, - { - "filename": "892_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 2, - "w": 23, - "h": 25 - }, - "frame": { - "x": 54, - "y": 418, - "w": 23, - "h": 25 - } - }, - { - "filename": "6571_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 25, - "h": 23 - }, - "frame": { - "x": 54, - "y": 443, - "w": 25, - "h": 23 - } - }, - { - "filename": "873_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 25, - "h": 22 - }, - "frame": { - "x": 78, - "y": 377, - "w": 25, - "h": 22 - } - }, - { - "filename": "4077_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 24, - "h": 21 - }, - "frame": { - "x": 103, - "y": 378, - "w": 24, - "h": 21 - } - }, - { - "filename": "822_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 76, - "y": 399, - "w": 22, - "h": 19 - } - }, - { - "filename": "816_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 77, - "y": 418, - "w": 22, - "h": 23 - } - }, - { - "filename": "822_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 98, - "y": 399, - "w": 22, - "h": 19 - } - }, - { - "filename": "855_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 99, - "y": 418, - "w": 22, - "h": 23 - } - }, - { - "filename": "855_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 79, - "y": 441, - "w": 22, - "h": 23 - } - }, - { - "filename": "860_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 101, - "y": 441, - "w": 22, - "h": 23 - } - }, - { - "filename": "885_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 24, - "h": 17 - }, - "frame": { - "x": 54, - "y": 466, - "w": 24, - "h": 17 - } - }, - { - "filename": "835_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 20 - }, - "frame": { - "x": 32, - "y": 470, - "w": 22, - "h": 20 - } - }, - { - "filename": "860_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 30, - "y": 490, - "w": 22, - "h": 23 - } - }, - { - "filename": "876-female_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 30, - "y": 513, - "w": 22, - "h": 23 - } - }, - { - "filename": "876-female_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 3, - "w": 22, - "h": 23 - }, - "frame": { - "x": 30, - "y": 536, - "w": 22, - "h": 23 - } - }, - { - "filename": "836_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 30, - "y": 559, - "w": 22, - "h": 22 - } - }, - { - "filename": "836_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 30, - "y": 581, - "w": 22, - "h": 22 - } - }, - { - "filename": "885_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 24, - "h": 17 - }, - "frame": { - "x": 54, - "y": 483, - "w": 24, - "h": 17 - } - }, - { - "filename": "857_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 52, - "y": 500, - "w": 22, - "h": 22 - } - }, - { - "filename": "857_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 22, - "h": 22 - }, - "frame": { - "x": 52, - "y": 522, - "w": 22, - "h": 22 - } - }, - { - "filename": "863_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 20, - "h": 24 - }, - "frame": { - "x": 52, - "y": 544, - "w": 20, - "h": 24 - } - }, - { - "filename": "898_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 19, - "h": 22 - }, - "frame": { - "x": 52, - "y": 568, - "w": 19, - "h": 22 - } - }, - { - "filename": "821_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 52, - "y": 590, - "w": 19, - "h": 16 - } - }, - { - "filename": "835_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 20 - }, - "frame": { - "x": 47, - "y": 606, - "w": 22, - "h": 20 - } - }, - { - "filename": "885_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 6, - "w": 24, - "h": 17 - }, - "frame": { - "x": 47, - "y": 626, - "w": 24, - "h": 17 - } - }, - { - "filename": "4052_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 21, - "h": 21 - }, - "frame": { - "x": 46, - "y": 643, - "w": 21, - "h": 21 - } - }, - { - "filename": "4052_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 21, - "h": 21 - }, - "frame": { - "x": 46, - "y": 664, - "w": 21, - "h": 21 - } - }, - { - "filename": "898_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 19, - "h": 22 - }, - "frame": { - "x": 54, - "y": 685, - "w": 19, - "h": 22 - } - }, - { - "filename": "898_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 19, - "h": 22 - }, - "frame": { - "x": 74, - "y": 500, - "w": 19, - "h": 22 - } - }, - { - "filename": "6570_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 74, - "y": 522, - "w": 18, - "h": 22 - } - }, - { - "filename": "4222_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 21, - "h": 20 - }, - "frame": { - "x": 72, - "y": 544, - "w": 21, - "h": 20 - } - }, - { - "filename": "6570_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 6, - "w": 18, - "h": 22 - }, - "frame": { - "x": 67, - "y": 643, - "w": 18, - "h": 22 - } - }, - { - "filename": "4222_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 21, - "h": 20 - }, - "frame": { - "x": 67, - "y": 665, - "w": 21, - "h": 20 - } - }, - { - "filename": "6705_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 6, - "w": 15, - "h": 22 - }, - "frame": { - "x": 73, - "y": 685, - "w": 15, - "h": 22 - } - }, - { - "filename": "4144_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 72, - "y": 564, - "w": 22, - "h": 19 - } - }, - { - "filename": "4264_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 20 - }, - "frame": { - "x": 71, - "y": 583, - "w": 22, - "h": 20 - } - }, - { - "filename": "4144_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 19 - }, - "frame": { - "x": 71, - "y": 603, - "w": 22, - "h": 19 - } - }, - { - "filename": "877-hangry_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 71, - "y": 622, - "w": 17, - "h": 21 - } - }, - { - "filename": "877-hangry_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 88, - "y": 622, - "w": 17, - "h": 21 - } - }, - { - "filename": "4264_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 20 - }, - "frame": { - "x": 85, - "y": 643, - "w": 22, - "h": 20 - } - }, - { - "filename": "877-hangry_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 88, - "y": 663, - "w": 17, - "h": 21 - } - }, - { - "filename": "877_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 88, - "y": 684, - "w": 17, - "h": 21 - } - }, - { - "filename": "4263_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 16 - }, - "frame": { - "x": 105, - "y": 464, - "w": 22, - "h": 16 - } - }, - { - "filename": "4263_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 7, - "w": 22, - "h": 16 - }, - "frame": { - "x": 105, - "y": 480, - "w": 22, - "h": 16 - } - }, - { - "filename": "877_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 105, - "y": 663, - "w": 17, - "h": 21 - } - }, - { - "filename": "877_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 4, - "w": 17, - "h": 21 - }, - "frame": { - "x": 105, - "y": 684, - "w": 17, - "h": 21 - } - }, - { - "filename": "6215_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 92, - "y": 522, - "w": 17, - "h": 21 - } - }, - { - "filename": "6215_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 17, - "h": 21 - }, - "frame": { - "x": 93, - "y": 543, - "w": 17, - "h": 21 - } - }, - { - "filename": "859_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 17, - "h": 20 - }, - "frame": { - "x": 110, - "y": 496, - "w": 17, - "h": 20 - } - }, - { - "filename": "859_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 5, - "w": 17, - "h": 20 - }, - "frame": { - "x": 93, - "y": 496, - "w": 17, - "h": 20 - } - }, - { - "filename": "829_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 17, - "h": 18 - }, - "frame": { - "x": 110, - "y": 516, - "w": 17, - "h": 18 - } - }, - { - "filename": "829_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 6, - "w": 17, - "h": 18 - }, - "frame": { - "x": 110, - "y": 534, - "w": 17, - "h": 18 - } - }, - { - "filename": "854_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 14 - }, - "frame": { - "x": 110, - "y": 552, - "w": 17, - "h": 14 - } - }, - { - "filename": "6100_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 14, - "h": 14 - }, - "frame": { - "x": 94, - "y": 564, - "w": 14, - "h": 14 - } - }, - { - "filename": "821_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 7, - "w": 19, - "h": 16 - }, - "frame": { - "x": 108, - "y": 566, - "w": 19, - "h": 16 - } - }, - { - "filename": "6100_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 14, - "w": 14, - "h": 14 - }, - "frame": { - "x": 94, - "y": 578, - "w": 14, - "h": 14 - } - }, - { - "filename": "854_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 14 - }, - "frame": { - "x": 93, - "y": 592, - "w": 17, - "h": 14 - } - }, - { - "filename": "872_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 14 - }, - "frame": { - "x": 110, - "y": 582, - "w": 17, - "h": 14 - } - }, - { - "filename": "872_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 14 - }, - "frame": { - "x": 110, - "y": 596, - "w": 17, - "h": 14 - } - }, - { - "filename": "872_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 14 - }, - "frame": { - "x": 93, - "y": 606, - "w": 17, - "h": 14 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:e57165b71bf3e3ae5c42c992a485f65c:793bc46ac44791f8e836adaa13efdcd3:ec5f05e7f30cd98f74db0c2326109fd3$" - } -} +{ "frames": { + "4052_2": { + "frame": { "x": 85, "y": 209, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4052_3": { + "frame": { "x": 106, "y": 210, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4077_2": { + "frame": { "x": 203, "y": 112, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4077_3": { + "frame": { "x": 48, "y": 112, "w": 24, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 24, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4078_2": { + "frame": { "x": 230, "y": 133, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4078_3": { + "frame": { "x": 203, "y": 133, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4079_2": { + "frame": { "x": 79, "y": 250, "w": 26, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 26, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4079_3": { + "frame": { "x": 351, "y": 250, "w": 26, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 8, "w": 26, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4080_1": { + "frame": { "x": 352, "y": 161, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4080_2": { + "frame": { "x": 23, "y": 161, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4080_3": { + "frame": { "x": 328, "y": 160, "w": 24, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4144_2": { + "frame": { "x": 146, "y": 230, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4144_3": { + "frame": { "x": 85, "y": 231, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4145_2": { + "frame": { "x": 228, "y": 110, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4145_3": { + "frame": { "x": 97, "y": 89, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4146_2": { + "frame": { "x": 240, "y": 200, "w": 28, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4146_3": { + "frame": { "x": 212, "y": 200, "w": 28, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 6, "w": 28, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4199_1": { + "frame": { "x": 360, "y": 30, "w": 20, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 20, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4199_2": { + "frame": { "x": 96, "y": 182, "w": 20, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 20, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4199_3": { + "frame": { "x": 192, "y": 179, "w": 20, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 20, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4222_2": { + "frame": { "x": 309, "y": 228, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4222_3": { + "frame": { "x": 330, "y": 228, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4263_2": { + "frame": { "x": 216, "y": 258, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4263_3": { + "frame": { "x": 304, "y": 265, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4264_2": { + "frame": { "x": 287, "y": 210, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4264_3": { + "frame": { "x": 160, "y": 210, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4562_2": { + "frame": { "x": 76, "y": 264, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "4562_3": { + "frame": { "x": 351, "y": 264, "w": 22, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 22, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6100_2": { + "frame": { "x": 168, "y": 230, "w": 14, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 14, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6100_3": { + "frame": { "x": 49, "y": 277, "w": 14, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 14, "w": 14, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6101_2": { + "frame": { "x": 312, "y": 187, "w": 16, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 16, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6101_3": { + "frame": { "x": 266, "y": 271, "w": 16, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 16, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6215_2": { + "frame": { "x": 182, "y": 251, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6215_3": { + "frame": { "x": 126, "y": 250, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6549_2": { + "frame": { "x": 288, "y": 249, "w": 16, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 16, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6549_3": { + "frame": { "x": 286, "y": 58, "w": 16, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 5, "w": 16, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6570_2": { + "frame": { "x": 146, "y": 249, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6570_3": { + "frame": { "x": 333, "y": 248, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 6, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6571_2": { + "frame": { "x": 193, "y": 156, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6571_3": { + "frame": { "x": 23, "y": 138, "w": 25, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 25, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6705_2": { + "frame": { "x": 125, "y": 89, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6705_3": { + "frame": { "x": 34, "y": 271, "w": 15, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 6, "w": 15, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6706_2": { + "frame": { "x": 234, "y": 85, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6706_3": { + "frame": { "x": 260, "y": 85, "w": 26, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 26, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6713_2": { + "frame": { "x": 257, "y": 133, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "6713_3": { + "frame": { "x": 48, "y": 134, "w": 27, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 5, "w": 27, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "816_2": { + "frame": { "x": 0, "y": 188, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "816_3": { + "frame": { "x": 290, "y": 187, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "817_2": { + "frame": { "x": 308, "y": 136, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "817_3": { + "frame": { "x": 332, "y": 136, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "818-gigantamax_2": { + "frame": { "x": 214, "y": 28, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "818-gigantamax_3": { + "frame": { "x": 348, "y": 0, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "818_2": { + "frame": { "x": 75, "y": 134, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "818_3": { + "frame": { "x": 123, "y": 135, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "821_2": { + "frame": { "x": 139, "y": 271, "w": 19, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 19, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "821_3": { + "frame": { "x": 158, "y": 271, "w": 19, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 7, "w": 19, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "822_2": { + "frame": { "x": 0, "y": 231, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "822_3": { + "frame": { "x": 287, "y": 230, "w": 22, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "823-gigantamax_2": { + "frame": { "x": 302, "y": 28, "w": 32, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 32, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "823-gigantamax_3": { + "frame": { "x": 0, "y": 30, "w": 32, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 32, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "823_2": { + "frame": { "x": 140, "y": 87, "w": 27, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 27, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "823_3": { + "frame": { "x": 201, "y": 88, "w": 27, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 27, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "829_2": { + "frame": { "x": 270, "y": 231, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "829_3": { + "frame": { "x": 122, "y": 271, "w": 17, "h": 18 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 6, "w": 17, "h": 18 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "830_2": { + "frame": { "x": 42, "y": 226, "w": 19, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "830_3": { + "frame": { "x": 233, "y": 218, "w": 19, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "835_2": { + "frame": { "x": 211, "y": 218, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "835_3": { + "frame": { "x": 0, "y": 211, "w": 22, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "836_2": { + "frame": { "x": 189, "y": 206, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "836_3": { + "frame": { "x": 138, "y": 205, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "850_2": { + "frame": { "x": 194, "y": 276, "w": 21, "h": 10 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 10 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "850_3": { + "frame": { "x": 233, "y": 275, "w": 21, "h": 10 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 10, "w": 21, "h": 10 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "851_2": { + "frame": { "x": 113, "y": 0, "w": 37, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 37, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "851_3": { + "frame": { "x": 76, "y": 0, "w": 37, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 37, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "854_2": { + "frame": { "x": 98, "y": 274, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "854_3": { + "frame": { "x": 177, "y": 272, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "855_2": { + "frame": { "x": 116, "y": 187, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "855_3": { + "frame": { "x": 167, "y": 187, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "856_2": { + "frame": { "x": 127, "y": 227, "w": 19, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "856_3": { + "frame": { "x": 182, "y": 228, "w": 19, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "857_2": { + "frame": { "x": 312, "y": 206, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "857_3": { + "frame": { "x": 44, "y": 204, "w": 22, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 4, "w": 22, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "858-gigantamax_2": { + "frame": { "x": 273, "y": 28, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "858-gigantamax_3": { + "frame": { "x": 244, "y": 28, "w": 29, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 29, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "858_2": { + "frame": { "x": 47, "y": 179, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "858_3": { + "frame": { "x": 74, "y": 161, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "859_2": { + "frame": { "x": 326, "y": 270, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "859_3": { + "frame": { "x": 0, "y": 271, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "860_2": { + "frame": { "x": 22, "y": 184, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "860_3": { + "frame": { "x": 69, "y": 186, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "861-gigantamax_2": { + "frame": { "x": 0, "y": 57, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "861-gigantamax_3": { + "frame": { "x": 302, "y": 55, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "861_2": { + "frame": { "x": 286, "y": 85, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "861_3": { + "frame": { "x": 72, "y": 83, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "863_2": { + "frame": { "x": 22, "y": 207, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "863_3": { + "frame": { "x": 360, "y": 112, "w": 20, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 20, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "864_2": { + "frame": { "x": 94, "y": 30, "w": 30, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 30, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "864_3": { + "frame": { "x": 151, "y": 30, "w": 30, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 30, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "867_2": { + "frame": { "x": 32, "y": 30, "w": 31, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 31, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "867_3": { + "frame": { "x": 63, "y": 30, "w": 31, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 1, "w": 31, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "872_1": { + "frame": { "x": 282, "y": 272, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "872_2": { + "frame": { "x": 216, "y": 274, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "872_3": { + "frame": { "x": 17, "y": 274, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "873_1": { + "frame": { "x": 243, "y": 178, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "873_2": { + "frame": { "x": 218, "y": 178, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "873_3": { + "frame": { "x": 270, "y": 162, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "876-female_2": { + "frame": { "x": 350, "y": 184, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "876-female_3": { + "frame": { "x": 268, "y": 184, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "876_2": { + "frame": { "x": 268, "y": 207, "w": 19, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "876_3": { + "frame": { "x": 66, "y": 209, "w": 19, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "877-hangry_1": { + "frame": { "x": 105, "y": 253, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "877-hangry_2": { + "frame": { "x": 249, "y": 254, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "877-hangry_3": { + "frame": { "x": 199, "y": 255, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "877_1": { + "frame": { "x": 59, "y": 256, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "877_2": { + "frame": { "x": 0, "y": 250, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "877_3": { + "frame": { "x": 17, "y": 253, "w": 17, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 17, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "880_2": { + "frame": { "x": 244, "y": 156, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "880_3": { + "frame": { "x": 218, "y": 156, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "881_2": { + "frame": { "x": 252, "y": 231, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 3, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "881_3": { + "frame": { "x": 61, "y": 233, "w": 18, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 3, "w": 18, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "882_2": { + "frame": { "x": 328, "y": 183, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "882_3": { + "frame": { "x": 145, "y": 182, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 3, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "883_2": { + "frame": { "x": 357, "y": 207, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "883_3": { + "frame": { "x": 334, "y": 207, "w": 23, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 4, "w": 23, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "884-gigantamax_2": { + "frame": { "x": 124, "y": 30, "w": 27, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 27, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "884-gigantamax_3": { + "frame": { "x": 181, "y": 30, "w": 27, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 27, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "884_2": { + "frame": { "x": 123, "y": 162, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "884_3": { + "frame": { "x": 0, "y": 163, "w": 22, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 22, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "885_1": { + "frame": { "x": 201, "y": 238, "w": 24, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 24, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "885_2": { + "frame": { "x": 225, "y": 241, "w": 24, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 24, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "885_3": { + "frame": { "x": 309, "y": 248, "w": 24, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 6, "w": 24, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "886_1": { + "frame": { "x": 308, "y": 112, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "886_2": { + "frame": { "x": 125, "y": 111, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "886_3": { + "frame": { "x": 177, "y": 112, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "887_1": { + "frame": { "x": 86, "y": 57, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "887_2": { + "frame": { "x": 56, "y": 57, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "887_3": { + "frame": { "x": 26, "y": 57, "w": 30, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 2, "w": 30, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "888-crowned_2": { + "frame": { "x": 182, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "888-crowned_3": { + "frame": { "x": 150, "y": 0, "w": 32, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "888_2": { + "frame": { "x": 167, "y": 89, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "888_3": { + "frame": { "x": 311, "y": 89, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "889-crowned_2": { + "frame": { "x": 214, "y": 0, "w": 34, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 34, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "889-crowned_3": { + "frame": { "x": 248, "y": 0, "w": 34, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 34, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "889_2": { + "frame": { "x": 260, "y": 58, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "889_3": { + "frame": { "x": 234, "y": 58, "w": 26, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 1, "w": 26, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "890-eternamax_2": { + "frame": { "x": 0, "y": 0, "w": 38, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 38, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "890-eternamax_3": { + "frame": { "x": 38, "y": 0, "w": 38, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 1, "y": 0, "w": 38, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "890_2": { + "frame": { "x": 282, "y": 0, "w": 33, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 33, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "890_3": { + "frame": { "x": 315, "y": 0, "w": 33, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 3, "y": 1, "w": 33, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "891_1": { + "frame": { "x": 164, "y": 249, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "891_2": { + "frame": { "x": 270, "y": 249, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "891_3": { + "frame": { "x": 41, "y": 249, "w": 18, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 4, "w": 18, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-gigantamax-rapid_1": { + "frame": { "x": 284, "y": 111, "w": 24, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 24, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-gigantamax-rapid_2": { + "frame": { "x": 0, "y": 112, "w": 24, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 24, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-gigantamax-rapid_3": { + "frame": { "x": 24, "y": 112, "w": 24, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 24, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-gigantamax-single_1": { + "frame": { "x": 26, "y": 83, "w": 23, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 23, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-gigantamax-single_2": { + "frame": { "x": 49, "y": 83, "w": 23, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 23, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-gigantamax-single_3": { + "frame": { "x": 352, "y": 60, "w": 23, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 23, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-rapid-strike_1": { + "frame": { "x": 48, "y": 157, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-rapid-strike_2": { + "frame": { "x": 97, "y": 160, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892-rapid-strike_3": { + "frame": { "x": 145, "y": 160, "w": 26, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 4, "w": 26, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892_1": { + "frame": { "x": 356, "y": 136, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892_2": { + "frame": { "x": 284, "y": 137, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "892_3": { + "frame": { "x": 0, "y": 138, "w": 23, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 2, "w": 23, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "896_1": { + "frame": { "x": 97, "y": 136, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "896_2": { + "frame": { "x": 145, "y": 136, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "896_3": { + "frame": { "x": 169, "y": 136, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "897_1": { + "frame": { "x": 151, "y": 112, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "897_2": { + "frame": { "x": 97, "y": 112, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "897_3": { + "frame": { "x": 334, "y": 112, "w": 26, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 26, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898-ice_1": { + "frame": { "x": 328, "y": 60, "w": 24, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 24, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898-ice_2": { + "frame": { "x": 116, "y": 60, "w": 24, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 24, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898-ice_3": { + "frame": { "x": 177, "y": 60, "w": 24, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 24, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898-shadow_1": { + "frame": { "x": 151, "y": 57, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898-shadow_2": { + "frame": { "x": 208, "y": 58, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898-shadow_3": { + "frame": { "x": 334, "y": 30, "w": 26, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 0, "w": 26, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898_1": { + "frame": { "x": 351, "y": 228, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898_2": { + "frame": { "x": 22, "y": 231, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "898_3": { + "frame": { "x": 107, "y": 231, "w": 19, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 19, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "900_2": { + "frame": { "x": 0, "y": 87, "w": 25, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 25, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "900_3": { + "frame": { "x": 72, "y": 109, "w": 25, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 3, "w": 25, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "901_2": { + "frame": { "x": 256, "y": 110, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "901_3": { + "frame": { "x": 339, "y": 89, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 5, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "903_2": { + "frame": { "x": 307, "y": 160, "w": 21, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 21, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "903_3": { + "frame": { "x": 171, "y": 160, "w": 21, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 21, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_8v.png", + "format": "RGBA8888", + "size": { "w": 380, "h": 293 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_8v.png b/public/images/pokemon_icons_8v.png index 3b2ef39de62..1968bfe6214 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 5e4e786d50f..83a47f101fa 100644 --- a/public/images/pokemon_icons_9v.json +++ b/public/images/pokemon_icons_9v.json @@ -1,2666 +1,1047 @@ -{ - "textures": [ - { - "image": "pokemon_icons_9v.png", - "format": "RGBA8888", - "size": { - "w": 126, - "h": 580 - }, - "scale": 1, - "frames": [ - { - "filename": "959_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 0, - "y": 0, - "w": 31, - "h": 30 - } - }, - { - "filename": "959_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 0, - "y": 30, - "w": 31, - "h": 30 - } - }, - { - "filename": "959_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 31, - "y": 0, - "w": 31, - "h": 30 - } - }, - { - "filename": "1007-apex-build_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 29 - }, - "frame": { - "x": 62, - "y": 0, - "w": 32, - "h": 29 - } - }, - { - "filename": "1007-apex-build_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 0, - "w": 32, - "h": 29 - }, - "frame": { - "x": 94, - "y": 0, - "w": 32, - "h": 29 - } - }, - { - "filename": "1018_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 0, - "y": 60, - "w": 31, - "h": 30 - } - }, - { - "filename": "1018_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 31, - "h": 30 - }, - "frame": { - "x": 31, - "y": 30, - "w": 31, - "h": 30 - } - }, - { - "filename": "1001_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 62, - "y": 29, - "w": 30, - "h": 30 - } - }, - { - "filename": "1001_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 0, - "y": 90, - "w": 30, - "h": 30 - } - }, - { - "filename": "1008-ultimate-mode_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 31, - "y": 60, - "w": 30, - "h": 30 - } - }, - { - "filename": "1008-ultimate-mode_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 92, - "y": 29, - "w": 30, - "h": 30 - } - }, - { - "filename": "1008-ultimate-mode_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 30, - "h": 30 - }, - "frame": { - "x": 0, - "y": 120, - "w": 30, - "h": 30 - } - }, - { - "filename": "8901_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 28 - }, - "frame": { - "x": 30, - "y": 90, - "w": 30, - "h": 28 - } - }, - { - "filename": "8901_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 28 - }, - "frame": { - "x": 0, - "y": 150, - "w": 30, - "h": 28 - } - }, - { - "filename": "8901_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 1, - "w": 30, - "h": 28 - }, - "frame": { - "x": 30, - "y": 118, - "w": 30, - "h": 28 - } - }, - { - "filename": "934_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 0, - "y": 178, - "w": 27, - "h": 30 - } - }, - { - "filename": "934_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 0, - "w": 27, - "h": 30 - }, - "frame": { - "x": 30, - "y": 146, - "w": 27, - "h": 30 - } - }, - { - "filename": "995_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 27, - "h": 29 - }, - "frame": { - "x": 0, - "y": 208, - "w": 27, - "h": 29 - } - }, - { - "filename": "995_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 27, - "h": 29 - }, - "frame": { - "x": 0, - "y": 237, - "w": 27, - "h": 29 - } - }, - { - "filename": "937_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 28 - }, - "frame": { - "x": 0, - "y": 266, - "w": 29, - "h": 28 - } - }, - { - "filename": "937_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 28 - }, - "frame": { - "x": 0, - "y": 294, - "w": 29, - "h": 28 - } - }, - { - "filename": "937_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 28 - }, - "frame": { - "x": 0, - "y": 322, - "w": 29, - "h": 28 - } - }, - { - "filename": "937_9", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 0, - "w": 29, - "h": 28 - }, - "frame": { - "x": 0, - "y": 350, - "w": 29, - "h": 28 - } - }, - { - "filename": "994_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 27, - "h": 28 - }, - "frame": { - "x": 0, - "y": 378, - "w": 27, - "h": 28 - } - }, - { - "filename": "994_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 27, - "h": 28 - }, - "frame": { - "x": 0, - "y": 406, - "w": 27, - "h": 28 - } - }, - { - "filename": "988_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 26, - "h": 28 - }, - "frame": { - "x": 0, - "y": 434, - "w": 26, - "h": 28 - } - }, - { - "filename": "988_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 26, - "h": 28 - }, - "frame": { - "x": 0, - "y": 462, - "w": 26, - "h": 28 - } - }, - { - "filename": "982-three-segment_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 25, - "h": 28 - }, - "frame": { - "x": 0, - "y": 490, - "w": 25, - "h": 28 - } - }, - { - "filename": "982-three-segment_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 1, - "w": 25, - "h": 28 - }, - "frame": { - "x": 0, - "y": 518, - "w": 25, - "h": 28 - } - }, - { - "filename": "968_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 28 - }, - "frame": { - "x": 0, - "y": 546, - "w": 23, - "h": 28 - } - }, - { - "filename": "975_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 32, - "h": 21 - }, - "frame": { - "x": 62, - "y": 59, - "w": 32, - "h": 21 - } - }, - { - "filename": "975_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 4, - "y": 7, - "w": 32, - "h": 21 - }, - "frame": { - "x": 94, - "y": 59, - "w": 32, - "h": 21 - } - }, - { - "filename": "993_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 30, - "h": 25 - }, - "frame": { - "x": 61, - "y": 80, - "w": 30, - "h": 25 - } - }, - { - "filename": "993_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 2, - "w": 30, - "h": 25 - }, - "frame": { - "x": 91, - "y": 80, - "w": 30, - "h": 25 - } - }, - { - "filename": "1022_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 60, - "y": 105, - "w": 29, - "h": 25 - } - }, - { - "filename": "1022_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 29, - "h": 25 - }, - "frame": { - "x": 89, - "y": 105, - "w": 29, - "h": 25 - } - }, - { - "filename": "924_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 29, - "h": 20 - }, - "frame": { - "x": 60, - "y": 130, - "w": 29, - "h": 20 - } - }, - { - "filename": "979_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 27, - "h": 26 - }, - "frame": { - "x": 57, - "y": 150, - "w": 27, - "h": 26 - } - }, - { - "filename": "924_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 29, - "h": 20 - }, - "frame": { - "x": 89, - "y": 130, - "w": 29, - "h": 20 - } - }, - { - "filename": "979_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 27, - "h": 26 - }, - "frame": { - "x": 84, - "y": 150, - "w": 27, - "h": 26 - } - }, - { - "filename": "973_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 2, - "w": 15, - "h": 26 - }, - "frame": { - "x": 111, - "y": 150, - "w": 15, - "h": 26 - } - }, - { - "filename": "999_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 22, - "h": 29 - }, - "frame": { - "x": 27, - "y": 178, - "w": 22, - "h": 29 - } - }, - { - "filename": "979_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 27, - "h": 26 - }, - "frame": { - "x": 49, - "y": 176, - "w": 27, - "h": 26 - } - }, - { - "filename": "911_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 76, - "y": 176, - "w": 28, - "h": 23 - } - }, - { - "filename": "999_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 22, - "h": 29 - }, - "frame": { - "x": 104, - "y": 176, - "w": 22, - "h": 29 - } - }, - { - "filename": "999_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 0, - "w": 22, - "h": 29 - }, - "frame": { - "x": 27, - "y": 207, - "w": 22, - "h": 29 - } - }, - { - "filename": "968_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 0, - "w": 23, - "h": 28 - }, - "frame": { - "x": 49, - "y": 202, - "w": 23, - "h": 28 - } - }, - { - "filename": "1000_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 27, - "y": 236, - "w": 22, - "h": 27 - } - }, - { - "filename": "998_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 49, - "y": 230, - "w": 25, - "h": 26 - } - }, - { - "filename": "936_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 0, - "w": 20, - "h": 28 - }, - "frame": { - "x": 29, - "y": 263, - "w": 20, - "h": 28 - } - }, - { - "filename": "998_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 2, - "w": 25, - "h": 26 - }, - "frame": { - "x": 49, - "y": 256, - "w": 25, - "h": 26 - } - }, - { - "filename": "936_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 0, - "w": 20, - "h": 28 - }, - "frame": { - "x": 29, - "y": 291, - "w": 20, - "h": 28 - } - }, - { - "filename": "1000_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 49, - "y": 282, - "w": 22, - "h": 27 - } - }, - { - "filename": "936_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 0, - "w": 20, - "h": 28 - }, - "frame": { - "x": 29, - "y": 319, - "w": 20, - "h": 28 - } - }, - { - "filename": "1000_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 1, - "w": 22, - "h": 27 - }, - "frame": { - "x": 49, - "y": 309, - "w": 22, - "h": 27 - } - }, - { - "filename": "1023_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 20, - "h": 28 - }, - "frame": { - "x": 29, - "y": 347, - "w": 20, - "h": 28 - } - }, - { - "filename": "982_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 22, - "h": 26 - }, - "frame": { - "x": 49, - "y": 336, - "w": 22, - "h": 26 - } - }, - { - "filename": "911_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 6, - "y": 3, - "w": 28, - "h": 23 - }, - "frame": { - "x": 76, - "y": 199, - "w": 28, - "h": 23 - } - }, - { - "filename": "982_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 2, - "w": 22, - "h": 26 - }, - "frame": { - "x": 104, - "y": 205, - "w": 22, - "h": 26 - } - }, - { - "filename": "925-four_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 74, - "y": 222, - "w": 29, - "h": 22 - } - }, - { - "filename": "925-four_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 74, - "y": 244, - "w": 29, - "h": 22 - } - }, - { - "filename": "1023_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 1, - "w": 20, - "h": 28 - }, - "frame": { - "x": 103, - "y": 231, - "w": 20, - "h": 28 - } - }, - { - "filename": "924_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 29, - "h": 20 - }, - "frame": { - "x": 74, - "y": 266, - "w": 29, - "h": 20 - } - }, - { - "filename": "925-four_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 6, - "w": 29, - "h": 22 - }, - "frame": { - "x": 71, - "y": 286, - "w": 29, - "h": 22 - } - }, - { - "filename": "925-three_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 29, - "h": 20 - }, - "frame": { - "x": 71, - "y": 308, - "w": 29, - "h": 20 - } - }, - { - "filename": "925-three_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 29, - "h": 20 - }, - "frame": { - "x": 71, - "y": 328, - "w": 29, - "h": 20 - } - }, - { - "filename": "949_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 20, - "h": 25 - }, - "frame": { - "x": 103, - "y": 259, - "w": 20, - "h": 25 - } - }, - { - "filename": "925-three_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 5, - "y": 8, - "w": 29, - "h": 20 - }, - "frame": { - "x": 71, - "y": 348, - "w": 29, - "h": 20 - } - }, - { - "filename": "920_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 49, - "y": 362, - "w": 22, - "h": 23 - } - }, - { - "filename": "933_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 71, - "y": 368, - "w": 25, - "h": 21 - } - }, - { - "filename": "949_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 20, - "h": 25 - }, - "frame": { - "x": 29, - "y": 375, - "w": 20, - "h": 25 - } - }, - { - "filename": "987_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 27, - "y": 400, - "w": 24, - "h": 24 - } - }, - { - "filename": "974_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 13, - "w": 22, - "h": 15 - }, - "frame": { - "x": 49, - "y": 385, - "w": 22, - "h": 15 - } - }, - { - "filename": "987_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 51, - "y": 400, - "w": 24, - "h": 24 - } - }, - { - "filename": "933_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 7, - "w": 25, - "h": 21 - }, - "frame": { - "x": 27, - "y": 424, - "w": 25, - "h": 21 - } - }, - { - "filename": "987_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 24, - "h": 24 - }, - "frame": { - "x": 26, - "y": 445, - "w": 24, - "h": 24 - } - }, - { - "filename": "952_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 26, - "y": 469, - "w": 25, - "h": 22 - } - }, - { - "filename": "952_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 25, - "h": 22 - }, - "frame": { - "x": 25, - "y": 491, - "w": 25, - "h": 22 - } - }, - { - "filename": "920_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 25, - "y": 513, - "w": 22, - "h": 23 - } - }, - { - "filename": "920_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 52, - "y": 424, - "w": 22, - "h": 23 - } - }, - { - "filename": "910_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 21, - "h": 21 - }, - "frame": { - "x": 50, - "y": 447, - "w": 21, - "h": 21 - } - }, - { - "filename": "909_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 51, - "y": 468, - "w": 21, - "h": 23 - } - }, - { - "filename": "909_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 50, - "y": 491, - "w": 21, - "h": 23 - } - }, - { - "filename": "910_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 4, - "w": 21, - "h": 21 - }, - "frame": { - "x": 47, - "y": 514, - "w": 21, - "h": 21 - } - }, - { - "filename": "962_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 25 - }, - "frame": { - "x": 75, - "y": 389, - "w": 19, - "h": 25 - } - }, - { - "filename": "974_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 13, - "w": 22, - "h": 15 - }, - "frame": { - "x": 25, - "y": 536, - "w": 22, - "h": 15 - } - }, - { - "filename": "962_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 25 - }, - "frame": { - "x": 23, - "y": 551, - "w": 19, - "h": 25 - } - }, - { - "filename": "997_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 47, - "y": 535, - "w": 21, - "h": 19 - } - }, - { - "filename": "973_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 2, - "w": 15, - "h": 26 - }, - "frame": { - "x": 42, - "y": 554, - "w": 15, - "h": 26 - } - }, - { - "filename": "973_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 2, - "w": 15, - "h": 26 - }, - "frame": { - "x": 57, - "y": 554, - "w": 15, - "h": 26 - } - }, - { - "filename": "962_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 3, - "w": 19, - "h": 25 - }, - "frame": { - "x": 75, - "y": 414, - "w": 19, - "h": 25 - } - }, - { - "filename": "967_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 74, - "y": 439, - "w": 20, - "h": 19 - } - }, - { - "filename": "1004_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 72, - "y": 458, - "w": 21, - "h": 20 - } - }, - { - "filename": "997_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 9, - "w": 21, - "h": 19 - }, - "frame": { - "x": 72, - "y": 478, - "w": 21, - "h": 19 - } - }, - { - "filename": "1004_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 9, - "y": 8, - "w": 21, - "h": 20 - }, - "frame": { - "x": 71, - "y": 497, - "w": 21, - "h": 20 - } - }, - { - "filename": "967_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 9, - "w": 20, - "h": 19 - }, - "frame": { - "x": 68, - "y": 517, - "w": 20, - "h": 19 - } - }, - { - "filename": "970_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 68, - "y": 536, - "w": 20, - "h": 16 - } - }, - { - "filename": "948_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 16, - "h": 21 - }, - "frame": { - "x": 72, - "y": 552, - "w": 16, - "h": 21 - } - }, - { - "filename": "935_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 13, - "h": 21 - }, - "frame": { - "x": 96, - "y": 368, - "w": 13, - "h": 21 - } - }, - { - "filename": "948_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 7, - "w": 16, - "h": 21 - }, - "frame": { - "x": 94, - "y": 389, - "w": 16, - "h": 21 - } - }, - { - "filename": "951_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 20 - }, - "frame": { - "x": 94, - "y": 410, - "w": 16, - "h": 20 - } - }, - { - "filename": "951_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 8, - "w": 16, - "h": 20 - }, - "frame": { - "x": 94, - "y": 430, - "w": 16, - "h": 20 - } - }, - { - "filename": "958_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 109, - "y": 284, - "w": 17, - "h": 20 - } - }, - { - "filename": "958_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 109, - "y": 304, - "w": 17, - "h": 20 - } - }, - { - "filename": "958_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 8, - "w": 17, - "h": 20 - }, - "frame": { - "x": 109, - "y": 324, - "w": 17, - "h": 20 - } - }, - { - "filename": "957_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 110, - "y": 344, - "w": 16, - "h": 17 - } - }, - { - "filename": "957_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 110, - "y": 361, - "w": 16, - "h": 17 - } - }, - { - "filename": "957_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 11, - "w": 16, - "h": 17 - }, - "frame": { - "x": 110, - "y": 378, - "w": 16, - "h": 17 - } - }, - { - "filename": "919_1", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 13, - "w": 16, - "h": 15 - }, - "frame": { - "x": 110, - "y": 395, - "w": 16, - "h": 15 - } - }, - { - "filename": "919_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 13, - "w": 16, - "h": 15 - }, - "frame": { - "x": 110, - "y": 410, - "w": 16, - "h": 15 - } - }, - { - "filename": "919_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 13, - "w": 16, - "h": 15 - }, - "frame": { - "x": 110, - "y": 425, - "w": 16, - "h": 15 - } - }, - { - "filename": "935_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 13, - "h": 21 - }, - "frame": { - "x": 88, - "y": 517, - "w": 13, - "h": 21 - } - }, - { - "filename": "935_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 13, - "y": 7, - "w": 13, - "h": 21 - }, - "frame": { - "x": 88, - "y": 538, - "w": 13, - "h": 21 - } - }, - { - "filename": "932_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 88, - "y": 559, - "w": 18, - "h": 19 - } - }, - { - "filename": "978-curly_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 110, - "y": 440, - "w": 15, - "h": 14 - } - }, - { - "filename": "970_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 10, - "y": 12, - "w": 20, - "h": 16 - }, - "frame": { - "x": 106, - "y": 454, - "w": 20, - "h": 16 - } - }, - { - "filename": "932_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 9, - "w": 18, - "h": 19 - }, - "frame": { - "x": 93, - "y": 470, - "w": 18, - "h": 19 - } - }, - { - "filename": "996_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 15, - "h": 16 - }, - "frame": { - "x": 111, - "y": 470, - "w": 15, - "h": 16 - } - }, - { - "filename": "996_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 12, - "w": 15, - "h": 16 - }, - "frame": { - "x": 111, - "y": 486, - "w": 15, - "h": 16 - } - }, - { - "filename": "969_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 16, - "w": 18, - "h": 12 - }, - "frame": { - "x": 93, - "y": 489, - "w": 18, - "h": 12 - } - }, - { - "filename": "969_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 11, - "y": 16, - "w": 18, - "h": 12 - }, - "frame": { - "x": 92, - "y": 501, - "w": 18, - "h": 12 - } - }, - { - "filename": "978-curly_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 110, - "y": 502, - "w": 15, - "h": 14 - } - }, - { - "filename": "978-droopy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 101, - "y": 516, - "w": 15, - "h": 14 - } - }, - { - "filename": "978-droopy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 101, - "y": 530, - "w": 15, - "h": 14 - } - }, - { - "filename": "978-stretchy_2", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 101, - "y": 544, - "w": 15, - "h": 14 - } - }, - { - "filename": "978-stretchy_3", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 40, - "h": 30 - }, - "spriteSourceSize": { - "x": 12, - "y": 14, - "w": 15, - "h": 14 - }, - "frame": { - "x": 106, - "y": 558, - "w": 15, - "h": 14 - } - } - ] - } - ], - "meta": { - "app": "https://www.codeandweb.com/texturepacker", - "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:b15ef57152451054d5ae039df52e3d03:6bdd73a990ad7f8fbaec172a42e5dcb6:3ec5c0bc286c296cfb7fa30a8b06f3da$" - } -} +{ "frames": { + "1000_1": { + "frame": { "x": 93, "y": 139, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1000_2": { + "frame": { "x": 170, "y": 135, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1000_3": { + "frame": { "x": 192, "y": 135, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1001_2": { + "frame": { "x": 249, "y": 0, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1001_3": { + "frame": { "x": 279, "y": 0, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1003_2": { + "frame": { "x": 27, "y": 58, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1003_3": { + "frame": { "x": 55, "y": 58, "w": 28, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 28, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1004_2": { + "frame": { "x": 249, "y": 207, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1004_3": { + "frame": { "x": 204, "y": 206, "w": 21, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 8, "w": 21, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1006_2": { + "frame": { "x": 44, "y": 140, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1006_3": { + "frame": { "x": 22, "y": 139, "w": 22, "h": 27 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 22, "h": 27 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1007-apex-build_2": { + "frame": { "x": 155, "y": 0, "w": 32, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1007-apex-build_3": { + "frame": { "x": 187, "y": 0, "w": 32, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 32, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1008-ultimate-mode_1": { + "frame": { "x": 185, "y": 29, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1008-ultimate-mode_2": { + "frame": { "x": 155, "y": 29, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1008-ultimate-mode_3": { + "frame": { "x": 219, "y": 0, "w": 30, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 30, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1010_2": { + "frame": { "x": 271, "y": 179, "w": 21, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 21, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1010_3": { + "frame": { "x": 162, "y": 182, "w": 21, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 2, "w": 21, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1018_2": { + "frame": { "x": 0, "y": 0, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1018_3": { + "frame": { "x": 31, "y": 0, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1022_2": { + "frame": { "x": 27, "y": 86, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1022_3": { + "frame": { "x": 163, "y": 84, "w": 29, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 29, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1023_2": { + "frame": { "x": 300, "y": 30, "w": 20, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 20, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "1023_3": { + "frame": { "x": 46, "y": 167, "w": 20, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 1, "w": 20, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "8901_1": { + "frame": { "x": 30, "y": 30, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "8901_2": { + "frame": { "x": 60, "y": 30, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "8901_3": { + "frame": { "x": 0, "y": 30, "w": 30, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 1, "w": 30, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "909_2": { + "frame": { "x": 42, "y": 195, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "909_3": { + "frame": { "x": 63, "y": 196, "w": 21, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 5, "w": 21, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "910_2": { + "frame": { "x": 271, "y": 205, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "910_3": { + "frame": { "x": 292, "y": 204, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "911_2": { + "frame": { "x": 131, "y": 112, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "911_3": { + "frame": { "x": 188, "y": 112, "w": 28, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 3, "w": 28, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "912_2": { + "frame": { "x": 36, "y": 244, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "912_3": { + "frame": { "x": 178, "y": 244, "w": 15, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 9, "w": 15, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "913_2": { + "frame": { "x": 84, "y": 217, "w": 17, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 17, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "913_3": { + "frame": { "x": 197, "y": 59, "w": 17, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 5, "w": 17, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "914_2": { + "frame": { "x": 122, "y": 135, "w": 24, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "914_3": { + "frame": { "x": 146, "y": 135, "w": 24, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 3, "w": 24, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "919_1": { + "frame": { "x": 0, "y": 253, "w": 16, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 13, "w": 16, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "919_2": { + "frame": { "x": 51, "y": 250, "w": 16, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 13, "w": 16, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "919_3": { + "frame": { "x": 95, "y": 247, "w": 16, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 13, "w": 16, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "920_1": { + "frame": { "x": 0, "y": 190, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "920_2": { + "frame": { "x": 208, "y": 183, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "920_3": { + "frame": { "x": 0, "y": 143, "w": 22, "h": 23 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 5, "w": 22, "h": 23 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "924_1": { + "frame": { "x": 237, "y": 152, "w": 29, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 29, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "924_2": { + "frame": { "x": 144, "y": 162, "w": 29, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 29, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "924_3": { + "frame": { "x": 266, "y": 159, "w": 29, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 29, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "925-four_1": { + "frame": { "x": 93, "y": 117, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "925-four_2": { + "frame": { "x": 245, "y": 130, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "925-four_3": { + "frame": { "x": 216, "y": 112, "w": 29, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 6, "w": 29, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "925-three_1": { + "frame": { "x": 115, "y": 160, "w": 29, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 29, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "925-three_2": { + "frame": { "x": 202, "y": 163, "w": 29, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 29, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "925-three_3": { + "frame": { "x": 173, "y": 162, "w": 29, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 8, "w": 29, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "932_2": { + "frame": { "x": 202, "y": 226, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "932_3": { + "frame": { "x": 292, "y": 225, "w": 18, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 9, "w": 18, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "933_2": { + "frame": { "x": 183, "y": 183, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "933_3": { + "frame": { "x": 292, "y": 183, "w": 25, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 7, "w": 25, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "934_2": { + "frame": { "x": 273, "y": 30, "w": 27, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 27, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "934_3": { + "frame": { "x": 0, "y": 58, "w": 27, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 0, "w": 27, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "935_1": { + "frame": { "x": 300, "y": 244, "w": 13, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 13, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "935_2": { + "frame": { "x": 287, "y": 244, "w": 13, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 13, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "935_3": { + "frame": { "x": 236, "y": 241, "w": 13, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 13, "y": 7, "w": 13, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "936_1": { + "frame": { "x": 251, "y": 179, "w": 20, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 20, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "936_2": { + "frame": { "x": 66, "y": 168, "w": 20, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 20, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "936_3": { + "frame": { "x": 231, "y": 172, "w": 20, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 0, "w": 20, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "937_1": { + "frame": { "x": 215, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "937_2": { + "frame": { "x": 244, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "937_3": { + "frame": { "x": 90, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "937_9": { + "frame": { "x": 119, "y": 30, "w": 29, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 5, "y": 0, "w": 29, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "940_2": { + "frame": { "x": 245, "y": 116, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 14, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "940_3": { + "frame": { "x": 153, "y": 254, "w": 17, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 14, "w": 17, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "941_2": { + "frame": { "x": 183, "y": 204, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "941_3": { + "frame": { "x": 125, "y": 204, "w": 21, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 7, "w": 21, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "948_2": { + "frame": { "x": 249, "y": 227, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "948_3": { + "frame": { "x": 0, "y": 232, "w": 16, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 7, "w": 16, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "949_2": { + "frame": { "x": 22, "y": 193, "w": 20, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 20, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "949_3": { + "frame": { "x": 86, "y": 192, "w": 20, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 20, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "951_2": { + "frame": { "x": 220, "y": 241, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "951_3": { + "frame": { "x": 162, "y": 234, "w": 16, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 8, "w": 16, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "952_2": { + "frame": { "x": 112, "y": 180, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "952_3": { + "frame": { "x": 137, "y": 182, "w": 25, "h": 22 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 6, "w": 25, "h": 22 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "953_2": { + "frame": { "x": 51, "y": 219, "w": 24, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 24, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "953_3": { + "frame": { "x": 225, "y": 225, "w": 24, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 12, "w": 24, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "954_2": { + "frame": { "x": 296, "y": 130, "w": 21, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 21, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "954_3": { + "frame": { "x": 216, "y": 134, "w": 21, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 21, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "957_1": { + "frame": { "x": 193, "y": 245, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "957_2": { + "frame": { "x": 301, "y": 113, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "957_3": { + "frame": { "x": 265, "y": 246, "w": 16, "h": 17 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 11, "w": 16, "h": 17 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "958_1": { + "frame": { "x": 270, "y": 226, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "958_2": { + "frame": { "x": 145, "y": 227, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "958_3": { + "frame": { "x": 101, "y": 227, "w": 17, "h": 20 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 8, "w": 17, "h": 20 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "959_1": { + "frame": { "x": 62, "y": 0, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "959_2": { + "frame": { "x": 93, "y": 0, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "959_3": { + "frame": { "x": 124, "y": 0, "w": 31, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 0, "w": 31, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "962_1": { + "frame": { "x": 301, "y": 88, "w": 19, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "962_2": { + "frame": { "x": 230, "y": 200, "w": 19, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "962_3": { + "frame": { "x": 106, "y": 202, "w": 19, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 3, "w": 19, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "967_2": { + "frame": { "x": 182, "y": 225, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "967_3": { + "frame": { "x": 125, "y": 225, "w": 20, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 9, "w": 20, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "968_2": { + "frame": { "x": 48, "y": 112, "w": 23, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 23, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "968_3": { + "frame": { "x": 25, "y": 111, "w": 23, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 23, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "969_2": { + "frame": { "x": 16, "y": 260, "w": 18, "h": 12 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 16, "w": 18, "h": 12 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "969_3": { + "frame": { "x": 67, "y": 255, "w": 18, "h": 12 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 11, "y": 16, "w": 18, "h": 12 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "970_2": { + "frame": { "x": 118, "y": 244, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "970_3": { + "frame": { "x": 16, "y": 244, "w": 20, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 12, "w": 20, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "973_1": { + "frame": { "x": 167, "y": 208, "w": 15, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 15, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "973_2": { + "frame": { "x": 21, "y": 218, "w": 15, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 15, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "973_3": { + "frame": { "x": 36, "y": 218, "w": 15, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 2, "w": 15, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "974_2": { + "frame": { "x": 73, "y": 240, "w": 22, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 13, "w": 22, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "974_3": { + "frame": { "x": 51, "y": 235, "w": 22, "h": 15 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 13, "w": 22, "h": 15 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "975_2": { + "frame": { "x": 269, "y": 109, "w": 32, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 7, "w": 32, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "975_3": { + "frame": { "x": 269, "y": 88, "w": 32, "h": 21 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 4, "y": 7, "w": 32, "h": 21 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "978-curly_2": { + "frame": { "x": 111, "y": 260, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "978-curly_3": { + "frame": { "x": 209, "y": 261, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "978-droopy_2": { + "frame": { "x": 85, "y": 262, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "978-droopy_3": { + "frame": { "x": 193, "y": 262, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "978-stretchy_2": { + "frame": { "x": 224, "y": 262, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "978-stretchy_3": { + "frame": { "x": 34, "y": 263, "w": 15, "h": 14 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 14, "w": 15, "h": 14 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "979_1": { + "frame": { "x": 56, "y": 86, "w": 27, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 27, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "979_2": { + "frame": { "x": 192, "y": 86, "w": 27, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 27, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "979_3": { + "frame": { "x": 219, "y": 86, "w": 27, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 27, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "981_2.png": { + "frame": { "x": 108, "y": 87, "w": 23, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 23, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "981_3.png": { + "frame": { "x": 246, "y": 86, "w": 23, "h": 30 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 23, "h": 30 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "982-three-segment_2": { + "frame": { "x": 83, "y": 87, "w": 25, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 25, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "982-three-segment_3": { + "frame": { "x": 295, "y": 60, "w": 25, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 25, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "982_2": { + "frame": { "x": 24, "y": 167, "w": 22, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 22, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "982_3": { + "frame": { "x": 90, "y": 166, "w": 22, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 2, "w": 22, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "987_1": { + "frame": { "x": 66, "y": 144, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "987_2": { + "frame": { "x": 295, "y": 159, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "987_3": { + "frame": { "x": 0, "y": 166, "w": 24, "h": 24 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 10, "y": 4, "w": 24, "h": 24 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "988_2": { + "frame": { "x": 137, "y": 84, "w": 26, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 26, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "988_3": { + "frame": { "x": 269, "y": 60, "w": 26, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 26, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "993_2": { + "frame": { "x": 167, "y": 59, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "993_3": { + "frame": { "x": 137, "y": 59, "w": 30, "h": 25 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 6, "y": 2, "w": 30, "h": 25 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "994_2": { + "frame": { "x": 242, "y": 58, "w": 27, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 27, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "994_3": { + "frame": { "x": 215, "y": 58, "w": 27, "h": 28 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 1, "w": 27, "h": 28 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "995_2": { + "frame": { "x": 110, "y": 58, "w": 27, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 27, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "995_3": { + "frame": { "x": 83, "y": 58, "w": 27, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 8, "y": 0, "w": 27, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "996_2": { + "frame": { "x": 138, "y": 247, "w": 15, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 15, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "996_3": { + "frame": { "x": 249, "y": 248, "w": 15, "h": 16 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 12, "y": 12, "w": 15, "h": 16 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "997_2": { + "frame": { "x": 146, "y": 208, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "997_3": { + "frame": { "x": 0, "y": 213, "w": 21, "h": 19 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 9, "w": 21, "h": 19 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "998_2": { + "frame": { "x": 163, "y": 109, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "998_3": { + "frame": { "x": 0, "y": 88, "w": 25, "h": 26 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 7, "y": 2, "w": 25, "h": 26 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "999_1": { + "frame": { "x": 274, "y": 130, "w": 22, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 22, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "999_2": { + "frame": { "x": 71, "y": 115, "w": 22, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 22, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + }, + "999_3": { + "frame": { "x": 0, "y": 114, "w": 22, "h": 29 }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { "x": 9, "y": 0, "w": 22, "h": 29 }, + "sourceSize": { "w": 40, "h": 30 } + } + }, + "meta": { + "app": "https://www.aseprite.org/", + "version": "1.3.7-dev", + "image": "pokemon_icons_9v.png", + "format": "RGBA8888", + "size": { "w": 320, "h": 277 }, + "scale": "1" + } +} diff --git a/public/images/pokemon_icons_9v.png b/public/images/pokemon_icons_9v.png index 71fd591b55a..5d0908d0590 100644 Binary files a/public/images/pokemon_icons_9v.png and b/public/images/pokemon_icons_9v.png differ diff --git a/src/battle-scene.ts b/src/battle-scene.ts index b2e5635b642..b72e79c866d 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -1,11 +1,10 @@ import Phaser from "phaser"; import UI from "./ui/ui"; -import { NextEncounterPhase, NewBiomeEncounterPhase, SelectBiomePhase, MessagePhase, TurnInitPhase, ReturnPhase, LevelCapPhase, ShowTrainerPhase, LoginPhase, MovePhase, TitlePhase, SwitchPhase, SummonPhase, ToggleDoublePositionPhase } from "./phases"; import Pokemon, { PlayerPokemon, EnemyPokemon } from "./field/pokemon"; import PokemonSpecies, { PokemonSpeciesFilter, allSpecies, getPokemonSpecies } from "./data/pokemon-species"; import { Constructor } from "#app/utils"; import * as Utils from "./utils"; -import { Modifier, ModifierBar, ConsumablePokemonModifier, ConsumableModifier, PokemonHpRestoreModifier, HealingBoosterModifier, PersistentModifier, PokemonHeldItemModifier, ModifierPredicate, DoubleBattleChanceBoosterModifier, FusePokemonModifier, PokemonFormChangeItemModifier, TerastallizeModifier, overrideModifiers, overrideHeldItems } from "./modifier/modifier"; +import { Modifier, ModifierBar, ConsumablePokemonModifier, ConsumableModifier, PokemonHpRestoreModifier, TurnHeldItemTransferModifier, HealingBoosterModifier, PersistentModifier, PokemonHeldItemModifier, ModifierPredicate, DoubleBattleChanceBoosterModifier, FusePokemonModifier, PokemonFormChangeItemModifier, TerastallizeModifier, overrideModifiers, overrideHeldItems } from "./modifier/modifier"; import { PokeballType } from "./data/pokeball"; import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets, populateAnims } from "./data/battle-anims"; import { Phase } from "./phase"; @@ -37,8 +36,8 @@ import UIPlugin from "phaser3-rex-plugins/templates/ui/ui-plugin"; import { addUiThemeOverrides } from "./ui/ui-theme"; import PokemonData from "./system/pokemon-data"; import { Nature } from "./data/nature"; -import { SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger, SpeciesFormChangeTrigger, pokemonFormChanges, FormChangeItem } from "./data/pokemon-forms"; -import { FormChangePhase, QuietFormChangePhase } from "./form-change-phase"; +import { SpeciesFormChangeManualTrigger, SpeciesFormChangeTimeOfDayTrigger, SpeciesFormChangeTrigger, pokemonFormChanges, FormChangeItem, SpeciesFormChange } from "./data/pokemon-forms"; +import { FormChangePhase } from "./phases/form-change-phase"; import { getTypeRgb } from "./data/type"; import PokemonSpriteSparkleHandler from "./field/pokemon-sprite-sparkle-handler"; import CharSprite from "./ui/char-sprite"; @@ -69,6 +68,21 @@ import i18next from "i18next"; import {TrainerType} from "#enums/trainer-type"; import { battleSpecDialogue } from "./data/dialogue"; import { LoadingScene } from "./loading-scene"; +import { LevelCapPhase } from "./phases/level-cap-phase"; +import { LoginPhase } from "./phases/login-phase"; +import { MessagePhase } from "./phases/message-phase"; +import { MovePhase } from "./phases/move-phase"; +import { NewBiomeEncounterPhase } from "./phases/new-biome-encounter-phase"; +import { NextEncounterPhase } from "./phases/next-encounter-phase"; +import { QuietFormChangePhase } from "./phases/quiet-form-change-phase"; +import { ReturnPhase } from "./phases/return-phase"; +import { SelectBiomePhase } from "./phases/select-biome-phase"; +import { ShowTrainerPhase } from "./phases/show-trainer-phase"; +import { SummonPhase } from "./phases/summon-phase"; +import { SwitchPhase } from "./phases/switch-phase"; +import { TitlePhase } from "./phases/title-phase"; +import { ToggleDoublePositionPhase } from "./phases/toggle-double-position-phase"; +import { TurnInitPhase } from "./phases/turn-init-phase"; export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; @@ -2421,7 +2435,6 @@ export default class BattleScene extends SceneBase { getEnemyModifierTypesForWave(difficultyWaveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD, upgradeChance) .map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false, this)); }); - this.updateModifiers(false).then(() => resolve()); }); } @@ -2579,7 +2592,7 @@ export default class BattleScene extends SceneBase { // in case this is NECROZMA, determine which forms this const matchingFormChangeOpts = pokemonFormChanges[pokemon.species.speciesId].filter(fc => fc.findTrigger(formChangeTriggerType) && fc.canChange(pokemon)); - let matchingFormChange; + let matchingFormChange: SpeciesFormChange | null; if (pokemon.species.speciesId === Species.NECROZMA && matchingFormChangeOpts.length > 1) { // Ultra Necrozma is changing its form back, so we need to figure out into which form it devolves. const formChangeItemModifiers = (this.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]).filter(m => m.active).map(m => m.formChangeItem); @@ -2666,7 +2679,9 @@ export default class BattleScene extends SceneBase { if (pokemon instanceof EnemyPokemon && pokemon.isBoss() && !pokemon.formIndex && pokemon.bossSegmentIndex < 1) { this.fadeOutBgm(Utils.fixedInt(2000), false); this.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].firstStageWin, pokemon.species.name, undefined, () => { - this.addEnemyModifier(getModifierType(modifierTypes.MINI_BLACK_HOLE).newModifier(pokemon) as PersistentModifier, false, true); + const finalBossMBH = getModifierType(modifierTypes.MINI_BLACK_HOLE).newModifier(pokemon) as TurnHeldItemTransferModifier; + finalBossMBH.setTransferrableFalse(); + this.addEnemyModifier(finalBossMBH, false, true); pokemon.generateAndPopulateMoveset(1); this.setFieldScale(0.75); this.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); diff --git a/src/data/ability.ts b/src/data/ability.ts index abc45273131..8e020849a17 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -3,7 +3,6 @@ import { Type } from "./type"; import { Constructor } from "#app/utils"; import * as Utils from "../utils"; import { BattleStat, getBattleStatName } from "./battle-stat"; -import { MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases"; import { getPokemonNameWithAffix } from "../messages"; import { Weather, WeatherType } from "./weather"; import { BattlerTag, GroundedTag, GulpMissileTag, SemiInvulnerableTag } from "./battler-tags"; @@ -26,6 +25,10 @@ import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase.js"; +import { ShowAbilityPhase } from "#app/phases/show-ability-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; export class Ability implements Localizable { public id: Abilities; @@ -2395,16 +2398,16 @@ export class PreStatChangeAbAttr extends AbAttr { } export class ProtectStatAbAttr extends PreStatChangeAbAttr { - private protectedStat: BattleStat | null; + private protectedStat?: BattleStat; constructor(protectedStat?: BattleStat) { super(); - this.protectedStat = protectedStat ?? null; + this.protectedStat = protectedStat; } applyPreStatChange(pokemon: Pokemon, passive: boolean, stat: BattleStat, cancelled: Utils.BooleanHolder, args: any[]): boolean { - if (!this.protectedStat || stat === this.protectedStat) { + if (Utils.isNullOrUndefined(this.protectedStat) || stat === this.protectedStat) { cancelled.value = true; return true; } @@ -5039,6 +5042,7 @@ export function initAbilities() { (pokemon, abilityName) => i18next.t("abilityTriggers:disguiseAvoidedDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: abilityName }), (pokemon) => Math.floor(pokemon.getMaxHp() / 8)) .attr(PostBattleInitFormChangeAbAttr, () => 0) + .bypassFaint() .ignorable(), new Ability(Abilities.BATTLE_BOND, 7) .attr(PostVictoryFormChangeAbAttr, () => 2) @@ -5191,6 +5195,7 @@ export function initAbilities() { .attr(FormBlockDamageAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL && !!target.getTag(BattlerTagType.ICE_FACE), 0, BattlerTagType.ICE_FACE, (pokemon, abilityName) => i18next.t("abilityTriggers:iceFaceAvoidedDamage", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon), abilityName: abilityName })) .attr(PostBattleInitFormChangeAbAttr, () => 0) + .bypassFaint() .ignorable(), new Ability(Abilities.POWER_SPOT, 8) .attr(AllyMoveCategoryPowerBoostAbAttr, [MoveCategory.SPECIAL, MoveCategory.PHYSICAL], 1.3), diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index fdfcd4d076a..3394df827fb 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -4,7 +4,6 @@ import * as Utils from "../utils"; import { MoveCategory, allMoves, MoveTarget, IncrementMovePriorityAttr, applyMoveAttrs } from "./move"; import { getPokemonNameWithAffix } from "../messages"; import Pokemon, { HitResult, PokemonMove } from "../field/pokemon"; -import { MoveEffectPhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases"; import { StatusEffect } from "./status-effect"; import { BattlerIndex } from "../battle"; import { BlockNonDirectDamageAbAttr, ChangeMovePriorityAbAttr, ProtectStatAbAttr, applyAbAttrs } from "./ability"; @@ -15,6 +14,10 @@ import { Abilities } from "#enums/abilities"; import { ArenaTagType } from "#enums/arena-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase.js"; +import { ShowAbilityPhase } from "#app/phases/show-ability-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; export enum ArenaTagSide { BOTH, diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 6102d22317e..50f7dd52733 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1,5 +1,4 @@ import { ChargeAnim, CommonAnim, CommonBattleAnim, MoveChargeAnim } from "./battle-anims"; -import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangeCallback, StatChangePhase } from "../phases"; import { getPokemonNameWithAffix } from "../messages"; import Pokemon, { MoveResult, HitResult } from "../field/pokemon"; import { Stat, getStatName } from "./pokemon-stat"; @@ -18,6 +17,12 @@ import { BattlerTagType } from "#enums/battler-tag-type"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import i18next from "#app/plugins/i18n.js"; +import { CommonAnimPhase } from "#app/phases/common-anim-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase.js"; +import { ShowAbilityPhase } from "#app/phases/show-ability-phase.js"; +import { StatChangePhase, StatChangeCallback } from "#app/phases/stat-change-phase.js"; export enum BattlerTagLapseType { FAINT, diff --git a/src/data/berry.ts b/src/data/berry.ts index 30b89848452..e962219ca46 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -1,4 +1,3 @@ -import { PokemonHealPhase, StatChangePhase } from "../phases"; import { getPokemonNameWithAffix } from "../messages"; import Pokemon, { HitResult } from "../field/pokemon"; import { BattleStat } from "./battle-stat"; @@ -8,6 +7,8 @@ import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } import i18next from "i18next"; import { BattlerTagType } from "#enums/battler-tag-type"; import { BerryType } from "#enums/berry-type"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; export function getBerryName(berryType: BerryType): string { return i18next.t(`berry:${BerryType[berryType]}.name`); diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 1f893a0c522..f88ac2c71b2 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -5,30 +5,30 @@ import { Species } from "#enums/species"; export const speciesEggMoves = { - [Species.BULBASAUR]: [ Moves.GIGA_DRAIN, Moves.SLUDGE_BOMB, Moves.EARTH_POWER, Moves.SAPPY_SEED ], + [Species.BULBASAUR]: [ Moves.SAPPY_SEED, Moves.SLUDGE_WAVE, Moves.EARTH_POWER, Moves.MATCHA_GOTCHA ], [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.SQUIRTLE]: [ Moves.FREEZE_DRY, Moves.SHORE_UP, Moves.BOUNCY_BUBBLE, Moves.ORIGIN_PULSE ], [Species.CATERPIE]: [ Moves.SANDSEAR_STORM, Moves.SILK_TRAP, Moves.TWIN_BEAM, Moves.BLEAKWIND_STORM ], [Species.WEEDLE]: [ Moves.THOUSAND_ARROWS, Moves.SWORDS_DANCE, Moves.ATTACK_ORDER, Moves.NOXIOUS_TORQUE ], - [Species.PIDGEY]: [ Moves.HEAT_WAVE, Moves.FOCUS_BLAST, Moves.U_TURN, Moves.WILDBOLT_STORM ], + [Species.PIDGEY]: [ Moves.WILDBOLT_STORM, Moves.SANDSEAR_STORM, Moves.CALM_MIND, Moves.BOOMBURST ], [Species.RATTATA]: [ Moves.HYPER_FANG, Moves.PSYCHIC_FANGS, Moves.FIRE_FANG, Moves.EXTREME_SPEED ], [Species.SPEAROW]: [ Moves.FLOATY_FALL, Moves.EXTREME_SPEED, Moves.TIDY_UP, Moves.TRIPLE_ARROWS ], [Species.EKANS]: [ Moves.NOXIOUS_TORQUE, Moves.DRAGON_DANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ], - [Species.SANDSHREW]: [ Moves.HIGH_HORSEPOWER, Moves.CEASELESS_EDGE, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], + [Species.SANDSHREW]: [ Moves.HIGH_HORSEPOWER, Moves.DIRE_CLAW, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], [Species.NIDORAN_F]: [ Moves.NO_RETREAT, Moves.BANEFUL_BUNKER, Moves.SANDSEAR_STORM, Moves.MALIGNANT_CHAIN ], [Species.NIDORAN_M]: [ Moves.NOXIOUS_TORQUE, Moves.KINGS_SHIELD, Moves.NO_RETREAT, Moves.PRECIPICE_BLADES ], - [Species.VULPIX]: [ Moves.MOONBLAST, Moves.ICE_BEAM, Moves.MORNING_SUN, Moves.TAIL_GLOW ], - [Species.ZUBAT]: [ Moves.FLOATY_FALL, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.WICKED_BLOW ], - [Species.ODDISH]: [ Moves.SLUDGE_BOMB, Moves.FIERY_DANCE, Moves.BOUNCY_BUBBLE, Moves.SPORE ], + [Species.VULPIX]: [ Moves.MOONBLAST, Moves.INFERNAL_PARADE, Moves.MORNING_SUN, Moves.TAIL_GLOW ], + [Species.ZUBAT]: [ Moves.FLOATY_FALL, Moves.DIRE_CLAW, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], + [Species.ODDISH]: [ Moves.SLUDGE_BOMB, Moves.FIERY_DANCE, Moves.STRENGTH_SAP, Moves.SPORE ], [Species.PARAS]: [ Moves.LEECH_LIFE, Moves.HORN_LEECH, Moves.CRABHAMMER, Moves.SAPPY_SEED ], [Species.VENONAT]: [ Moves.SLUDGE_BOMB, Moves.MOONLIGHT, Moves.EARTH_POWER, Moves.MYSTICAL_POWER ], - [Species.DIGLETT]: [ Moves.REVERSAL, Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.HEADLONG_RUSH ], + [Species.DIGLETT]: [ Moves.TRIPLE_DIVE, Moves.SWORDS_DANCE, Moves.TRIPLE_AXEL, Moves.HEADLONG_RUSH ], [Species.MEOWTH]: [ Moves.COVET, Moves.SWORDS_DANCE, Moves.DOUBLE_KICK, Moves.TAIL_SLAP ], [Species.PSYDUCK]: [ Moves.SPLISHY_SPLASH, Moves.AQUA_STEP, Moves.AURA_SPHERE, Moves.MYSTICAL_POWER ], [Species.MANKEY]: [ Moves.DRAIN_PUNCH, Moves.PLAY_ROUGH, Moves.METEOR_MASH, Moves.NO_RETREAT ], [Species.GROWLITHE]: [ Moves.ZING_ZAP, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ], [Species.POLIWAG]: [ Moves.SLACK_OFF, Moves.WILDBOLT_STORM, Moves.DRAIN_PUNCH, Moves.SURGING_STRIKES ], - [Species.ABRA]: [ Moves.MOONBLAST, Moves.FLAMETHROWER, Moves.THUNDERBOLT, Moves.PSYSTRIKE ], + [Species.ABRA]: [ Moves.AURA_SPHERE, Moves.BADDY_BAD, Moves.THUNDERBOLT, Moves.PSYSTRIKE ], [Species.MACHOP]: [ Moves.COMBAT_TORQUE, Moves.METEOR_MASH, Moves.MOUNTAIN_GALE, Moves.FISSURE ], [Species.BELLSPROUT]: [ Moves.SOLAR_BLADE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], [Species.TENTACOOL]: [ Moves.BANEFUL_BUNKER, Moves.STRENGTH_SAP, Moves.BOUNCY_BUBBLE, Moves.MALIGNANT_CHAIN ], @@ -36,58 +36,58 @@ export const speciesEggMoves = { [Species.PONYTA]: [ Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.SWORDS_DANCE, Moves.VOLT_TACKLE ], [Species.SLOWPOKE]: [ Moves.BOUNCY_BUBBLE, Moves.FLAMETHROWER, Moves.MYSTICAL_POWER, Moves.SHED_TAIL ], [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.FARFETCHD]: [ Moves.IVY_CUDGEL, Moves.TRIPLE_ARROWS, Moves.ROOST, Moves.VICTORY_DANCE ], [Species.DODUO]: [ Moves.TRIPLE_AXEL, Moves.MULTI_ATTACK, Moves.FLOATY_FALL, Moves.TRIPLE_ARROWS ], [Species.SEEL]: [ Moves.FREEZE_DRY, Moves.BOUNCY_BUBBLE, Moves.SLACK_OFF, Moves.STEAM_ERUPTION ], [Species.GRIMER]: [ Moves.SUCKER_PUNCH, Moves.CURSE, Moves.STRENGTH_SAP, Moves.NOXIOUS_TORQUE ], [Species.SHELLDER]: [ Moves.ROCK_BLAST, Moves.WATER_SHURIKEN, Moves.BANEFUL_BUNKER, Moves.BONE_RUSH ], [Species.GASTLY]: [ Moves.SLUDGE_BOMB, Moves.AURA_SPHERE, Moves.NASTY_PLOT, Moves.ASTRAL_BARRAGE ], [Species.ONIX]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.HEAVY_SLAM, Moves.DIAMOND_STORM ], - [Species.DROWZEE]: [ Moves.DREAM_EATER, Moves.RECOVER, Moves.LUMINA_CRASH, Moves.DARK_VOID ], - [Species.KRABBY]: [ Moves.ICICLE_CRASH, Moves.LIQUIDATION, Moves.IVY_CUDGEL, Moves.SHELL_SMASH ], - [Species.VOLTORB]: [ Moves.RISING_VOLTAGE, Moves.OVERHEAT, Moves.ICE_BEAM, Moves.NASTY_PLOT ], - [Species.EXEGGCUTE]: [ Moves.MYSTICAL_POWER, Moves.APPLE_ACID, Moves.TRICK_ROOM, Moves.FICKLE_BEAM ], + [Species.DROWZEE]: [ Moves.BADDY_BAD, Moves.STRENGTH_SAP, Moves.LUMINA_CRASH, Moves.SPORE ], + [Species.KRABBY]: [ Moves.FIRE_LASH, Moves.PLAY_ROUGH, Moves.IVY_CUDGEL, Moves.SHELL_SMASH ], + [Species.VOLTORB]: [ Moves.NASTY_PLOT, Moves.OVERHEAT, Moves.FROST_BREATH, Moves.ELECTRO_DRIFT ], + [Species.EXEGGCUTE]: [ Moves.FICKLE_BEAM, Moves.APPLE_ACID, Moves.TRICK_ROOM, Moves.LUMINA_CRASH ], [Species.CUBONE]: [ Moves.HEAD_SMASH, Moves.WOOD_HAMMER, Moves.SHADOW_SNEAK, Moves.BITTER_BLADE ], [Species.LICKITUNG]: [ Moves.BODY_SLAM, Moves.FIRE_LASH, Moves.GRAV_APPLE, Moves.MILK_DRINK ], - [Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.MOONBLAST, Moves.MALIGNANT_CHAIN ], + [Species.KOFFING]: [ Moves.SCALD, Moves.RECOVER, Moves.BODY_PRESS, Moves.MALIGNANT_CHAIN ], [Species.RHYHORN]: [ Moves.SHORE_UP, Moves.ICE_HAMMER, Moves.ACCELEROCK, Moves.HEAD_SMASH ], - [Species.TANGELA]: [ Moves.STRENGTH_SAP, Moves.INFESTATION, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], + [Species.TANGELA]: [ Moves.STRENGTH_SAP, Moves.SNAP_TRAP, Moves.PARTING_SHOT, Moves.SAPPY_SEED ], [Species.KANGASKHAN]: [ Moves.POWER_UP_PUNCH, Moves.TRAILBLAZE, Moves.FACADE, Moves.SEISMIC_TOSS ], - [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.HURRICANE, Moves.DRAGON_ENERGY ], + [Species.HORSEA]: [ Moves.SNIPE_SHOT, Moves.FROST_BREATH, Moves.HURRICANE, Moves.SPACIAL_REND ], [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.MIGHTY_CLEAVE, Moves.BUG_BITE, Moves.STORM_THROW, Moves.DOUBLE_IRON_BASH ], [Species.PINSIR]: [ Moves.EARTHQUAKE, Moves.LEECH_LIFE, Moves.CLOSE_COMBAT, Moves.EXTREME_SPEED ], [Species.TAUROS]: [ Moves.HIGH_HORSEPOWER, Moves.BLAZING_TORQUE, Moves.LIQUIDATION, Moves.COMBAT_TORQUE ], - [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.POWER_TRIP, Moves.DRAGON_ASCENT ], + [Species.MAGIKARP]: [ Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.DRAGON_ASCENT, Moves.SURGING_STRIKES ], [Species.LAPRAS]: [ Moves.RECOVER, Moves.FREEZE_DRY, Moves.SHELL_SMASH, Moves.STEAM_ERUPTION ], - [Species.DITTO]: [ Moves.MIMIC, Moves.COPYCAT, Moves.ME_FIRST, Moves.METRONOME ], - [Species.EEVEE]: [ Moves.WISH, Moves.REVELATION_DANCE, Moves.ZIPPY_ZAP, Moves.NO_RETREAT ], + [Species.DITTO]: [ Moves.MIMIC, Moves.SKETCH, Moves.METRONOME, Moves.IMPRISON ], + [Species.EEVEE]: [ Moves.WISH, Moves.NO_RETREAT, Moves.ZIPPY_ZAP, Moves.BOOMBURST ], [Species.PORYGON]: [ Moves.THUNDERCLAP, Moves.AURA_SPHERE, Moves.FLAMETHROWER, Moves.TECHNO_BLAST ], [Species.OMANYTE]: [ Moves.FREEZE_DRY, Moves.EARTH_POWER, Moves.POWER_GEM, Moves.STEAM_ERUPTION ], - [Species.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.HIGH_HORSEPOWER, Moves.RAZOR_SHELL, 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.KABUTO]: [ Moves.CEASELESS_EDGE, Moves.HIGH_HORSEPOWER, Moves.TRIPLE_DIVE, Moves.MIGHTY_CLEAVE ], + [Species.AERODACTYL]: [ Moves.FLOATY_FALL, Moves.FLARE_BLITZ, Moves.SWORDS_DANCE, Moves.MIGHTY_CLEAVE ], + [Species.ARTICUNO]: [ Moves.EARTH_POWER, Moves.CALM_MIND, Moves.AURORA_VEIL, Moves.AEROBLAST ], [Species.ZAPDOS]: [ Moves.WEATHER_BALL, Moves.CALM_MIND, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ], [Species.MOLTRES]: [ Moves.SCORCHING_SANDS, Moves.CALM_MIND, Moves.AEROBLAST, Moves.TORCH_SONG ], - [Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.MULTI_ATTACK ], - [Species.MEWTWO]: [ Moves.METEOR_MASH, Moves.MOONBLAST, Moves.PLASMA_FISTS, Moves.PHOTON_GEYSER ], + [Species.DRATINI]: [ Moves.DRAGON_HAMMER, Moves.CRUSH_GRIP, Moves.FIRE_LASH, Moves.GIGATON_HAMMER ], + [Species.MEWTWO]: [ Moves.METEOR_MASH, Moves.MOONBLAST, Moves.THUNDEROUS_KICK, Moves.PHOTON_GEYSER ], [Species.MEW]: [ Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE, Moves.SHELL_SMASH ], - [Species.CHIKORITA]: [ Moves.SPORE, Moves.STONE_AXE, Moves.DRAGON_DANCE, Moves.SAPPY_SEED ], + [Species.CHIKORITA]: [ Moves.SAPPY_SEED, Moves.STONE_AXE, Moves.DRAGON_DANCE, Moves.SPORE ], [Species.CYNDAQUIL]: [ Moves.NASTY_PLOT, Moves.SCORCHING_SANDS, Moves.FIERY_DANCE, Moves.ELECTRO_DRIFT ], [Species.TOTODILE]: [ Moves.THUNDER_PUNCH, Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.FISHIOUS_REND ], [Species.SENTRET]: [ Moves.TIDY_UP, Moves.THIEF, Moves.NUZZLE, Moves.EXTREME_SPEED ], - [Species.HOOTHOOT]: [ Moves.CALM_MIND, Moves.ESPER_WING, Moves.BOOMBURST, Moves.OBLIVION_WING ], + [Species.HOOTHOOT]: [ Moves.CALM_MIND, Moves.ESPER_WING, Moves.AEROBLAST, Moves.BOOMBURST ], [Species.LEDYBA]: [ Moves.POLLEN_PUFF, Moves.THIEF, Moves.PARTING_SHOT, Moves.SPORE ], [Species.SPINARAK]: [ Moves.PARTING_SHOT, Moves.ATTACK_ORDER, Moves.GASTRO_ACID, Moves.STRENGTH_SAP ], - [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.VOLT_SWITCH, Moves.TAIL_GLOW ], + [Species.CHINCHOU]: [ Moves.THUNDERCLAP, Moves.BOUNCY_BUBBLE, Moves.THUNDER_CAGE, Moves.TAIL_GLOW ], [Species.PICHU]: [ Moves.RISING_VOLTAGE, Moves.SPLISHY_SPLASH, Moves.FLOATY_FALL, Moves.THUNDERCLAP ], - [Species.CLEFFA]: [ Moves.TAKE_HEART, Moves.POWER_GEM, Moves.WISH, Moves.LIGHT_OF_RUIN ], + [Species.CLEFFA]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.WISH, Moves.LIGHT_OF_RUIN ], [Species.IGGLYBUFF]: [ Moves.DRAIN_PUNCH, Moves.GRAV_APPLE, Moves.SOFT_BOILED, Moves.EXTREME_SPEED ], - [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.MOONBLAST, Moves.FIERY_DANCE ], + [Species.TOGEPI]: [ Moves.SCORCHING_SANDS, Moves.ROOST, Moves.RELIC_SONG, Moves.FIERY_DANCE ], [Species.NATU]: [ Moves.AEROBLAST, Moves.ROOST, Moves.CALM_MIND, Moves.LUMINA_CRASH ], [Species.MAREEP]: [ Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE, Moves.CORE_ENFORCER, Moves.TAIL_GLOW ], - [Species.HOPPIP]: [ Moves.FLOATY_FALL, Moves.STRENGTH_SAP, Moves.SPORE, Moves.SAPPY_SEED ], + [Species.HOPPIP]: [ Moves.FLOATY_FALL, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SPORE ], [Species.AIPOM]: [ Moves.TIDY_UP, Moves.STORM_THROW, Moves.FAKE_OUT, Moves.POPULATION_BOMB ], [Species.SUNKERN]: [ Moves.SPORE, Moves.SAPPY_SEED, Moves.FIERY_DANCE, Moves.HYDRO_STEAM ], [Species.YANMA]: [ Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.HEAT_WAVE, Moves.BLEAKWIND_STORM ], @@ -103,33 +103,33 @@ export const speciesEggMoves = { [Species.QWILFISH]: [ Moves.BARB_BARRAGE, Moves.BANEFUL_BUNKER, Moves.KNOCK_OFF, Moves.FISHIOUS_REND ], [Species.SHUCKLE]: [ Moves.STUFF_CHEEKS, Moves.HEAL_ORDER, Moves.BODY_PRESS, Moves.SALT_CURE ], [Species.HERACROSS]: [ Moves.ROCK_BLAST, Moves.FIRST_IMPRESSION, Moves.ICICLE_SPEAR, Moves.DRAGON_DANCE ], - [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.SUCKER_PUNCH, Moves.TRIPLE_AXEL, Moves.WICKED_BLOW ], - [Species.TEDDIURSA]: [ Moves.DIRE_CLAW, Moves.FACADE, Moves.BULK_UP, Moves.SLACK_OFF ], + [Species.SNEASEL]: [ Moves.DIRE_CLAW, Moves.STORM_THROW, Moves.TRIPLE_AXEL, Moves.WICKED_BLOW ], + [Species.TEDDIURSA]: [ Moves.MOUNTAIN_GALE, Moves.RAGING_BULL, Moves.SLACK_OFF, Moves.PRECIPICE_BLADES ], [Species.SLUGMA]: [ Moves.BURNING_BULWARK, Moves.POWER_GEM, Moves.SOLAR_BEAM, Moves.MAGMA_STORM ], - [Species.SWINUB]: [ Moves.ICE_SPINNER, Moves.HEADLONG_RUSH, Moves.MIGHTY_CLEAVE, Moves.GLACIAL_LANCE ], + [Species.SWINUB]: [ Moves.SLACK_OFF, Moves.LANDS_WRATH, Moves.MIGHTY_CLEAVE, Moves.GLACIAL_LANCE ], [Species.CORSOLA]: [ Moves.SCALD, Moves.FREEZE_DRY, Moves.STRENGTH_SAP, Moves.SALT_CURE ], - [Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.SNIPE_SHOT, Moves.SEARING_SHOT, Moves.ELECTRO_SHOT ], - [Species.DELIBIRD]: [ Moves.DRILL_RUN, Moves.FLOATY_FALL, Moves.NO_RETREAT, Moves.GLACIAL_LANCE ], + [Species.REMORAID]: [ Moves.WATER_SHURIKEN, Moves.TAKE_HEART, Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE ], + [Species.DELIBIRD]: [ Moves.DRILL_RUN, Moves.FLOATY_FALL, Moves.VICTORY_DANCE, Moves.GLACIAL_LANCE ], [Species.SKARMORY]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.BEAK_BLAST ], [Species.HOUNDOUR]: [ Moves.HEAT_WAVE, Moves.FIERY_WRATH, Moves.SOLAR_BEAM, Moves.HYDRO_STEAM ], [Species.PHANPY]: [ Moves.SHORE_UP, Moves.SWORDS_DANCE, Moves.ICICLE_CRASH, Moves.COLLISION_COURSE ], [Species.STANTLER]: [ Moves.THUNDEROUS_KICK, Moves.HYPER_VOICE, Moves.BULK_UP, Moves.PHOTON_GEYSER ], [Species.SMEARGLE]: [ Moves.CONVERSION, Moves.BURNING_BULWARK, Moves.SALT_CURE, Moves.DARK_VOID ], - [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.QUIVER_DANCE ], + [Species.TYROGUE]: [ Moves.VICTORY_DANCE, Moves.THUNDEROUS_KICK, Moves.METEOR_MASH, Moves.WICKED_BLOW ], + [Species.SMOOCHUM]: [ Moves.EXPANDING_FORCE, Moves.AURA_SPHERE, Moves.FREEZE_DRY, Moves.QUIVER_DANCE ], [Species.ELEKID]: [ Moves.BLAZING_TORQUE, Moves.TIDY_UP, Moves.MOUNTAIN_GALE, Moves.ZIPPY_ZAP ], [Species.MAGBY]: [ Moves.THUNDERCLAP, Moves.EARTH_POWER, Moves.ARMOR_CANNON, Moves.FLEUR_CANNON ], [Species.MILTANK]: [ Moves.BODY_PRESS, Moves.BULK_UP, Moves.YAWN, Moves.SIZZLY_SLIDE ], - [Species.RAIKOU]: [ Moves.THUNDERCLAP, Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.PARABOLIC_CHARGE ], + [Species.RAIKOU]: [ Moves.PARABOLIC_CHARGE, Moves.NASTY_PLOT, Moves.FROST_BREATH, Moves.ELECTRO_DRIFT ], [Species.ENTEI]: [ Moves.BURNING_BULWARK, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.MIGHTY_CLEAVE ], [Species.SUICUNE]: [ Moves.RECOVER, Moves.NASTY_PLOT, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.LARVITAR]: [ Moves.DRAGON_DANCE, Moves.MOUNTAIN_GALE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], - [Species.LUGIA]: [ Moves.TAKE_HEART, Moves.STORED_POWER, Moves.SCALD, Moves.OBLIVION_WING ], - [Species.HO_OH]: [ Moves.SWORDS_DANCE, Moves.EARTHQUAKE, Moves.BRAVE_BIRD, Moves.REVIVAL_BLESSING ], - [Species.CELEBI]: [ Moves.MYSTICAL_POWER, Moves.STORED_POWER, Moves.COSMIC_POWER, Moves.SEED_FLARE ], - [Species.TREECKO]: [ Moves.NASTY_PLOT, Moves.DRAGON_ENERGY, Moves.SECRET_SWORD, Moves.SEED_FLARE ], + [Species.LUGIA]: [ Moves.NASTY_PLOT, Moves.LUMINA_CRASH, Moves.AURA_SPHERE, Moves.OBLIVION_WING ], + [Species.HO_OH]: [ Moves.FLOATY_FALL, Moves.SOLAR_BLADE, Moves.REVIVAL_BLESSING, Moves.BOLT_BEAK ], + [Species.CELEBI]: [ Moves.PHOTON_GEYSER, Moves.MATCHA_GOTCHA, Moves.REVIVAL_BLESSING, Moves.QUIVER_DANCE ], + [Species.TREECKO]: [ Moves.NASTY_PLOT, Moves.APPLE_ACID, Moves.SECRET_SWORD, Moves.DRAGON_ENERGY ], [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.MUDKIP]: [ Moves.SHORE_UP, Moves.MOUNTAIN_GALE, Moves.BULK_UP, Moves.SURGING_STRIKES ], [Species.POOCHYENA]: [ Moves.JAW_LOCK, Moves.CLOSE_COMBAT, Moves.DIRE_CLAW, Moves.NO_RETREAT ], [Species.ZIGZAGOON]: [ Moves.EXTREME_SPEED, Moves.NUZZLE, Moves.HIGH_HORSEPOWER, Moves.TIDY_UP ], [Species.WURMPLE]: [ Moves.BATON_PASS, Moves.BLEAKWIND_STORM, Moves.STORED_POWER, Moves.MALIGNANT_CHAIN ], @@ -142,13 +142,13 @@ export const speciesEggMoves = { [Species.SHROOMISH]: [ Moves.ACCELEROCK, Moves.TRAILBLAZE, Moves.STORM_THROW, Moves.SAPPY_SEED ], [Species.SLAKOTH]: [ Moves.FACADE, Moves.DRAIN_PUNCH, Moves.KNOCK_OFF, Moves.SKILL_SWAP ], [Species.NINCADA]: [ Moves.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.WHISMUR]: [ Moves.ALLURING_VOICE, Moves.SHIFT_GEAR, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], + [Species.MAKUHITA]: [ Moves.COMBAT_TORQUE, Moves.SLACK_OFF, Moves.HEAT_CRASH, Moves.DOUBLE_IRON_BASH ], [Species.AZURILL]: [ Moves.JET_PUNCH, Moves.MAGICAL_TORQUE, Moves.SWORDS_DANCE, Moves.SURGING_STRIKES ], [Species.NOSEPASS]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.CALM_MIND, Moves.TACHYON_CUTTER ], [Species.SKITTY]: [ Moves.THUNDEROUS_KICK, Moves.ENTRAINMENT, Moves.TIDY_UP, Moves.V_CREATE ], [Species.SABLEYE]: [ Moves.RECOVER, Moves.TOPSY_TURVY, Moves.CURSE, Moves.SALT_CURE ], - [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.MAGICAL_TORQUE, Moves.EARTHQUAKE, Moves.DOUBLE_IRON_BASH ], + [Species.MAWILE]: [ Moves.BULLET_PUNCH, Moves.MAGICAL_TORQUE, Moves.EARTHQUAKE, Moves.SHIFT_GEAR ], [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 ], @@ -156,7 +156,7 @@ export const speciesEggMoves = { [Species.MINUN]: [ Moves.ICE_BEAM, Moves.BADDY_BAD, Moves.SPARKLY_SWIRL, Moves.TAIL_GLOW ], [Species.VOLBEAT]: [ Moves.BATON_PASS, Moves.LUNGE, Moves.DECORATE, Moves.VICTORY_DANCE ], [Species.ILLUMISE]: [ Moves.PARTING_SHOT, Moves.GLITZY_GLOW, Moves.POWDER, Moves.QUIVER_DANCE ], - [Species.GULPIN]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.GROWTH, Moves.MALIGNANT_CHAIN ], + [Species.GULPIN]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.CALM_MIND, Moves.MALIGNANT_CHAIN ], [Species.CARVANHA]: [ Moves.THUNDER_FANG, Moves.SWORDS_DANCE, Moves.OBSTRUCT, Moves.SURGING_STRIKES ], [Species.WAILMER]: [ Moves.TAKE_HEART, Moves.BOUNCY_BUBBLE, Moves.SLACK_OFF, Moves.COMEUPPANCE ], [Species.NUMEL]: [ Moves.TRICK_ROOM, Moves.ENERGY_BALL, Moves.MORNING_SUN, Moves.BLUE_FLARE ], @@ -183,22 +183,22 @@ export const speciesEggMoves = { [Species.TROPIUS]: [ Moves.STUFF_CHEEKS, Moves.EARTH_POWER, Moves.APPLE_ACID, Moves.SAPPY_SEED ], [Species.ABSOL]: [ Moves.KOWTOW_CLEAVE, Moves.SACRED_SWORD, Moves.PSYBLADE, Moves.BITTER_BLADE ], [Species.WYNAUT]: [ Moves.RECOVER, Moves.SHED_TAIL, Moves.TAUNT, Moves.COMEUPPANCE ], - [Species.SNORUNT]: [ Moves.AURORA_VEIL, Moves.HYPER_VOICE, Moves.EARTH_POWER, Moves.NO_RETREAT ], + [Species.SNORUNT]: [ Moves.FREEZY_FROST, Moves.EXTREME_SPEED, 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.STEAM_ERUPTION ], - [Species.RELICANTH]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.FISHIOUS_REND ], + [Species.CLAMPERL]: [ Moves.SHELL_SIDE_ARM, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], + [Species.RELICANTH]: [ Moves.DRAGON_DANCE, Moves.SHORE_UP, Moves.WAVE_CRASH, Moves.DIAMOND_STORM ], [Species.LUVDISC]: [ Moves.BATON_PASS, Moves.HEART_SWAP, Moves.GLITZY_GLOW, Moves.REVIVAL_BLESSING ], [Species.BAGON]: [ Moves.FLOATY_FALL, Moves.FIRE_LASH, Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH ], [Species.BELDUM]: [ Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.TRIPLE_AXEL, Moves.SHIFT_GEAR ], - [Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.RECOVER, Moves.SALT_CURE ], + [Species.REGIROCK]: [ Moves.STONE_AXE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SALT_CURE ], [Species.REGICE]: [ Moves.EARTH_POWER, Moves.TAKE_HEART, Moves.RECOVER, Moves.FREEZE_DRY ], - [Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.THOUSAND_WAVES, 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.TAIL_GLOW ], + [Species.REGISTEEL]: [ Moves.BODY_PRESS, Moves.SIZZLY_SLIDE, Moves.RECOVER, Moves.GIGATON_HAMMER ], + [Species.LATIAS]: [ Moves.CORE_ENFORCER, Moves.FUSION_FLARE, Moves.SPARKLY_SWIRL, Moves.MYSTICAL_POWER ], + [Species.LATIOS]: [ Moves.CORE_ENFORCER, Moves.BLUE_FLARE, Moves.NASTY_PLOT, Moves.TACHYON_CUTTER ], + [Species.KYOGRE]: [ Moves.BOUNCY_BUBBLE, Moves.HURRICANE, Moves.FREEZE_DRY, Moves.ELECTRO_SHOT ], [Species.GROUDON]: [ Moves.STONE_AXE, Moves.SOLAR_BLADE, Moves.MORNING_SUN, Moves.SACRED_FIRE ], - [Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.DRAGON_ENERGY, Moves.OBLIVION_WING ], - [Species.JIRACHI]: [ Moves.IRON_HEAD, Moves.FLOATY_FALL, Moves.ROCK_SLIDE, Moves.SHIFT_GEAR ], + [Species.RAYQUAZA]: [ Moves.V_CREATE, Moves.DRAGON_DARTS, Moves.CORE_ENFORCER, Moves.OBLIVION_WING ], + [Species.JIRACHI]: [ Moves.TACHYON_CUTTER, Moves.TRIPLE_ARROWS, Moves.ROCK_SLIDE, Moves.SHELL_SMASH ], [Species.DEOXYS]: [ Moves.COLLISION_COURSE, Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.LUMINA_CRASH ], [Species.TURTWIG]: [ Moves.SHELL_SMASH, Moves.MIGHTY_CLEAVE, Moves.ICE_SPINNER, Moves.SAPPY_SEED ], [Species.CHIMCHAR]: [ Moves.FIERY_DANCE, Moves.SECRET_SWORD, Moves.TRIPLE_AXEL, Moves.SACRED_FIRE ], @@ -207,42 +207,42 @@ export const speciesEggMoves = { [Species.BIDOOF]: [ Moves.EXTREME_SPEED, Moves.COSMIC_POWER, Moves.POWER_TRIP, Moves.AQUA_STEP ], [Species.KRICKETOT]: [ Moves.BONEMERANG, Moves.VICTORY_DANCE, Moves.STONE_AXE, Moves.POPULATION_BOMB ], [Species.SHINX]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.FACADE, Moves.BOLT_STRIKE ], - [Species.BUDEW]: [ Moves.FIERY_DANCE, Moves.SLUDGE_WAVE, Moves.SPORE, Moves.QUIVER_DANCE ], - [Species.CRANIDOS]: [ Moves.DRAGON_DANCE, Moves.ACCELEROCK, Moves.HEADLONG_RUSH, Moves.VOLT_TACKLE ], + [Species.BUDEW]: [ Moves.FIERY_DANCE, Moves.ACID_SPRAY, Moves.BOUNCY_BUBBLE, Moves.QUIVER_DANCE ], + [Species.CRANIDOS]: [ Moves.VOLT_TACKLE, Moves.ACCELEROCK, Moves.FLARE_BLITZ, Moves.SHIFT_GEAR ], [Species.SHIELDON]: [ Moves.SHORE_UP, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.DIAMOND_STORM ], - [Species.BURMY]: [ Moves.BODY_PRESS, Moves.DEFEND_ORDER, Moves.HEAL_ORDER, Moves.SAPPY_SEED ], + [Species.BURMY]: [ Moves.FIERY_DANCE, Moves.DEFEND_ORDER, Moves.HEAL_ORDER, Moves.SAPPY_SEED ], [Species.COMBEE]: [ Moves.SPORE, Moves.FLOATY_FALL, Moves.KINGS_SHIELD, Moves.VICTORY_DANCE ], - [Species.PACHIRISU]: [ Moves.BADDY_BAD, Moves.SIZZLY_SLIDE, Moves.U_TURN, Moves.ZIPPY_ZAP ], + [Species.PACHIRISU]: [ Moves.FREEZY_FROST, Moves.SIZZLY_SLIDE, Moves.SLACK_OFF, 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.CHERUBI]: [ Moves.SPORE, Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.FLOWER_TRICK ], [Species.SHELLOS]: [ Moves.BOUNCY_BUBBLE, Moves.SCORCHING_SANDS, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.DRIFLOON]: [ Moves.WILL_O_WISP, Moves.MIND_BLOWN, 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 ], + [Species.GLAMEOW]: [ Moves.PARTING_SHOT, Moves.HIGH_HORSEPOWER, Moves.SWORDS_DANCE, Moves.EXTREME_SPEED ], [Species.CHINGLING]: [ Moves.BUZZY_BUZZ, Moves.EERIE_SPELL, Moves.TORCH_SONG, Moves.BOOMBURST ], [Species.STUNKY]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.RECOVER, Moves.DIRE_CLAW ], [Species.BRONZOR]: [ Moves.RECOVER, Moves.TACHYON_CUTTER, Moves.GLARE, Moves.LUMINA_CRASH ], - [Species.BONSLY]: [ Moves.STONE_AXE, Moves.LEAF_BLADE, Moves.STRENGTH_SAP, Moves.HEAD_SMASH ], + [Species.BONSLY]: [ Moves.ACCELEROCK, Moves.SWORDS_DANCE, Moves.STRENGTH_SAP, Moves.SAPPY_SEED ], [Species.MIME_JR]: [ Moves.CALM_MIND, Moves.MOONBLAST, Moves.SIZZLY_SLIDE, 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.BADDY_BAD, Moves.STRENGTH_SAP, Moves.SPECTRAL_THIEF ], [Species.GIBLE]: [ Moves.DRAGON_DANCE, Moves.BITTER_BLADE, Moves.SHORE_UP, Moves.THOUSAND_ARROWS ], - [Species.MUNCHLAX]: [ Moves.CURSE, Moves.BODY_PRESS, Moves.KNOCK_OFF, Moves.SLACK_OFF ], - [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.BULLET_PUNCH, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], - [Species.HIPPOPOTAS]: [ Moves.BODY_PRESS, Moves.STONE_AXE, Moves.IRON_DEFENSE, Moves.SALT_CURE ], - [Species.SKORUPI]: [ Moves.CEASELESS_EDGE, Moves.DIRE_CLAW, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.MUNCHLAX]: [ Moves.STUFF_CHEEKS, Moves.GRAV_APPLE, Moves.SLACK_OFF, Moves.EXTREME_SPEED ], + [Species.RIOLU]: [ Moves.THUNDEROUS_KICK, Moves.TACHYON_CUTTER, Moves.TRIPLE_AXEL, Moves.DOUBLE_IRON_BASH ], + [Species.HIPPOPOTAS]: [ Moves.SHORE_UP, Moves.STONE_AXE, Moves.BULK_UP, Moves.SALT_CURE ], + [Species.SKORUPI]: [ Moves.COIL, Moves.DIRE_CLAW, Moves.CRABHAMMER, Moves.WICKED_BLOW ], [Species.CROAGUNK]: [ Moves.DIRE_CLAW, Moves.ICE_PUNCH, Moves.THUNDEROUS_KICK, Moves.VICTORY_DANCE ], [Species.CARNIVINE]: [ Moves.STRENGTH_SAP, Moves.FIRE_LASH, Moves.COIL, Moves.SAPPY_SEED ], [Species.FINNEON]: [ Moves.QUIVER_DANCE, Moves.BOUNCY_BUBBLE, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], - [Species.MANTYKE]: [ Moves.SPLISHY_SPLASH, Moves.HAZE, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], - [Species.SNOVER]: [ Moves.HIGH_HORSEPOWER, Moves.STRENGTH_SAP, Moves.AURORA_VEIL, Moves.IVY_CUDGEL ], + [Species.MANTYKE]: [ Moves.SPLISHY_SPLASH, Moves.FREEZY_FROST, Moves.NASTY_PLOT, Moves.OBLIVION_WING ], + [Species.SNOVER]: [ Moves.HIGH_HORSEPOWER, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA, Moves.SAPPY_SEED ], [Species.ROTOM]: [ Moves.STRENGTH_SAP, Moves.FIERY_DANCE, Moves.SPLISHY_SPLASH, Moves.ELECTRO_DRIFT ], [Species.UXIE]: [ Moves.COSMIC_POWER, Moves.BODY_PRESS, Moves.RECOVER, Moves.SPARKLY_SWIRL ], [Species.MESPRIT]: [ Moves.TAIL_GLOW, Moves.AURA_SPHERE, Moves.RECOVER, Moves.LUMINA_CRASH ], [Species.AZELF]: [ Moves.PSYSTRIKE, Moves.ICE_BEAM, Moves.MOONBLAST, Moves.TAIL_GLOW ], [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.PALKIA]: [ Moves.RECOVER, Moves.TAKE_HEART, Moves.FREEZE_DRY, Moves.ORIGIN_PULSE ], [Species.HEATRAN]: [ Moves.TORCH_SONG, Moves.RECOVER, Moves.TACHYON_CUTTER, Moves.MATCHA_GOTCHA ], [Species.REGIGIGAS]: [ Moves.SKILL_SWAP, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.GIGATON_HAMMER ], [Species.GIRATINA]: [ Moves.DRAGON_DANCE, Moves.GLAIVE_RUSH, Moves.RECOVER, Moves.SPECTRAL_THIEF ], @@ -251,14 +251,14 @@ export const speciesEggMoves = { [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.MATCHA_GOTCHA, Moves.FIERY_DANCE, Moves.AEROBLAST, Moves.QUIVER_DANCE ], - [Species.ARCEUS]: [ Moves.QUIVER_DANCE, Moves.COLLISION_COURSE, Moves.VICTORY_DANCE, Moves.SPECTRAL_THIEF ], - [Species.VICTINI]: [ Moves.RECOVER, Moves.BOLT_STRIKE, Moves.PHOTON_GEYSER, Moves.VICTORY_DANCE ], + [Species.ARCEUS]: [ Moves.NO_RETREAT, Moves.COLLISION_COURSE, Moves.ASTRAL_BARRAGE, Moves.MULTI_ATTACK ], + [Species.VICTINI]: [ Moves.BLUE_FLARE, Moves.BOLT_STRIKE, Moves.LUSTER_PURGE, Moves.VICTORY_DANCE ], [Species.SNIVY]: [ Moves.FLAMETHROWER, Moves.CLANGING_SCALES, Moves.MAKE_IT_RAIN, Moves.FLEUR_CANNON ], [Species.TEPIG]: [ Moves.WAVE_CRASH, Moves.VOLT_TACKLE, Moves.DRAIN_PUNCH, Moves.VICTORY_DANCE ], [Species.OSHAWOTT]: [ Moves.TRIPLE_AXEL, Moves.SHELL_SIDE_ARM, Moves.SACRED_SWORD, Moves.SHELL_SMASH ], - [Species.PATRAT]: [ Moves.FAKE_OUT, Moves.GLARE, Moves.DYNAMIC_PUNCH, Moves.EXTREME_SPEED ], - [Species.LILLIPUP]: [ Moves.CLOSE_COMBAT, Moves.THIEF, Moves.HIGH_HORSEPOWER, Moves.LAST_RESPECTS ], - [Species.PURRLOIN]: [ Moves.ENCORE, Moves.ASSIST, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], + [Species.PATRAT]: [ Moves.FAKE_OUT, Moves.SWORDS_DANCE, Moves.DYNAMIC_PUNCH, Moves.EXTREME_SPEED ], + [Species.LILLIPUP]: [ Moves.CLOSE_COMBAT, Moves.BODY_SLAM, Moves.HIGH_HORSEPOWER, Moves.LAST_RESPECTS ], + [Species.PURRLOIN]: [ Moves.ENCORE, Moves.OBSTRUCT, Moves.PARTING_SHOT, Moves.WICKED_BLOW ], [Species.PANSAGE]: [ Moves.SWORDS_DANCE, Moves.FIRE_LASH, Moves.EARTHQUAKE, Moves.IVY_CUDGEL ], [Species.PANSEAR]: [ Moves.NASTY_PLOT, Moves.HYDRO_STEAM, Moves.SCORCHING_SANDS, Moves.TORCH_SONG ], [Species.PANPOUR]: [ Moves.NASTY_PLOT, Moves.ENERGY_BALL, Moves.EARTH_POWER, Moves.STEAM_ERUPTION ], @@ -267,27 +267,27 @@ export const speciesEggMoves = { [Species.BLITZLE]: [ Moves.HIGH_HORSEPOWER, Moves.THUNDEROUS_KICK, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE ], [Species.ROGGENROLA]: [ Moves.BODY_PRESS, Moves.CURSE, Moves.SHORE_UP, Moves.DIAMOND_STORM ], [Species.WOOBAT]: [ Moves.ESPER_WING, Moves.STORED_POWER, Moves.MYSTICAL_FIRE, Moves.OBLIVION_WING ], - [Species.DRILBUR]: [ Moves.IRON_HEAD, Moves.ICE_SPINNER, Moves.SHIFT_GEAR, Moves.THOUSAND_ARROWS ], + [Species.DRILBUR]: [ Moves.IRON_HEAD, Moves.MOUNTAIN_GALE, Moves.SHIFT_GEAR, Moves.THOUSAND_ARROWS ], [Species.AUDINO]: [ Moves.FOLLOW_ME, Moves.MOONBLAST, Moves.WISH, Moves.LUNAR_BLESSING ], [Species.TIMBURR]: [ Moves.MACH_PUNCH, Moves.DRAIN_PUNCH, Moves.ICE_HAMMER, Moves.DOUBLE_IRON_BASH ], [Species.TYMPOLE]: [ Moves.JET_PUNCH, Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.SURGING_STRIKES ], - [Species.THROH]: [ Moves.DRAIN_PUNCH, Moves.SLACK_OFF, Moves.METEOR_MASH, Moves.NO_RETREAT ], - [Species.SAWK]: [ Moves.DRAIN_PUNCH, Moves.MACH_PUNCH, Moves.ENDEAVOR, Moves.VICTORY_DANCE ], - [Species.SEWADDLE]: [ Moves.STONE_AXE, Moves.PSYCHO_CUT, Moves.TIDY_UP, Moves.BITTER_BLADE ], + [Species.THROH]: [ Moves.MACH_PUNCH, Moves.SLACK_OFF, Moves.METEOR_MASH, Moves.RAGE_FIST ], + [Species.SAWK]: [ Moves.DRAIN_PUNCH, Moves.SUCKER_PUNCH, Moves.METEOR_MASH, Moves.VICTORY_DANCE ], + [Species.SEWADDLE]: [ Moves.STONE_AXE, Moves.PSYCHO_CUT, Moves.BITTER_BLADE, Moves.VICTORY_DANCE ], [Species.VENIPEDE]: [ Moves.SWORDS_DANCE, Moves.LEECH_LIFE, Moves.NOXIOUS_TORQUE, Moves.POWER_TRIP ], [Species.COTTONEE]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.SLEEP_POWDER, Moves.SEED_FLARE ], - [Species.PETILIL]: [ Moves.THUNDEROUS_KICK, Moves.SPARKLING_ARIA, Moves.AQUA_STEP, Moves.FIERY_DANCE ], + [Species.PETILIL]: [ Moves.THUNDEROUS_KICK, Moves.SPARKLING_ARIA, Moves.FIERY_DANCE, Moves.FLOWER_TRICK ], [Species.BASCULIN]: [ Moves.LAST_RESPECTS, Moves.CLOSE_COMBAT, Moves.SPLISHY_SPLASH, Moves.NO_RETREAT ], [Species.SANDILE]: [ Moves.DIRE_CLAW, Moves.HIGH_HORSEPOWER, Moves.FIRE_LASH, Moves.WICKED_BLOW ], - [Species.DARUMAKA]: [ Moves.DRAIN_PUNCH, Moves.ZING_ZAP, Moves.EARTHQUAKE, Moves.V_CREATE ], + [Species.DARUMAKA]: [ Moves.DRAIN_PUNCH, Moves.ZIPPY_ZAP, Moves.EARTHQUAKE, Moves.PYRO_BALL ], [Species.MARACTUS]: [ Moves.SCORCHING_SANDS, Moves.QUIVER_DANCE, Moves.FIERY_DANCE, Moves.SEED_FLARE ], [Species.DWEBBLE]: [ Moves.CRABHAMMER, Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.MIGHTY_CLEAVE ], [Species.SCRAGGY]: [ Moves.SUCKER_PUNCH, Moves.BULLET_PUNCH, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], - [Species.SIGILYPH]: [ Moves.STORED_POWER, Moves.TAKE_HEART, Moves.FREEZING_GLARE, Moves.OBLIVION_WING ], + [Species.SIGILYPH]: [ Moves.MOONBLAST, Moves.CALM_MIND, Moves.FREEZING_GLARE, Moves.OBLIVION_WING ], [Species.YAMASK]: [ Moves.STRENGTH_SAP, Moves.INFERNAL_PARADE, Moves.AURA_SPHERE, Moves.ASTRAL_BARRAGE ], [Species.TIRTOUGA]: [ Moves.ICE_SPINNER, Moves.LIQUIDATION, Moves.SHORE_UP, Moves.MIGHTY_CLEAVE ], [Species.ARCHEN]: [ Moves.ROOST, Moves.EARTHQUAKE, Moves.FLOATY_FALL, Moves.MIGHTY_CLEAVE ], - [Species.TRUBBISH]: [ Moves.TIDY_UP, Moves.RECOVER, Moves.DIRE_CLAW, Moves.GIGATON_HAMMER ], + [Species.TRUBBISH]: [ Moves.COIL, Moves.RECOVER, Moves.DIRE_CLAW, Moves.GIGATON_HAMMER ], [Species.ZORUA]: [ Moves.FLAMETHROWER, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.FIERY_WRATH ], [Species.MINCCINO]: [ Moves.ICICLE_SPEAR, Moves.TIDY_UP, Moves.KNOCK_OFF, Moves.POPULATION_BOMB ], [Species.GOTHITA]: [ Moves.RECOVER, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.LUMINA_CRASH ], @@ -295,83 +295,83 @@ export const speciesEggMoves = { [Species.DUCKLETT]: [ Moves.SPLISHY_SPLASH, Moves.EARTH_POWER, Moves.WILDBOLT_STORM, Moves.QUIVER_DANCE ], [Species.VANILLITE]: [ Moves.EARTH_POWER, Moves.AURORA_VEIL, Moves.CALM_MIND, Moves.SPARKLY_SWIRL ], [Species.DEERLING]: [ Moves.TIDY_UP, Moves.FLOWER_TRICK, Moves.BODY_SLAM, Moves.COMBAT_TORQUE ], - [Species.EMOLGA]: [ Moves.ROOST, Moves.HEAT_WAVE, Moves.TAILWIND, Moves.ZING_ZAP ], + [Species.EMOLGA]: [ Moves.TRIPLE_AXEL, Moves.SPLISHY_SPLASH, Moves.TAILWIND, Moves.ZIPPY_ZAP ], [Species.KARRABLAST]: [ Moves.LEECH_LIFE, Moves.HEAL_ORDER, Moves.HIGH_HORSEPOWER, Moves.DOUBLE_IRON_BASH ], [Species.FOONGUS]: [ Moves.POLLEN_PUFF, Moves.PARTING_SHOT, Moves.FOUL_PLAY, Moves.SAPPY_SEED ], [Species.FRILLISH]: [ Moves.STRENGTH_SAP, Moves.INFERNAL_PARADE, Moves.FREEZE_DRY, Moves.STEAM_ERUPTION ], [Species.ALOMOMOLA]: [ Moves.FLIP_TURN, Moves.HEART_SWAP, Moves.TOXIC, Moves.GLITZY_GLOW ], [Species.JOLTIK]: [ Moves.THUNDER, Moves.PARABOLIC_CHARGE, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], [Species.FERROSEED]: [ Moves.STRENGTH_SAP, Moves.BODY_PRESS, Moves.SPIKY_SHIELD, Moves.SAPPY_SEED ], - [Species.KLINK]: [ Moves.FLARE_BLITZ, Moves.HIGH_HORSEPOWER, Moves.FUSION_BOLT, Moves.DOUBLE_IRON_BASH ], + [Species.KLINK]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FUSION_BOLT, Moves.DOUBLE_IRON_BASH ], [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.ASTRAL_BARRAGE ], + [Species.ELGYEM]: [ Moves.LUSTER_PURGE, Moves.TRICK_ROOM, Moves.AURA_SPHERE, Moves.TAIL_GLOW ], [Species.LITWICK]: [ Moves.FIERY_DANCE, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.ASTRAL_BARRAGE ], - [Species.AXEW]: [ Moves.GLAIVE_RUSH, Moves.DIRE_CLAW, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], + [Species.AXEW]: [ Moves.STONE_AXE, Moves.DIRE_CLAW, Moves.BITTER_BLADE, Moves.GLAIVE_RUSH ], [Species.CUBCHOO]: [ Moves.TRIPLE_AXEL, Moves.LIQUIDATION, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], - [Species.CRYOGONAL]: [ Moves.SURF, Moves.AURORA_VEIL, Moves.NASTY_PLOT, Moves.FREEZY_FROST ], + [Species.CRYOGONAL]: [ Moves.FREEZING_GLARE, Moves.AURORA_VEIL, Moves.NASTY_PLOT, Moves.ORIGIN_PULSE ], [Species.SHELMET]: [ Moves.POWER_GEM, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.STEAM_ERUPTION ], - [Species.STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.EARTHQUAKE, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], + [Species.STUNFISK]: [ Moves.BANEFUL_BUNKER, Moves.SANDSEAR_STORM, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], [Species.MIENFOO]: [ Moves.GUNK_SHOT, Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.MOUNTAIN_GALE ], [Species.DRUDDIGON]: [ Moves.FIRE_LASH, Moves.ROOST, Moves.DRAGON_DARTS, Moves.CLANGOROUS_SOUL ], [Species.GOLETT]: [ Moves.SHIFT_GEAR, Moves.DRAIN_PUNCH, Moves.HEADLONG_RUSH, Moves.RAGE_FIST ], [Species.PAWNIARD]: [ Moves.SUCKER_PUNCH, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.LAST_RESPECTS ], [Species.BOUFFALANT]: [ Moves.SLACK_OFF, Moves.JUMP_KICK, Moves.HEAD_SMASH, Moves.FLARE_BLITZ ], - [Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.MOONBLAST, Moves.HEAT_WAVE, Moves.BOLT_BEAK ], - [Species.VULLABY]: [ Moves.TOXIC, Moves.BODY_PRESS, Moves.ROOST, Moves.TOPSY_TURVY ], + [Species.RUFFLET]: [ Moves.FLOATY_FALL, Moves.AURA_SPHERE, Moves.NO_RETREAT, Moves.BOLT_BEAK ], + [Species.VULLABY]: [ Moves.FOUL_PLAY, Moves.BODY_PRESS, Moves.ROOST, Moves.RUINATION ], [Species.HEATMOR]: [ Moves.EARTH_POWER, Moves.OVERHEAT, Moves.THUNDERBOLT, Moves.V_CREATE ], [Species.DURANT]: [ Moves.HIGH_HORSEPOWER, Moves.FIRST_IMPRESSION, Moves.SWORDS_DANCE, Moves.BEHEMOTH_BASH ], - [Species.DEINO]: [ Moves.FIERY_WRATH, Moves.ESPER_WING, Moves.SLUDGE_WAVE, Moves.FICKLE_BEAM ], + [Species.DEINO]: [ Moves.FIERY_WRATH, Moves.ESPER_WING, Moves.SLUDGE_BOMB, Moves.FICKLE_BEAM ], [Species.LARVESTA]: [ Moves.THUNDERBOLT, Moves.MATCHA_GOTCHA, Moves.EARTH_POWER, Moves.TORCH_SONG ], [Species.COBALION]: [ Moves.BEHEMOTH_BLADE, Moves.BODY_PRESS, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], [Species.TERRAKION]: [ Moves.MIGHTY_CLEAVE, Moves.HEADLONG_RUSH, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], [Species.VIRIZION]: [ Moves.PSYBLADE, Moves.SAPPY_SEED, Moves.CEASELESS_EDGE, Moves.VICTORY_DANCE ], - [Species.TORNADUS]: [ Moves.EARTH_POWER, Moves.U_TURN, Moves.ICE_BEAM, Moves.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.TORNADUS]: [ Moves.EARTH_POWER, Moves.PARTING_SHOT, Moves.ICE_BEAM, Moves.OBLIVION_WING ], + [Species.THUNDURUS]: [ Moves.EARTH_POWER, Moves.HURRICANE, Moves.FROST_BREATH, Moves.ELECTRO_SHOT ], + [Species.RESHIRAM]: [ Moves.MORNING_SUN, Moves.TAKE_HEART, Moves.FICKLE_BEAM, Moves.ERUPTION ], [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.DRAGON_DARTS, Moves.DRAGON_ENERGY, Moves.NO_RETREAT, Moves.GLACIAL_LANCE ], + [Species.LANDORUS]: [ Moves.STONE_AXE, Moves.FLOATY_FALL, Moves.ROOST, Moves.BLEAKWIND_STORM ], + [Species.KYUREM]: [ Moves.DRAGON_DARTS, Moves.CORE_ENFORCER, Moves.NO_RETREAT, 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.TRIPLE_ARROWS, Moves.BOOMBURST ], + [Species.MELOETTA]: [ Moves.VICTORY_DANCE, Moves.QUIVER_DANCE, Moves.TRIPLE_ARROWS, Moves.TORCH_SONG ], [Species.GENESECT]: [ Moves.EXTREME_SPEED, Moves.U_TURN, Moves.TACHYON_CUTTER, Moves.TAIL_GLOW ], - [Species.CHESPIN]: [ Moves.DRAIN_PUNCH, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ], + [Species.CHESPIN]: [ Moves.BODY_PRESS, Moves.SYNTHESIS, Moves.CEASELESS_EDGE, Moves.SAPPY_SEED ], [Species.FENNEKIN]: [ Moves.EXPANDING_FORCE, Moves.MOONBLAST, Moves.THUNDERBOLT, Moves.TORCH_SONG ], - [Species.FROAKIE]: [ Moves.MOONBLAST, Moves.SHELL_SIDE_ARM, Moves.FIERY_WRATH, Moves.WATER_SPOUT ], + [Species.FROAKIE]: [ Moves.MOONBLAST, Moves.SHELL_SIDE_ARM, Moves.FIERY_WRATH, Moves.STEAM_ERUPTION ], [Species.BUNNELBY]: [ Moves.DRAIN_PUNCH, Moves.TIDY_UP, Moves.FACADE, Moves.EXTREME_SPEED ], - [Species.FLETCHLING]: [ Moves.DRILL_RUN, Moves.U_TURN, Moves.HEAD_SMASH, Moves.VOLT_TACKLE ], - [Species.SCATTERBUG]: [ Moves.MOONBLAST, Moves.POLLEN_PUFF, Moves.TAILWIND, Moves.HEAT_WAVE ], + [Species.FLETCHLING]: [ Moves.DRILL_RUN, Moves.BURNING_BULWARK, Moves.HEAD_SMASH, Moves.VOLT_TACKLE ], + [Species.SCATTERBUG]: [ Moves.FOCUS_BLAST, Moves.AFTER_YOU, Moves.DECORATE, Moves.BLIZZARD ], [Species.LITLEO]: [ Moves.EARTH_POWER, Moves.NASTY_PLOT, Moves.YAWN, Moves.TORCH_SONG ], - [Species.FLABEBE]: [ Moves.GLITZY_GLOW, Moves.MYSTICAL_FIRE, Moves.JUNGLE_HEALING, Moves.QUIVER_DANCE ], + [Species.FLABEBE]: [ Moves.GLITZY_GLOW, Moves.MYSTICAL_FIRE, Moves.TAKE_HEART, Moves.SEED_FLARE ], [Species.SKIDDO]: [ Moves.HIGH_HORSEPOWER, Moves.GRASSY_GLIDE, Moves.STONE_AXE, Moves.SAPPY_SEED ], - [Species.PANCHAM]: [ Moves.DRAIN_PUNCH, Moves.FAKE_OUT, Moves.BULLET_PUNCH, Moves.WICKED_BLOW ], + [Species.PANCHAM]: [ Moves.DRAIN_PUNCH, Moves.SUCKER_PUNCH, Moves.METEOR_MASH, Moves.WICKED_BLOW ], [Species.FURFROU]: [ Moves.TIDY_UP, Moves.SLACK_OFF, Moves.COVET, Moves.MULTI_ATTACK ], [Species.ESPURR]: [ Moves.GLARE, Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.PSYSTRIKE ], - [Species.HONEDGE]: [ Moves.TACHYON_CUTTER, Moves.POLTERGEIST, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], + [Species.HONEDGE]: [ Moves.TACHYON_CUTTER, Moves.SHADOW_BONE, 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.MAGICAL_TORQUE, Moves.REVIVAL_BLESSING ], + [Species.SWIRLIX]: [ Moves.BELLY_DRUM, Moves.HEADLONG_RUSH, Moves.MAGICAL_TORQUE, Moves.REVIVAL_BLESSING ], [Species.INKAY]: [ Moves.POWER_TRIP, Moves.SPIN_OUT, Moves.RECOVER, Moves.PSYCHO_BOOST ], [Species.BINACLE]: [ Moves.TRIPLE_AXEL, Moves.ACCELEROCK, Moves.DIRE_CLAW, Moves.MIGHTY_CLEAVE ], - [Species.SKRELP]: [ Moves.RECOVER, Moves.CORE_ENFORCER, Moves.CALM_MIND, Moves.MALIGNANT_CHAIN ], + [Species.SKRELP]: [ Moves.STRENGTH_SAP, Moves.TRICK_ROOM, Moves.CALM_MIND, Moves.CORE_ENFORCER ], [Species.CLAUNCHER]: [ Moves.SHELL_SMASH, Moves.ARMOR_CANNON, Moves.WATER_SHURIKEN, Moves.ORIGIN_PULSE ], [Species.HELIOPTILE]: [ Moves.WEATHER_BALL, Moves.HYDRO_STEAM, Moves.EARTH_POWER, Moves.BOOMBURST ], - [Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.AXE_KICK ], + [Species.TYRUNT]: [ Moves.DRAGON_HAMMER, Moves.FLARE_BLITZ, Moves.VOLT_TACKLE, Moves.SHIFT_GEAR ], [Species.AMAURA]: [ Moves.RECOVER, Moves.AURORA_VEIL, Moves.POWER_GEM, Moves.GEOMANCY ], [Species.HAWLUCHA]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.FLOATY_FALL, Moves.WICKED_BLOW ], [Species.DEDENNE]: [ Moves.BOOMBURST, Moves.FAKE_OUT, Moves.NASTY_PLOT, Moves.REVIVAL_BLESSING ], [Species.CARBINK]: [ Moves.BODY_PRESS, Moves.SHORE_UP, Moves.SPARKLY_SWIRL, Moves.DIAMOND_STORM ], [Species.GOOMY]: [ Moves.SCALD, Moves.RECOVER, Moves.CALM_MIND, Moves.MAKE_IT_RAIN ], - [Species.KLEFKI]: [ Moves.HEAL_BLOCK, Moves.ENCORE, Moves.TOPSY_TURVY, Moves.INSTRUCT ], - [Species.PHANTUMP]: [ Moves.SPIRIT_SHACKLE, Moves.TRICK_ROOM, Moves.SYNTHESIS, Moves.SAPPY_SEED ], + [Species.KLEFKI]: [ Moves.HEAL_BELL, Moves.ENCORE, Moves.TOPSY_TURVY, Moves.INSTRUCT ], + [Species.PHANTUMP]: [ Moves.RAGE_FIST, 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.SEARING_SHOT, Moves.LUMINA_CRASH, Moves.STRENGTH_SAP, Moves.TAIL_GLOW ], - [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.YVELTAL]: [ Moves.SHELL_SIDE_ARM, Moves.POWER_TRIP, Moves.FIERY_WRATH, Moves.CLANGOROUS_SOUL ], + [Species.ZYGARDE]: [ Moves.DRAGON_DARTS, Moves.HEAL_ORDER, Moves.CLANGOROUS_SOUL, Moves.DOUBLE_IRON_BASH ], [Species.DIANCIE]: [ Moves.MAGICAL_TORQUE, Moves.BODY_PRESS, Moves.SHORE_UP, Moves.GEOMANCY ], [Species.HOOPA]: [ Moves.PHOTON_GEYSER, Moves.SECRET_SWORD, Moves.FIERY_WRATH, Moves.SHELL_SMASH ], [Species.VOLCANION]: [ Moves.HYDRO_STEAM, Moves.CALM_MIND, Moves.ENERGY_BALL, Moves.MAGMA_STORM ], - [Species.ROWLET]: [ Moves.THOUSAND_ARROWS, Moves.POLTERGEIST, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], + [Species.ROWLET]: [ Moves.THOUSAND_ARROWS, Moves.SHADOW_BONE, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], [Species.LITTEN]: [ Moves.FAKE_OUT, Moves.PARTING_SHOT, Moves.MORNING_SUN, Moves.SACRED_FIRE ], [Species.POPPLIO]: [ Moves.PSYCHIC_NOISE, Moves.BOUNCY_BUBBLE, Moves.ALLURING_VOICE, Moves.TORCH_SONG ], [Species.PIKIPEK]: [ Moves.DUAL_WINGBEAT, Moves.BONE_RUSH, Moves.BURNING_BULWARK, Moves.POPULATION_BOMB ], @@ -387,68 +387,68 @@ export const speciesEggMoves = { [Species.DEWPIDER]: [ Moves.JET_PUNCH, Moves.SILK_TRAP, Moves.SWORDS_DANCE, Moves.AQUA_STEP ], [Species.FOMANTIS]: [ Moves.SUPERPOWER, Moves.HEADLONG_RUSH, Moves.ICE_HAMMER, Moves.BITTER_BLADE ], [Species.MORELULL]: [ Moves.CALM_MIND, Moves.SAPPY_SEED, Moves.DRAINING_KISS, Moves.MATCHA_GOTCHA ], - [Species.SALANDIT]: [ Moves.FAKE_OUT, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER, Moves.ERUPTION ], - [Species.STUFFUL]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.ICE_HAMMER, Moves.RAGE_FIST ], + [Species.SALANDIT]: [ Moves.SCALD, Moves.SLUDGE_WAVE, Moves.CORE_ENFORCER, Moves.ERUPTION ], + [Species.STUFFUL]: [ Moves.DRAIN_PUNCH, Moves.METEOR_MASH, Moves.TRIPLE_AXEL, Moves.RAGE_FIST ], [Species.BOUNSWEET]: [ Moves.TRIPLE_AXEL, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK, Moves.SAPPY_SEED ], - [Species.COMFEY]: [ Moves.REVIVAL_BLESSING, Moves.POLLEN_PUFF, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA ], + [Species.COMFEY]: [ Moves.REVIVAL_BLESSING, Moves.TAKE_HEART, Moves.STRENGTH_SAP, Moves.MATCHA_GOTCHA ], [Species.ORANGURU]: [ Moves.JUNGLE_HEALING, Moves.YAWN, Moves.FOLLOW_ME, Moves.LUMINA_CRASH ], - [Species.PASSIMIAN]: [ Moves.FAKE_OUT, Moves.SUCKER_PUNCH, Moves.SWORDS_DANCE, Moves.PYRO_BALL ], + [Species.PASSIMIAN]: [ Moves.FAKE_OUT, Moves.SUCKER_PUNCH, Moves.ZING_ZAP, Moves.PYRO_BALL ], [Species.WIMPOD]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.JET_PUNCH, Moves.SURGING_STRIKES ], - [Species.SANDYGAST]: [ Moves.SCORCHING_SANDS, Moves.SPLISHY_SPLASH, Moves.CURSE, Moves.SALT_CURE ], + [Species.SANDYGAST]: [ Moves.SCORCHING_SANDS, Moves.SPLISHY_SPLASH, Moves.TAKE_HEART, Moves.SALT_CURE ], [Species.PYUKUMUKU]: [ Moves.COMEUPPANCE, Moves.BANEFUL_BUNKER, Moves.TOXIC_SPIKES, Moves.SALT_CURE ], - [Species.TYPE_NULL]: [ Moves.DIRE_CLAW, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.NO_RETREAT ], + [Species.TYPE_NULL]: [ Moves.DIRE_CLAW, Moves.RECOVER, Moves.EXTREME_SPEED, Moves.SHELL_SMASH ], [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.COLLISION_COURSE ], [Species.TURTONATOR]: [ Moves.BURNING_BULWARK, Moves.MORNING_SUN, Moves.BODY_PRESS, Moves.CORE_ENFORCER ], [Species.TOGEDEMARU]: [ Moves.FAKE_OUT, Moves.METAL_BURST, Moves.METEOR_MASH, Moves.BOLT_STRIKE ], - [Species.MIMIKYU]: [ Moves.MAGICAL_TORQUE, 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.CORE_ENFORCER, Moves.CLANGOROUS_SOUL ], - [Species.DHELMISE]: [ Moves.POLTERGEIST, Moves.STRENGTH_SAP, Moves.LIQUIDATION, Moves.SAPPY_SEED ], - [Species.JANGMO_O]: [ Moves.OVERDRIVE, Moves.SHELL_SIDE_ARM, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ], + [Species.MIMIKYU]: [ Moves.SPIRIT_BREAK, Moves.TIDY_UP, Moves.BITTER_BLADE, Moves.SPECTRAL_THIEF ], + [Species.BRUXISH]: [ Moves.PLAY_ROUGH, Moves.FIRE_FANG, Moves.DRAGON_DANCE, Moves.SURGING_STRIKES ], + [Species.DRAMPA]: [ Moves.SLACK_OFF, Moves.TRICK_ROOM, Moves.CORE_ENFORCER, Moves.BOOMBURST ], + [Species.DHELMISE]: [ Moves.SHADOW_BONE, Moves.STRENGTH_SAP, Moves.LIQUIDATION, Moves.SAPPY_SEED ], + [Species.JANGMO_O]: [ Moves.BODY_PRESS, Moves.SHELL_SIDE_ARM, Moves.SECRET_SWORD, Moves.GLAIVE_RUSH ], [Species.TAPU_KOKO]: [ Moves.MAGICAL_TORQUE, Moves.TRIPLE_AXEL, Moves.RISING_VOLTAGE, Moves.PLASMA_FISTS ], [Species.TAPU_LELE]: [ Moves.MOONLIGHT, Moves.NASTY_PLOT, Moves.HEAT_WAVE, Moves.EXPANDING_FORCE ], [Species.TAPU_BULU]: [ Moves.SAPPY_SEED, Moves.DRAIN_PUNCH, Moves.MAGICAL_TORQUE, 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.SACRED_FIRE, Moves.PHOTON_GEYSER ], - [Species.NIHILEGO]: [ Moves.STRENGTH_SAP, 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.RECOVER, Moves.BUZZY_BUZZ, Moves.EARTH_POWER, Moves.OBLIVION_WING ], - [Species.KARTANA]: [ Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], - [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.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.COSMOG]: [ Moves.PHOTON_GEYSER, Moves.PRECIPICE_BLADES, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE ], + [Species.NIHILEGO]: [ Moves.STRENGTH_SAP, Moves.MALIGNANT_CHAIN, Moves.EARTH_POWER, Moves.QUIVER_DANCE ], + [Species.BUZZWOLE]: [ Moves.FIRST_IMPRESSION, Moves.COMBAT_TORQUE, Moves.ROCK_WRECKER, Moves.DOUBLE_IRON_BASH ], + [Species.PHEROMOSA]: [ Moves.AURA_SPHERE, Moves.MAKE_IT_RAIN, Moves.ATTACK_ORDER, Moves.DIAMOND_STORM ], + [Species.XURKITREE]: [ Moves.FLAMETHROWER, Moves.GIGA_DRAIN, Moves.TAIL_GLOW, Moves.THUNDERCLAP ], + [Species.CELESTEELA]: [ Moves.RECOVER, Moves.BUZZY_BUZZ, Moves.SANDSEAR_STORM, Moves.OBLIVION_WING ], + [Species.KARTANA]: [ Moves.MIGHTY_CLEAVE, Moves.PSYBLADE, Moves.BITTER_BLADE, Moves.BEHEMOTH_BLADE ], + [Species.GUZZLORD]: [ Moves.SUCKER_PUNCH, Moves.COMEUPPANCE, Moves.SLACK_OFF, Moves.SHED_TAIL ], + [Species.NECROZMA]: [ Moves.CLANGOROUS_SOUL, Moves.SACRED_FIRE, Moves.ASTRAL_BARRAGE, Moves.DYNAMAX_CANNON ], + [Species.MAGEARNA]: [ Moves.STRENGTH_SAP, Moves.EARTH_POWER, Moves.MOONBLAST, Moves.MAKE_IT_RAIN ], + [Species.MARSHADOW]: [ Moves.POWER_UP_PUNCH, Moves.TRIPLE_AXEL, Moves.METEOR_MASH, Moves.STORM_THROW ], + [Species.POIPOLE]: [ Moves.CORE_ENFORCER, Moves.ICE_BEAM, Moves.SEARING_SHOT, Moves.MALIGNANT_CHAIN ], [Species.STAKATAKA]: [ Moves.HEAVY_SLAM, Moves.SHORE_UP, Moves.CURSE, Moves.SALT_CURE ], [Species.BLACEPHALON]: [ Moves.NASTY_PLOT, Moves.AURA_SPHERE, Moves.CHLOROBLAST, 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.PLASMA_FISTS ], [Species.GROOKEY]: [ Moves.HIGH_HORSEPOWER, Moves.CLANGOROUS_SOUL, Moves.GRASSY_GLIDE, Moves.SAPPY_SEED ], [Species.SCORBUNNY]: [ Moves.EXTREME_SPEED, Moves.HIGH_JUMP_KICK, Moves.TRIPLE_AXEL, Moves.BOLT_STRIKE ], - [Species.SOBBLE]: [ Moves.AEROBLAST, Moves.FROST_BREATH, Moves.SEARING_SHOT, Moves.STEAM_ERUPTION ], + [Species.SOBBLE]: [ Moves.AEROBLAST, Moves.FROST_BREATH, Moves.SCORCHING_SANDS, Moves.NASTY_PLOT ], [Species.SKWOVET]: [ Moves.KNOCK_OFF, Moves.SLACK_OFF, Moves.BODY_PRESS, Moves.POPULATION_BOMB ], - [Species.ROOKIDEE]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.IRON_HEAD, Moves.KINGS_SHIELD ], + [Species.ROOKIDEE]: [ Moves.ROOST, Moves.BODY_PRESS, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BASH ], [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.GOSSIFLEUR]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.SAPPY_SEED, Moves.SEED_FLARE ], [Species.WOOLOO]: [ Moves.PSYSHIELD_BASH, Moves.MILK_DRINK, Moves.BODY_PRESS, Moves.MULTI_ATTACK ], - [Species.CHEWTLE]: [ Moves.FIRE_FANG, Moves.ACCELEROCK, Moves.SHELL_SMASH, Moves.FISHIOUS_REND ], - [Species.YAMPER]: [ Moves.ICE_FANG, Moves.SWORDS_DANCE, Moves.THUNDER_FANG, Moves.ZIPPY_ZAP ], + [Species.CHEWTLE]: [ Moves.ICE_FANG, Moves.ACCELEROCK, Moves.SHELL_SMASH, Moves.FISHIOUS_REND ], + [Species.YAMPER]: [ Moves.ICE_FANG, Moves.SWORDS_DANCE, Moves.THUNDER_FANG, Moves.BOLT_STRIKE ], [Species.ROLYCOLY]: [ Moves.BITTER_BLADE, Moves.BODY_PRESS, Moves.BULK_UP, Moves.DIAMOND_STORM ], [Species.APPLIN]: [ Moves.MATCHA_GOTCHA, Moves.DRAGON_HAMMER, Moves.FLOWER_TRICK, Moves.STRENGTH_SAP ], - [Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.STONE_EDGE, Moves.PRECIPICE_BLADES ], + [Species.SILICOBRA]: [ Moves.SHORE_UP, Moves.SHED_TAIL, Moves.MOUNTAIN_GALE, Moves.THOUSAND_ARROWS ], [Species.CRAMORANT]: [ Moves.APPLE_ACID, Moves.SURF, Moves.SCORCHING_SANDS, Moves.OBLIVION_WING ], [Species.ARROKUDA]: [ Moves.SUPERCELL_SLAM, Moves.KNOCK_OFF, Moves.ICE_SPINNER, Moves.FILLET_AWAY ], [Species.TOXEL]: [ Moves.NASTY_PLOT, Moves.BUG_BUZZ, Moves.SPARKLING_ARIA, Moves.TORCH_SONG ], - [Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.VICTORY_DANCE ], + [Species.SIZZLIPEDE]: [ Moves.BURNING_BULWARK, Moves.ZING_ZAP, Moves.FIRST_IMPRESSION, Moves.BITTER_BLADE ], [Species.CLOBBOPUS]: [ Moves.STORM_THROW, Moves.JET_PUNCH, Moves.MACH_PUNCH, Moves.SURGING_STRIKES ], [Species.SINISTEA]: [ Moves.SCALD, Moves.TAKE_HEART, Moves.SPARKLY_SWIRL, Moves.MATCHA_GOTCHA ], [Species.HATENNA]: [ Moves.RECOVER, Moves.MOONBLAST, Moves.BUZZY_BUZZ, Moves.SEARING_SHOT ], [Species.IMPIDIMP]: [ Moves.ENCORE, Moves.PARTING_SHOT, Moves.TOPSY_TURVY, Moves.WICKED_BLOW ], - [Species.MILCERY]: [ Moves.MOONBLAST, Moves.SYRUP_BOMB, Moves.EARTH_POWER, Moves.SEARING_SHOT ], + [Species.MILCERY]: [ Moves.MOONBLAST, Moves.CHILLY_RECEPTION, Moves.EARTH_POWER, Moves.GEOMANCY ], [Species.FALINKS]: [ Moves.COMBAT_TORQUE, Moves.PSYSHIELD_BASH, Moves.HEAL_ORDER, Moves.POPULATION_BOMB ], [Species.PINCURCHIN]: [ Moves.TRICK_ROOM, Moves.RISING_VOLTAGE, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], [Species.SNOM]: [ Moves.MOONBLAST, Moves.SURF, Moves.EARTH_POWER, Moves.FIERY_DANCE ], @@ -458,16 +458,16 @@ export const speciesEggMoves = { [Species.MORPEKO]: [ Moves.TRIPLE_AXEL, Moves.OBSTRUCT, Moves.SWORDS_DANCE, Moves.COLLISION_COURSE ], [Species.CUFANT]: [ Moves.LIQUIDATION, Moves.CURSE, Moves.COMBAT_TORQUE, Moves.GIGATON_HAMMER ], [Species.DRACOZOLT]: [ Moves.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.FIRE_LASH, Moves.DRAGON_DANCE ], - [Species.ARCTOZOLT]: [ Moves.TRIPLE_AXEL, Moves.LIQUIDATION, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], + [Species.ARCTOZOLT]: [ Moves.MOUNTAIN_GALE, Moves.AQUA_STEP, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], [Species.DRACOVISH]: [ Moves.TRIPLE_AXEL, Moves.DRAGON_HAMMER, Moves.THUNDER_FANG, Moves.DRAGON_DANCE ], - [Species.ARCTOVISH]: [ Moves.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.POWER_UP_PUNCH, Moves.BLAZING_TORQUE, Moves.SPECTRAL_THIEF ], - [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.MIGHTY_CLEAVE, Moves.CEASELESS_EDGE, Moves.BITTER_BLADE ], + [Species.ARCTOVISH]: [ Moves.ICE_FANG, Moves.THUNDER_FANG, Moves.HIGH_HORSEPOWER, Moves.SHIFT_GEAR ], + [Species.DURALUDON]: [ Moves.CORE_ENFORCER, Moves.BODY_PRESS, Moves.RECOVER, Moves.TACHYON_CUTTER ], + [Species.DREEPY]: [ Moves.SHADOW_BONE, Moves.POWER_UP_PUNCH, Moves.BLAZING_TORQUE, Moves.GLAIVE_RUSH ], + [Species.ZACIAN]: [ Moves.MAGICAL_TORQUE, Moves.MIGHTY_CLEAVE, Moves.BITTER_BLADE, Moves.PRECIPICE_BLADES ], [Species.ZAMAZENTA]: [ Moves.PSYSHIELD_BASH, Moves.BODY_PRESS, Moves.SLACK_OFF, Moves.VICTORY_DANCE ], - [Species.ETERNATUS]: [ Moves.BODY_PRESS, Moves.DRAGON_ENERGY, Moves.MALIGNANT_CHAIN, Moves.TAIL_GLOW ], + [Species.ETERNATUS]: [ Moves.BODY_PRESS, Moves.NASTY_PLOT, Moves.MALIGNANT_CHAIN, Moves.DRAGON_ENERGY ], [Species.KUBFU]: [ Moves.METEOR_MASH, Moves.DRAIN_PUNCH, Moves.JET_PUNCH, Moves.DRAGON_DANCE ], - [Species.ZARUDE]: [ Moves.SAPPY_SEED, Moves.PARTING_SHOT, Moves.WICKED_BLOW, Moves.VICTORY_DANCE ], + [Species.ZARUDE]: [ Moves.SAPPY_SEED, Moves.MIGHTY_CLEAVE, Moves.WICKED_BLOW, Moves.VICTORY_DANCE ], [Species.REGIELEKI]: [ Moves.NASTY_PLOT, Moves.ICE_BEAM, Moves.EARTH_POWER, Moves.ELECTRO_DRIFT ], [Species.REGIDRAGO]: [ Moves.METEOR_MASH, Moves.FLAMETHROWER, Moves.TAKE_HEART, Moves.DRAGON_DARTS ], [Species.GLASTRIER]: [ Moves.TRICK_ROOM, Moves.SLACK_OFF, Moves.HIGH_HORSEPOWER, Moves.GLACIAL_LANCE ], @@ -476,8 +476,8 @@ export const speciesEggMoves = { [Species.ENAMORUS]: [ Moves.FLEUR_CANNON, Moves.TAKE_HEART, Moves.STORED_POWER, Moves.OBLIVION_WING ], [Species.SPRIGATITO]: [ Moves.FIRE_LASH, Moves.TRIPLE_AXEL, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], [Species.FUECOCO]: [ Moves.ALLURING_VOICE, Moves.SLACK_OFF, Moves.OVERDRIVE, Moves.MOONGEIST_BEAM ], - [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.TROP_KICK, Moves.THUNDEROUS_KICK ], - [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.BLAZING_TORQUE, Moves.FILLET_AWAY, Moves.MULTI_ATTACK ], + [Species.QUAXLY]: [ Moves.DRAGON_DANCE, Moves.TRIPLE_AXEL, Moves.POWER_TRIP, Moves.THUNDEROUS_KICK ], + [Species.LECHONK]: [ Moves.MILK_DRINK, Moves.PSYSHIELD_BASH, Moves.FILLET_AWAY, Moves.MULTI_ATTACK ], [Species.TAROUNTULA]: [ Moves.STONE_AXE, Moves.LEECH_LIFE, Moves.THIEF, Moves.SPORE ], [Species.NYMBLE]: [ Moves.KNOCK_OFF, Moves.FELL_STINGER, Moves.ATTACK_ORDER, Moves.WICKED_BLOW ], [Species.PAWMI]: [ Moves.DRAIN_PUNCH, Moves.ICE_PUNCH, Moves.MACH_PUNCH, Moves.PLASMA_FISTS ], @@ -488,7 +488,7 @@ export const speciesEggMoves = { [Species.NACLI]: [ Moves.BODY_PRESS, Moves.TOXIC, Moves.CURSE, Moves.DIAMOND_STORM ], [Species.CHARCADET]: [ Moves.SACRED_SWORD, Moves.PHOTON_GEYSER, Moves.MOONBLAST, Moves.SPECTRAL_THIEF ], [Species.TADBULB]: [ Moves.PARABOLIC_CHARGE, Moves.SCALD, Moves.EARTH_POWER, Moves.ELECTRO_SHOT ], - [Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.TAILWIND, Moves.HEAT_WAVE, Moves.ELECTRO_SHOT ], + [Species.WATTREL]: [ Moves.NASTY_PLOT, Moves.SPLISHY_SPLASH, Moves.SANDSEAR_STORM, Moves.ELECTRO_SHOT ], [Species.MASCHIFF]: [ Moves.PARTING_SHOT, Moves.CLOSE_COMBAT, Moves.PSYCHIC_FANGS, Moves.NO_RETREAT ], [Species.SHROODLE]: [ Moves.GASTRO_ACID, Moves.PARTING_SHOT, Moves.TOXIC, Moves.SKETCH ], [Species.BRAMBLIN]: [ Moves.TAILWIND, Moves.STRENGTH_SAP, Moves.FLOWER_TRICK, Moves.LAST_RESPECTS ], @@ -507,34 +507,34 @@ export const speciesEggMoves = { [Species.GLIMMET]: [ Moves.CALM_MIND, Moves.EARTH_POWER, Moves.FIERY_DANCE, Moves.MALIGNANT_CHAIN ], [Species.GREAVARD]: [ Moves.SHADOW_BONE, Moves.YAWN, Moves.SHORE_UP, Moves.COLLISION_COURSE ], [Species.FLAMIGO]: [ Moves.THUNDEROUS_KICK, Moves.TRIPLE_AXEL, Moves.FLOATY_FALL, Moves.VICTORY_DANCE ], - [Species.CETODDLE]: [ Moves.TRIPLE_AXEL, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.DRAGON_DANCE ], - [Species.VELUZA]: [ Moves.CEASELESS_EDGE, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.PSYBLADE ], + [Species.CETODDLE]: [ Moves.MOUNTAIN_GALE, Moves.HIGH_HORSEPOWER, Moves.RECOVER, Moves.DRAGON_DANCE ], + [Species.VELUZA]: [ Moves.PSYBLADE, Moves.FLIP_TURN, Moves.ICE_SPINNER, Moves.BITTER_BLADE ], [Species.DONDOZO]: [ Moves.SOFT_BOILED, Moves.ICE_SPINNER, Moves.TOXIC, Moves.SALT_CURE ], [Species.TATSUGIRI]: [ Moves.ICE_BEAM, Moves.FILLET_AWAY, Moves.CORE_ENFORCER, Moves.STEAM_ERUPTION ], - [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.MORNING_SUN, Moves.DRAGON_DANCE, Moves.COLLISION_COURSE ], + [Species.GREAT_TUSK]: [ Moves.STONE_AXE, Moves.MORNING_SUN, Moves.COLLISION_COURSE, Moves.SHIFT_GEAR ], [Species.SCREAM_TAIL]: [ Moves.TORCH_SONG, Moves.GLITZY_GLOW, Moves.MOONLIGHT, Moves.SPARKLY_SWIRL ], - [Species.BRUTE_BONNET]: [ Moves.DARKEST_LARIAT, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.SAPPY_SEED ], + [Species.BRUTE_BONNET]: [ Moves.SAPPY_SEED, Moves.STRENGTH_SAP, Moves.EARTHQUAKE, Moves.WICKED_BLOW ], [Species.FLUTTER_MANE]: [ Moves.MOONLIGHT, Moves.FLAMETHROWER, Moves.EARTH_POWER, Moves.ASTRAL_BARRAGE ], - [Species.SLITHER_WING]: [ Moves.KNOCK_OFF, Moves.VICTORY_DANCE, Moves.FIRE_LASH, Moves.THUNDEROUS_KICK ], + [Species.SLITHER_WING]: [ Moves.MIGHTY_CLEAVE, Moves.THUNDEROUS_KICK, Moves.FIRE_LASH, Moves.VICTORY_DANCE ], [Species.SANDY_SHOCKS]: [ Moves.MORNING_SUN, Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.THUNDERCLAP ], - [Species.IRON_TREADS]: [ Moves.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_TREADS]: [ Moves.FUSION_BOLT, Moves.BULK_UP, Moves.SHORE_UP, Moves.SUNSTEEL_STRIKE ], + [Species.IRON_BUNDLE]: [ Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE, Moves.NASTY_PLOT, Moves.STEAM_ERUPTION ], [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.HEAT_WAVE, Moves.QUIVER_DANCE, Moves.MALIGNANT_CHAIN ], + [Species.IRON_MOTH]: [ Moves.EARTH_POWER, Moves.SEARING_SHOT, Moves.QUIVER_DANCE, Moves.MALIGNANT_CHAIN ], [Species.IRON_THORNS]: [ Moves.DIAMOND_STORM, Moves.SHORE_UP, Moves.SHIFT_GEAR, Moves.PLASMA_FISTS ], [Species.FRIGIBAX]: [ Moves.DRAGON_DARTS, Moves.DRAGON_DANCE, Moves.EARTHQUAKE, Moves.GLACIAL_LANCE ], - [Species.GIMMIGHOUL]: [ Moves.ARMOR_CANNON, Moves.STORED_POWER, Moves.EARTH_POWER, Moves.ASTRAL_BARRAGE ], + [Species.GIMMIGHOUL]: [ Moves.HAPPY_HOUR, Moves.AURA_SPHERE, Moves.SURF, Moves.ASTRAL_BARRAGE ], [Species.WO_CHIEN]: [ Moves.SPORE, Moves.FIERY_WRATH, Moves.SAPPY_SEED, Moves.STRENGTH_SAP ], [Species.CHIEN_PAO]: [ Moves.KNOCK_OFF, Moves.PARTING_SHOT, Moves.BITTER_BLADE, Moves.GLACIAL_LANCE ], [Species.TING_LU]: [ Moves.SHORE_UP, Moves.WICKED_BLOW, Moves.SAPPY_SEED, Moves.THOUSAND_ARROWS ], - [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.TORCH_SONG, Moves.ERUPTION ], + [Species.CHI_YU]: [ Moves.FIERY_WRATH, Moves.HYDRO_STEAM, Moves.MORNING_SUN, Moves.BLUE_FLARE ], [Species.ROARING_MOON]: [ Moves.FIRE_LASH, Moves.DRAGON_HAMMER, Moves.SUCKER_PUNCH, Moves.WICKED_BLOW ], [Species.IRON_VALIANT]: [ Moves.PLASMA_FISTS, Moves.NO_RETREAT, Moves.SECRET_SWORD, Moves.MAGICAL_TORQUE ], - [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.KORAIDON]: [ Moves.SUNSTEEL_STRIKE, Moves.MORNING_SUN, Moves.DRAGON_DARTS, Moves.BITTER_BLADE ], + [Species.MIRAIDON]: [ Moves.ICE_BEAM, Moves.CLANGOROUS_SOUL, Moves.CORE_ENFORCER, Moves.RISING_VOLTAGE ], + [Species.WALKING_WAKE]: [ Moves.CORE_ENFORCER, Moves.NASTY_PLOT, Moves.EARTH_POWER, Moves.BOUNCY_BUBBLE ], + [Species.IRON_LEAVES]: [ Moves.BITTER_BLADE, Moves.U_TURN, Moves.MIGHTY_CLEAVE, Moves.VICTORY_DANCE ], [Species.POLTCHAGEIST]: [ Moves.SHELL_SMASH, Moves.BOUNCY_BUBBLE, Moves.LEECH_SEED, Moves.SPARKLY_SWIRL ], [Species.OKIDOGI]: [ Moves.DRAIN_PUNCH, Moves.KNOCK_OFF, Moves.DIRE_CLAW, Moves.VICTORY_DANCE ], [Species.MUNKIDORI]: [ Moves.PSYSTRIKE, Moves.HEAT_WAVE, Moves.EARTH_POWER, Moves.MALIGNANT_CHAIN ], @@ -543,34 +543,34 @@ export const speciesEggMoves = { [Species.GOUGING_FIRE]: [ Moves.SUPERCELL_SLAM, Moves.BULK_UP, Moves.SACRED_FIRE, Moves.GLAIVE_RUSH ], [Species.RAGING_BOLT]: [ Moves.NASTY_PLOT, Moves.FLAMETHROWER, Moves.MORNING_SUN, Moves.ELECTRO_DRIFT ], [Species.IRON_BOULDER]: [ Moves.PSYBLADE, Moves.KOWTOW_CLEAVE, Moves.STONE_AXE, Moves.BITTER_BLADE ], - [Species.IRON_CROWN]: [ Moves.NASTY_PLOT, Moves.SECRET_SWORD, Moves.PHOTON_GEYSER, Moves.ELECTRO_DRIFT ], + [Species.IRON_CROWN]: [ Moves.NASTY_PLOT, Moves.SECRET_SWORD, Moves.PSYSTRIKE, Moves.ELECTRO_DRIFT ], [Species.TERAPAGOS]: [ Moves.MOONBLAST, Moves.RECOVER, Moves.ICE_BEAM, Moves.SHELL_SMASH ], - [Species.PECHARUNT]: [ Moves.TOXIC_SPIKES, Moves.BODY_PRESS, Moves.HEX, Moves.BANEFUL_BUNKER ], - [Species.ALOLA_RATTATA]: [ Moves.STORM_THROW, Moves.PLAY_ROUGH, Moves.TIDY_UP, Moves.POPULATION_BOMB ], + [Species.PECHARUNT]: [ Moves.TAKE_HEART, Moves.BODY_PRESS, Moves.SAPPY_SEED, Moves.KINGS_SHIELD ], + [Species.ALOLA_RATTATA]: [ Moves.FALSE_SURRENDER, Moves.PSYCHIC_FANGS, Moves.COIL, Moves.EXTREME_SPEED ], [Species.ALOLA_SANDSHREW]: [ Moves.SPIKY_SHIELD, Moves.AQUA_CUTTER, Moves.SHIFT_GEAR, Moves.GLACIAL_LANCE ], - [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.PARTING_SHOT, Moves.FLAMETHROWER, Moves.FREEZY_FROST ], + [Species.ALOLA_VULPIX]: [ Moves.MOONBLAST, Moves.PARTING_SHOT, Moves.FLAMETHROWER, Moves.REVIVAL_BLESSING ], [Species.ALOLA_DIGLETT]: [ Moves.THOUSAND_WAVES, Moves.SWORDS_DANCE, Moves.TRIPLE_DIVE, Moves.MOUNTAIN_GALE ], [Species.ALOLA_MEOWTH]: [ Moves.BADDY_BAD, Moves.BUZZY_BUZZ, Moves.PARTING_SHOT, Moves.MAKE_IT_RAIN ], - [Species.ALOLA_GEODUDE]: [ Moves.HIGH_HORSEPOWER, Moves.BULK_UP, Moves.STONE_AXE, Moves.EXTREME_SPEED ], - [Species.ALOLA_GRIMER]: [ Moves.SUCKER_PUNCH, Moves.DIRE_CLAW, Moves.STRENGTH_SAP, Moves.SURGING_STRIKES ], - [Species.ETERNAL_FLOETTE]: [ Moves.FIERY_DANCE, Moves.CHLOROBLAST, Moves.POLLEN_PUFF, Moves.QUIVER_DANCE ], + [Species.ALOLA_GEODUDE]: [ Moves.THOUSAND_WAVES, Moves.BULK_UP, Moves.STONE_AXE, Moves.EXTREME_SPEED ], + [Species.ALOLA_GRIMER]: [ Moves.SUCKER_PUNCH, Moves.BARB_BARRAGE, Moves.STRENGTH_SAP, Moves.SURGING_STRIKES ], + [Species.ETERNAL_FLOETTE]: [ Moves.MIND_BLOWN, Moves.CHLOROBLAST, Moves.PHOTON_GEYSER, Moves.QUIVER_DANCE ], [Species.GALAR_MEOWTH]: [ Moves.AQUA_CUTTER, Moves.KNOCK_OFF, Moves.BULLET_PUNCH, Moves.BEHEMOTH_BASH ], - [Species.GALAR_PONYTA]: [ Moves.SPIRIT_BREAK, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.PHOTON_GEYSER ], + [Species.GALAR_PONYTA]: [ Moves.MAGICAL_TORQUE, Moves.EXTREME_SPEED, Moves.FLARE_BLITZ, Moves.PHOTON_GEYSER ], [Species.GALAR_SLOWPOKE]: [ Moves.TRICK_ROOM, Moves.BADDY_BAD, Moves.MOONBLAST, Moves.TORCH_SONG ], [Species.GALAR_FARFETCHD]: [ Moves.ROOST, Moves.SACRED_SWORD, Moves.KINGS_SHIELD, Moves.BEHEMOTH_BLADE ], - [Species.GALAR_ARTICUNO]: [ Moves.AURA_SPHERE, Moves.OBLIVION_WING, Moves.ICE_BEAM, Moves.PSYSTRIKE ], + [Species.GALAR_ARTICUNO]: [ Moves.SECRET_SWORD, Moves.NIGHT_DAZE, Moves.ICE_BEAM, Moves.OBLIVION_WING ], [Species.GALAR_ZAPDOS]: [ Moves.TIDY_UP, Moves.FLOATY_FALL, Moves.ROOST, Moves.BOLT_BEAK ], [Species.GALAR_MOLTRES]: [ Moves.ROOST, Moves.SLUDGE_BOMB, Moves.FLAMETHROWER, Moves.OBLIVION_WING ], - [Species.GALAR_CORSOLA]: [ Moves.SHELL_SMASH, Moves.MOONBLAST, Moves.COSMIC_POWER, Moves.ASTRAL_BARRAGE ], + [Species.GALAR_CORSOLA]: [ Moves.SHELL_SMASH, Moves.AURA_SPHERE, Moves.INFERNAL_PARADE, Moves.ASTRAL_BARRAGE ], [Species.GALAR_ZIGZAGOON]: [ Moves.CEASELESS_EDGE, Moves.FACADE, Moves.PARTING_SHOT, Moves.EXTREME_SPEED ], [Species.GALAR_DARUMAKA]: [ Moves.ICE_SPINNER, Moves.ENDURE, Moves.DRAIN_PUNCH, Moves.V_CREATE ], [Species.GALAR_YAMASK]: [ Moves.STRENGTH_SAP, Moves.DIRE_CLAW, Moves.THOUSAND_WAVES, Moves.SPECTRAL_THIEF ], - [Species.GALAR_STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.EARTHQUAKE, Moves.STRENGTH_SAP, Moves.THUNDERCLAP ], + [Species.GALAR_STUNFISK]: [ Moves.SPIKY_SHIELD, Moves.THOUSAND_ARROWS, Moves.STRENGTH_SAP, Moves.DOUBLE_IRON_BASH ], [Species.HISUI_GROWLITHE]: [ Moves.WOOD_HAMMER, Moves.HEAD_SMASH, Moves.MORNING_SUN, Moves.DRAGON_DANCE ], - [Species.HISUI_VOLTORB]: [ Moves.ICE_BEAM, Moves.NASTY_PLOT, Moves.RISING_VOLTAGE, Moves.SEED_FLARE ], + [Species.HISUI_VOLTORB]: [ Moves.FROST_BREATH, Moves.NASTY_PLOT, Moves.APPLE_ACID, Moves.ELECTRO_DRIFT ], [Species.HISUI_QWILFISH]: [ Moves.CEASELESS_EDGE, Moves.KNOCK_OFF, Moves.STRENGTH_SAP, Moves.FISHIOUS_REND ], [Species.HISUI_SNEASEL]: [ Moves.THUNDEROUS_KICK, Moves.KNOCK_OFF, Moves.TRIPLE_AXEL, Moves.VICTORY_DANCE ], - [Species.HISUI_ZORUA]: [ Moves.MOONBLAST, Moves.AURA_SPHERE, Moves.PARTING_SHOT, Moves.BLOOD_MOON ], + [Species.HISUI_ZORUA]: [ Moves.MOONBLAST, Moves.HYPER_VOICE, Moves.PARTING_SHOT, Moves.BLOOD_MOON ], [Species.PALDEA_TAUROS]: [ Moves.NO_RETREAT, Moves.BLAZING_TORQUE, Moves.AQUA_STEP, Moves.THUNDEROUS_KICK ], [Species.PALDEA_WOOPER]: [ Moves.RECOVER, Moves.STONE_AXE, Moves.BANEFUL_BUNKER, Moves.SAPPY_SEED ], [Species.BLOODMOON_URSALUNA]: [ Moves.NASTY_PLOT, Moves.TRICK_ROOM, Moves.THUNDERBOLT, Moves.BOOMBURST ] diff --git a/src/data/move.ts b/src/data/move.ts index fad88e19470..1608d1c0900 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1,5 +1,4 @@ import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from "./battle-anims"; -import { BattleEndPhase, MoveEndPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchPhase, SwitchSummonPhase } from "../phases"; import { BattleStat, getBattleStatName } from "./battle-stat"; import { EncoreTag, GulpMissileTag, HelpingHandTag, SemiInvulnerableTag, ShellTrapTag, StockpilingTag, TrappedTag, TypeBoostTag } from "./battler-tags"; import { getPokemonNameWithAffix } from "../messages"; @@ -28,6 +27,15 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { MoveUsedEvent } from "#app/events/battle-scene.js"; +import { PartyStatusCurePhase } from "#app/phases/party-status-cure-phase.js"; +import { BattleEndPhase } from "#app/phases/battle-end-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { NewBattlePhase } from "#app/phases/new-battle-phase.js"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; +import { SwitchPhase } from "#app/phases/switch-phase.js"; +import { SwitchSummonPhase } from "#app/phases/switch-summon-phase.js"; export enum MoveCategory { PHYSICAL, @@ -4457,6 +4465,39 @@ export class GulpMissileTagAttr extends MoveEffectAttr { } } +/** + * Attribute to implement Jaw Lock's linked trapping effect between the user and target + * @extends AddBattlerTagAttr + */ +export class JawLockAttr extends AddBattlerTagAttr { + constructor() { + super(BattlerTagType.TRAPPED); + } + + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + if (!super.canApply(user, target, move, args)) { + return false; + } + + // If either the user or the target already has the tag, do not apply + if (user.getTag(TrappedTag) || target.getTag(TrappedTag)) { + return false; + } + + const moveChance = this.getMoveChance(user, target, move, this.selfTarget); + if (moveChance < 0 || moveChance === 100 || user.randSeedInt(100) < moveChance) { + /** + * Add the tag to both the user and the target. + * The target's tag source is considered to be the user and vice versa + */ + return target.addTag(BattlerTagType.TRAPPED, 1, move.id, user.id) + && user.addTag(BattlerTagType.TRAPPED, 1, move.id, target.id); + } + + return false; + } +} + export class CurseAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move:Move, args: any[]): boolean { @@ -4468,7 +4509,7 @@ export class CurseAttr extends MoveEffectAttr { const curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2)); user.damageAndUpdate(curseRecoilDamage, HitResult.OTHER, false, true, true); user.scene.queueMessage( - i18next.t("battle:cursedOnAdd", { + i18next.t("battlerTags:cursedOnAdd", { pokemonNameWithAffix: getPokemonNameWithAffix(user), pokemonName: getPokemonNameWithAffix(target) }) @@ -7552,7 +7593,7 @@ export function initMoves() { .attr(OpponentHighHpPowerAttr, 120), new AttackMove(Moves.MAGMA_STORM, Type.FIRE, MoveCategory.SPECIAL, 100, 75, 5, -1, 0, 4) .attr(TrapAttr, BattlerTagType.MAGMA_STORM), - new StatusMove(Moves.DARK_VOID, Type.DARK, 50, 10, -1, 0, 4) + new StatusMove(Moves.DARK_VOID, Type.DARK, 80, 10, -1, 0, 4) //Accuracy from Generations 4-6 .attr(StatusEffectAttr, StatusEffect.SLEEP) .target(MoveTarget.ALL_NEAR_ENEMIES), new AttackMove(Moves.SEED_FLARE, Type.GRASS, MoveCategory.SPECIAL, 120, 85, 5, 40, 0, 4) @@ -8391,8 +8432,7 @@ export function initMoves() { .attr(HighCritAttr) .attr(BypassRedirectAttr), new AttackMove(Moves.JAW_LOCK, Type.DARK, MoveCategory.PHYSICAL, 80, 100, 10, -1, 0, 8) - .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, false, false, 1, 1, false, true) - .attr(AddBattlerTagAttr, BattlerTagType.TRAPPED, true, false, 1, 1, false, true) + .attr(JawLockAttr) .bitingMove(), new SelfStatusMove(Moves.STUFF_CHEEKS, Type.NORMAL, -1, 10, -1, 0, 8) // TODO: Stuff Cheeks should not be selectable when the user does not have a berry, see wiki .attr(EatBerryAttr) diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index 5180664ce07..95a89c7c640 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -837,6 +837,8 @@ export const pokemonFormChanges: PokemonFormChanges = { new SpeciesFormChange(Species.CRAMORANT, "", "gorging", new SpeciesFormChangeManualTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)), new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeManualTrigger, true), new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeManualTrigger, true), + new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeActiveTrigger(false), true), + new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeActiveTrigger(false), true), ] }; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index 31de12a837b..aa2c29a9725 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -2729,8 +2729,8 @@ export const speciesStarters = { [Species.VOLTORB]: 2, [Species.EXEGGCUTE]: 3, [Species.CUBONE]: 3, - [Species.HITMONLEE]: 5, - [Species.HITMONCHAN]: 5, + [Species.HITMONLEE]: 4, + [Species.HITMONCHAN]: 4, [Species.LICKITUNG]: 3, [Species.KOFFING]: 2, [Species.RHYHORN]: 3, @@ -3003,7 +3003,7 @@ export const speciesStarters = { [Species.FERROSEED]: 3, [Species.KLINK]: 3, [Species.TYNAMO]: 2, - [Species.ELGYEM]: 3, + [Species.ELGYEM]: 2, [Species.LITWICK]: 3, [Species.AXEW]: 4, [Species.CUBCHOO]: 2, @@ -3136,9 +3136,9 @@ export const speciesStarters = { [Species.ALOLA_GEODUDE]: 3, [Species.ALOLA_GRIMER]: 3, - [Species.GROOKEY]: 4, + [Species.GROOKEY]: 3, [Species.SCORBUNNY]: 4, - [Species.SOBBLE]: 4, + [Species.SOBBLE]: 3, [Species.SKWOVET]: 2, [Species.ROOKIDEE]: 3, [Species.BLIPBUG]: 2, @@ -3253,7 +3253,7 @@ export const speciesStarters = { [Species.IRON_MOTH]: 6, [Species.IRON_THORNS]: 6, [Species.FRIGIBAX]: 4, - [Species.GIMMIGHOUL]: 5, + [Species.GIMMIGHOUL]: 4, [Species.WO_CHIEN]: 6, [Species.CHIEN_PAO]: 7, [Species.TING_LU]: 6, @@ -3366,7 +3366,7 @@ export const starterPassiveAbilities = { [Species.RHYHORN]: Abilities.FILTER, [Species.TANGELA]: Abilities.SEED_SOWER, [Species.KANGASKHAN]: Abilities.GUTS, - [Species.HORSEA]: Abilities.DRIZZLE, + [Species.HORSEA]: Abilities.DRAGONS_MAW, [Species.GOLDEEN]: Abilities.MULTISCALE, [Species.STARYU]: Abilities.REGENERATOR, [Species.SCYTHER]: Abilities.TINTED_LENS, @@ -3375,7 +3375,7 @@ export const starterPassiveAbilities = { [Species.MAGIKARP]: Abilities.MULTISCALE, [Species.LAPRAS]: Abilities.LIGHTNING_ROD, [Species.DITTO]: Abilities.ADAPTABILITY, - [Species.EEVEE]: Abilities.SIMPLE, + [Species.EEVEE]: Abilities.PICKUP, [Species.PORYGON]: Abilities.PROTEAN, [Species.OMANYTE]: Abilities.STURDY, [Species.KABUTO]: Abilities.TOUGH_CLAWS, @@ -3438,7 +3438,7 @@ export const starterPassiveAbilities = { [Species.SUICUNE]: Abilities.UNAWARE, [Species.LARVITAR]: Abilities.SAND_RUSH, [Species.LUGIA]: Abilities.DELTA_STREAM, - [Species.HO_OH]: Abilities.MAGIC_GUARD, + [Species.HO_OH]: Abilities.DROUGHT, [Species.CELEBI]: Abilities.GRASSY_SURGE, [Species.TREECKO]: Abilities.TINTED_LENS, [Species.TORCHIC]: Abilities.RECKLESS, @@ -3472,7 +3472,7 @@ export const starterPassiveAbilities = { [Species.GULPIN]: Abilities.EARTH_EATER, [Species.CARVANHA]: Abilities.SHEER_FORCE, [Species.WAILMER]: Abilities.LEVITATE, - [Species.NUMEL]: Abilities.STAMINA, + [Species.NUMEL]: Abilities.FUR_COAT, [Species.TORKOAL]: Abilities.ANALYTIC, [Species.SPOINK]: Abilities.PSYCHIC_SURGE, [Species.SPINDA]: Abilities.SIMPLE, @@ -3515,7 +3515,7 @@ export const starterPassiveAbilities = { [Species.DEOXYS]: Abilities.PROTEAN, [Species.TURTWIG]: Abilities.THICK_FAT, [Species.CHIMCHAR]: Abilities.BEAST_BOOST, - [Species.PIPLUP]: Abilities.LIGHTNING_ROD, + [Species.PIPLUP]: Abilities.DRIZZLE, [Species.STARLY]: Abilities.ROCK_HEAD, [Species.BIDOOF]: Abilities.SAP_SIPPER, [Species.KRICKETOT]: Abilities.SHARPNESS, @@ -3559,7 +3559,7 @@ export const starterPassiveAbilities = { [Species.HEATRAN]: Abilities.EARTH_EATER, [Species.REGIGIGAS]: Abilities.MINDS_EYE, [Species.GIRATINA]: Abilities.SHADOW_SHIELD, - [Species.CRESSELIA]: Abilities.MAGIC_BOUNCE, + [Species.CRESSELIA]: Abilities.UNAWARE, [Species.PHIONE]: Abilities.SIMPLE, [Species.MANAPHY]: Abilities.PRIMORDIAL_SEA, [Species.DARKRAI]: Abilities.UNNERVE, @@ -3600,7 +3600,7 @@ export const starterPassiveAbilities = { [Species.YAMASK]: Abilities.PURIFYING_SALT, [Species.TIRTOUGA]: Abilities.WATER_ABSORB, [Species.ARCHEN]: Abilities.MULTISCALE, - [Species.TRUBBISH]: Abilities.NEUTRALIZING_GAS, + [Species.TRUBBISH]: Abilities.TOXIC_DEBRIS, [Species.ZORUA]: Abilities.DARK_AURA, [Species.MINCCINO]: Abilities.FUR_COAT, [Species.GOTHITA]: Abilities.UNNERVE, @@ -3761,7 +3761,7 @@ export const starterPassiveAbilities = { [Species.SINISTEA]: Abilities.SHADOW_SHIELD, [Species.HATENNA]: Abilities.FAIRY_AURA, [Species.IMPIDIMP]: Abilities.FUR_COAT, - [Species.MILCERY]: Abilities.REGENERATOR, + [Species.MILCERY]: Abilities.MISTY_SURGE, [Species.FALINKS]: Abilities.PARENTAL_BOND, [Species.PINCURCHIN]: Abilities.ELECTROMORPHOSIS, [Species.SNOM]: Abilities.SNOW_WARNING, @@ -3771,14 +3771,14 @@ export const starterPassiveAbilities = { [Species.MORPEKO]: Abilities.MOODY, [Species.CUFANT]: Abilities.EARTH_EATER, [Species.DRACOZOLT]: Abilities.NO_GUARD, - [Species.ARCTOZOLT]: Abilities.SNOW_WARNING, + [Species.ARCTOZOLT]: Abilities.TRANSISTOR, [Species.DRACOVISH]: Abilities.SWIFT_SWIM, - [Species.ARCTOVISH]: Abilities.SNOW_WARNING, + [Species.ARCTOVISH]: Abilities.STRONG_JAW, [Species.DURALUDON]: Abilities.STEELWORKER, [Species.DREEPY]: Abilities.PARENTAL_BOND, [Species.ZACIAN]: Abilities.UNNERVE, [Species.ZAMAZENTA]: Abilities.STAMINA, - [Species.ETERNATUS]: Abilities.SUPREME_OVERLORD, + [Species.ETERNATUS]: Abilities.NEUTRALIZING_GAS, [Species.KUBFU]: Abilities.IRON_FIST, [Species.ZARUDE]: Abilities.TOUGH_CLAWS, [Species.REGIELEKI]: Abilities.ELECTRIC_SURGE, @@ -3839,9 +3839,9 @@ export const starterPassiveAbilities = { [Species.FRIGIBAX]: Abilities.SNOW_WARNING, [Species.GIMMIGHOUL]: Abilities.HONEY_GATHER, [Species.WO_CHIEN]: Abilities.VESSEL_OF_RUIN, - [Species.CHIEN_PAO]: Abilities.INTREPID_SWORD, + [Species.CHIEN_PAO]: Abilities.SNOW_WARNING, [Species.TING_LU]: Abilities.STAMINA, - [Species.CHI_YU]: Abilities.DROUGHT, + [Species.CHI_YU]: Abilities.BERSERK, [Species.ROARING_MOON]: Abilities.TOUGH_CLAWS, [Species.IRON_VALIANT]: Abilities.ADAPTABILITY, [Species.KORAIDON]: Abilities.OPPORTUNIST, @@ -3859,7 +3859,7 @@ export const starterPassiveAbilities = { [Species.IRON_CROWN]: Abilities.SHARPNESS, [Species.TERAPAGOS]: Abilities.SOUL_HEART, [Species.PECHARUNT]: Abilities.TOXIC_CHAIN, - [Species.ALOLA_RATTATA]: Abilities.STRONG_JAW, + [Species.ALOLA_RATTATA]: Abilities.ADAPTABILITY, [Species.ALOLA_SANDSHREW]: Abilities.TOUGH_CLAWS, [Species.ALOLA_VULPIX]: Abilities.SHEER_FORCE, [Species.ALOLA_DIGLETT]: Abilities.STURDY, diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 5f47ce42a62..2d54a79441d 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1577,11 +1577,11 @@ export const trainerConfigs: TrainerConfigs = { })), [TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName("Finn").setHasGenders("Ivy").setHasCharSprite().setTitle("Rival").setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm("battle_rival").setMixedBattleBgm("battle_rival").setPartyTemplates(trainerPartyTemplates.RIVAL) - .setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE) + .setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE, () => modifierTypes.SHINY_CHARM, () => modifierTypes.ABILITY_CHARM) .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE, Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY], TrainerSlot.TRAINER, true)) .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK, Species.ROOKIDEE, Species.WATTREL], TrainerSlot.TRAINER, true)), [TrainerType.RIVAL_2]: new TrainerConfig(++t).setName("Finn").setHasGenders("Ivy").setHasCharSprite().setTitle("Rival").setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm("battle_rival").setMixedBattleBgm("battle_rival").setPartyTemplates(trainerPartyTemplates.RIVAL_2) - .setModifierRewardFuncs(() => modifierTypes.EXP_SHARE) + .setModifierRewardFuncs(() => modifierTypes.EXP_SHARE, () => modifierTypes.SHINY_CHARM) .setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT, Species.QUILLADIN, Species.BRAIXEN, Species.FROGADIER, Species.DARTRIX, Species.TORRACAT, Species.BRIONNE, Species.THWACKEY, Species.RABOOT, Species.DRIZZILE, Species.FLORAGATO, Species.CROCALOR, Species.QUAXWELL], TrainerSlot.TRAINER, true)) .setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOTTO, Species.HOOTHOOT, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL, Species.FLETCHINDER, Species.TRUMBEAK, Species.CORVISQUIRE, Species.WATTREL], TrainerSlot.TRAINER, true)) .setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)), diff --git a/src/field/arena.ts b/src/field/arena.ts index 923a0a4e286..eb3770d61d5 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -4,7 +4,6 @@ import { Constructor } from "#app/utils"; import * as Utils from "../utils"; import PokemonSpecies, { getPokemonSpecies } from "../data/pokemon-species"; import { Weather, WeatherType, getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage } from "../data/weather"; -import { CommonAnimPhase } from "../phases"; import { CommonAnim } from "../data/battle-anims"; import { Type } from "../data/type"; import Move from "../data/move"; @@ -21,6 +20,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TimeOfDay } from "#enums/time-of-day"; import { TrainerType } from "#enums/trainer-type"; +import { CommonAnimPhase } from "#app/phases/common-anim-phase.js"; export class Arena { public scene: BattleScene; diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 930ffeb700f..6a445a83b4e 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -17,7 +17,6 @@ import { initMoveAnim, loadMoveAnimAssets } from "../data/battle-anims"; import { Status, StatusEffect, getRandomStatus } from "../data/status-effect"; import { pokemonEvolutions, pokemonPrevolutions, SpeciesFormEvolution, SpeciesEvolutionCondition, FusionSpeciesFormEvolution } from "../data/pokemon-evolutions"; import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "../data/tms"; -import { DamagePhase, FaintPhase, LearnMovePhase, MoveEffectPhase, ObtainStatusEffectPhase, StatChangePhase, SwitchSummonPhase, ToggleDoublePositionPhase, MoveEndPhase } from "../phases"; import { BattleStat } from "../data/battle-stat"; import { BattlerTag, BattlerTagLapseType, EncoreTag, GroundedTag, HighestStatBoostTag, TypeImmuneTag, getBattlerTag, SemiInvulnerableTag, TypeBoostTag, ExposedTag } from "../data/battler-tags"; import { WeatherType } from "../data/weather"; @@ -51,6 +50,15 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { getPokemonNameWithAffix } from "#app/messages.js"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { FaintPhase } from "#app/phases/faint-phase.js"; +import { LearnMovePhase } from "#app/phases/learn-move-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { ObtainStatusEffectPhase } from "#app/phases/obtain-status-effect-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; +import { SwitchSummonPhase } from "#app/phases/switch-summon-phase.js"; +import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase.js"; export enum FieldPosition { CENTER, @@ -921,8 +929,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * by how many learnable moves there are for the {@linkcode Pokemon}. */ getLearnableLevelMoves(): Moves[] { - let levelMoves = this.getLevelMoves(1, true).map(lm => lm[1]); - if (this.metBiome === -1 && !this.scene.gameMode.isFreshStartChallenge()) { + let levelMoves = this.getLevelMoves(1, true, false, true).map(lm => lm[1]); + if (this.metBiome === -1 && !this.scene.gameMode.isFreshStartChallenge() && !this.scene.gameMode.isDaily) { levelMoves = this.getUnlockedEggMoves().concat(levelMoves); } return levelMoves.filter(lm => !this.moveset.some(m => m?.moveId === lm)); @@ -1210,11 +1218,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * * @param source - The Pokémon using the move. * @param move - The move being used. - * @returns The type damage multiplier or undefined if it's a status move + * @returns The type damage multiplier or 1 if it's a status move */ - getMoveEffectiveness(source: Pokemon, move: PokemonMove): TypeDamageMultiplier | undefined { + getMoveEffectiveness(source: Pokemon, move: PokemonMove): TypeDamageMultiplier { if (move.getMove().category === MoveCategory.STATUS) { - return undefined; + return 1; } return this.getAttackMoveEffectiveness(source, move, !this.battleData?.abilityRevealed); @@ -3223,14 +3231,18 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { * Causes a Pokemon to leave the field (such as in preparation for a switch out/escape). * @param clearEffects Indicates if effects should be cleared (true) or passed * to the next pokemon, such as during a baton pass (false) + * @param hideInfo Indicates if this should also play the animation to hide the Pokemon's + * info container. */ - leaveField(clearEffects: boolean = true) { + leaveField(clearEffects: boolean = true, hideInfo: boolean = true) { this.resetTurnData(); if (clearEffects) { this.resetSummonData(); this.resetBattleData(); } - this.hideInfo(); + if (hideInfo) { + this.hideInfo(); + } this.setVisible(false); this.scene.field.remove(this); this.scene.triggerPokemonFormChange(this, SpeciesFormChangeActiveTrigger, true); @@ -3780,7 +3792,7 @@ export class EnemyPokemon extends Pokemon { this.moveset = (formIndex !== undefined ? formIndex : this.formIndex) ? [ new PokemonMove(Moves.DYNAMAX_CANNON), - new PokemonMove(Moves.CROSS_POISON), + new PokemonMove(Moves.SLUDGE_BOMB), new PokemonMove(Moves.FLAMETHROWER), new PokemonMove(Moves.RECOVER, 0, -4) ] diff --git a/src/game-mode.ts b/src/game-mode.ts index e78b9017c12..f5dadad6f1b 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -62,7 +62,7 @@ export class GameMode implements GameModeConfig { * @returns true if the game mode has that challenge */ hasChallenge(challenge: Challenges): boolean { - return this.challenges.some(c => c.id === challenge); + return this.challenges.some(c => c.id === challenge && c.value !== 0); } /** diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 9021f638cea..52472ed57b1 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -42,6 +42,7 @@ export class LoadingScene extends SceneBase { this.loadImage("loading_bg", "arenas"); this.loadImage("logo", ""); // this.loadImage("pride-update", "events"); + this.loadImage("august-variant-update", "events"); // Load menu images this.loadAtlas("bg", "ui"); diff --git a/src/locales/ca_ES/dialogue.ts b/src/locales/ca_ES/dialogue.ts index e783ea14006..6db337517da 100644 --- a/src/locales/ca_ES/dialogue.ts +++ b/src/locales/ca_ES/dialogue.ts @@ -2573,7 +2573,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner? $@c{smile}Maybe it was a bit of luck but…\nWho knows you might just be able to go all the way. $By the way, the professor asked me to give you these items. They look pretty cool. - $@c{serious_smile_fists}Good luck out there!` + $@c{serious_smile_fists}Good luck out there! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_female": { @@ -2587,7 +2588,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you? $@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square… I have a feeling you're going to do really well out there. $@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful! - $@c{smile_wave}Do your best like always! I believe in you!` + $@c{smile_wave}Do your best like always! I believe in you! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_2": { @@ -2603,7 +2605,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n $@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n $@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all. - $@c{smile}Anyway, take care!` + $@c{smile}Anyway, take care, and enjoy the event!` }, }, "rival_2_female": { @@ -2619,7 +2621,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Aw well. That just means I'll have to train even harder for next time! $@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~. $@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this! - $@c{smile_wave}Keep at it!` + $@c{smile_wave}Keep at it, and enjoy the event!` }, "defeat": { 1: "It's OK to lose sometimes…" diff --git a/src/locales/de/dialogue.ts b/src/locales/de/dialogue.ts index a84060143fc..4c964db6dc3 100644 --- a/src/locales/de/dialogue.ts +++ b/src/locales/de/dialogue.ts @@ -2641,7 +2641,8 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Vielleicht war es einfach etwas Glück, aber…\nWer weiß, vielleicht schaffst du es irgendwann $ja wirklich ganz groß raus zu kommen. $Übrigens, der Professor hat mich gebeten dir diese Items zu geben. Die sehen wirklich cool aus. - $@c{serious_smile_fists}Viel Glück da draußen!` + $@c{serious_smile_fists}Viel Glück da draußen! + $@c{smile}Oh-und genieße das Event!` }, }, "rival_female": { @@ -2656,7 +2657,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Du hast gerade erst angefangen und bist schon so stark?!@d{96} @c{angry}Du hast sowas von betrogen, oder? $@c{smile_wave_wink}Ich mach nur Spaß!@d{64} @c{smile_eclosed}Ich habe ehrlich verloren… Ich habe das Gefühl, dass du es dort draußen weit bringen wirst. $@c{smile}Übrigens, der Professor hat mich gebeten dir diese Items zu geben. Ich hoffe sie sind hilfreich! - $@c{smile_wave}Gib wie immer dein Bestes! Ich glaube an dich!` + $@c{smile_wave}Gib wie immer dein Bestes! Ich glaube an dich! + $@c{smile}Oh-und genieße das Event!` }, }, "rival_2": { @@ -2674,7 +2676,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Nicht, dass du wirklich Hilfe benötigen würdest, aber ich habe hier noch eins von diesen Dingern herumliegen. $Du kannst es haben.\n $@c{serious_smile_fists}Erwarte aber nicht, dass ich dir noch mehr gebe!\nIch kann meinen Rivalen doch keine Vorteile verschaffen. - $@c{smile}Egal, pass auf dich auf!` + $@c{smile}Egal, pass auf dich auf und genieße das Event!` }, }, "rival_2_female": { @@ -2690,7 +2692,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Na gut. Das bedeutet ich muss noch härter tranieren! $@c{smile_wave}Ich habe noch eins von diesen Dingern!\n@c{smile_wave_wink}Kein Grund mir zu danken~. $@c{angry_mopen}Das ist aber das Letzte! Du bekommst ab jett keine Geschenke mehr von mir! - $@c{smile_wave}Bleib stark!` + $@c{smile_wave}Bleib stark und genieße das Event!` }, "defeat": { 1: "Es ist Ok manchmal zu verlieren…" diff --git a/src/locales/en/dialogue.ts b/src/locales/en/dialogue.ts index 715f245e518..1180e202f3c 100644 --- a/src/locales/en/dialogue.ts +++ b/src/locales/en/dialogue.ts @@ -2574,7 +2574,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner? $@c{smile}Maybe it was a bit of luck but…\nWho knows you might just be able to go all the way. $By the way, the professor asked me to give you these items. They look pretty cool. - $@c{serious_smile_fists}Good luck out there!` + $@c{serious_smile_fists}Good luck out there! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_female": { @@ -2588,7 +2589,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you? $@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square… I have a feeling you're going to do really well out there. $@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful! - $@c{smile_wave}Do your best like always! I believe in you!` + $@c{smile_wave}Do your best like always! I believe in you! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_2": { @@ -2602,9 +2604,9 @@ export const PGMdialogue: DialogueTranslationEntries = { "victory": { 1: `@c{neutral_eclosed}Oh. I guess I was overconfident. $@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n - $@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n + $@c{smile}Oh, not that you really need the help, but I had an extra one of each of these lying around and figured you might want them.\n $@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all. - $@c{smile}Anyway, take care!` + $@c{smile}Anyway, take care, and enjoy the event!` }, }, "rival_2_female": { @@ -2618,9 +2620,9 @@ export const PGMdialogue: DialogueTranslationEntries = { "victory": { 1: `@c{neutral}I… wasn't supposed to lose that time… $@c{smile}Aw well. That just means I'll have to train even harder for next time! - $@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~. + $@c{smile_wave}I also got you another two of these!\n@c{smile_wave_wink}No need to thank me~. $@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this! - $@c{smile_wave}Keep at it!` + $@c{smile_wave}Keep at it, and enjoy the event!` }, "defeat": { 1: "It's OK to lose sometimes…" diff --git a/src/locales/es/dialogue.ts b/src/locales/es/dialogue.ts index 187127d1d39..07e51458a29 100644 --- a/src/locales/es/dialogue.ts +++ b/src/locales/es/dialogue.ts @@ -2569,7 +2569,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner? $@c{smile}Maybe it was a bit of luck but…\nWho knows you might just be able to go all the way. $By the way, the professor asked me to give you these items. They look pretty cool. - $@c{serious_smile_fists}Good luck out there!` + $@c{serious_smile_fists}Good luck out there! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_female": { @@ -2583,7 +2584,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you? $@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square… I have a feeling you're going to do really well out there. $@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful! - $@c{smile_wave}Do your best like always! I believe in you!` + $@c{smile_wave}Do your best like always! I believe in you! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_2": { @@ -2599,7 +2601,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n $@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n $@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all. - $@c{smile}Anyway, take care!` + $@c{smile}Anyway, take care, and enjoy the event!` }, }, "rival_2_female": { @@ -2615,7 +2617,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Aw well. That just means I'll have to train even harder for next time! $@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~. $@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this! - $@c{smile_wave}Keep at it!` + $@c{smile_wave}Keep at it, and enjoy the event!` }, "defeat": { 1: "It's OK to lose sometimes…" diff --git a/src/locales/fr/dialogue.ts b/src/locales/fr/dialogue.ts index 8a8707dc4e5..49dc6124fbf 100644 --- a/src/locales/fr/dialogue.ts +++ b/src/locales/fr/dialogue.ts @@ -2372,7 +2372,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wah… Tu m’as vraiment lavé.\nT’es vraiment un débutant ? $@c{smile}T’as peut-être eu de la chance, mais…\nPeut-être que t’arriveras jusqu’au bout du chemin. $D’ailleurs, le prof m’a demandé de te filer ces objets.\nIls ont l’air sympas. - $@c{serious_smile_fists}Bonne chance à toi !` + $@c{serious_smile_fists}Bonne chance à toi ! + $@c{smile}Oh, et profite bien de l’évènement !` }, }, "rival_female": { @@ -2386,7 +2387,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Tu viens de commencer et t’es déjà si fort ?!@d{96}\n@c{angry}T’as triché non ? Avoue ! $@c{smile_wave_wink}J’déconne !@d{64} @c{smile_eclosed}J’ai perdu dans les règles…\nJ’ai le sentiment que tu vas très bien t’en sortir. $@c{smile}D’ailleurs, le prof veut que je te donne ces quelques objets. Ils te seront utiles, pour sûr ! - $@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !` + $@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi ! + $@c{smile}Oh, et profite bien de l’évènement !` }, }, "rival_2": { @@ -2402,7 +2404,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Pas grave, c’est OK. Je me doutais que ça arriverait.\n@c{serious_mopen_fists}Je vais juste devoir encore plus m’entrainer !\n $@c{smile}Ah, et pas que t’aies réellement besoin d’aide, mais j’ai ça en trop sur moi qui pourrait t’intéresser.\n $@c{serious_smile_fists}Mais n’espère plus en avoir d’autres !\nJe peux pas passer mon temps à aider mon adversaire. - $@c{smile}Bref, prends soin de toi !` + $@c{smile}Bref, prends soin de toi et profite bien de l’évènement !` }, }, "rival_2_female": { @@ -2417,8 +2419,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{neutral}Je… J’étais pas encore supposée perdre… $@c{smile}Bon. Ça veut juste dire que je vais devoir encore plus m’entrainer ! $@c{smile_wave}J’ai aussi ça en rab pour toi !\n@c{smile_wave_wink}Inutile de me remercier ~. - $@c{angry_mopen}C’était le dernier, terminé les cadeaux après celui-là ! - $@c{smile_wave}Allez, tiens le coup !` + $@c{angry_mopen}C’étaient les derniers, terminé les cadeaux après ceux-là ! + $@c{smile_wave}Allez, tiens le coup et profite bien de l’évènement !` }, "defeat": { 1: "Je suppose que c’est parfois normal de perdre…" @@ -5051,7 +5053,8 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wah… Tu m’as vraiment lavé.\nT’es vraiment une débutante ? $@c{smile}T’as peut-être eu de la chance, mais…\nPeut-être que t’arriveras jusqu’au bout du chemin. $D’ailleurs, le prof m’a demandé de te filer ces objets.\nIls ont l’air sympas. - $@c{serious_smile_fists}Bonne chance à toi !` + $@c{serious_smile_fists}Bonne chance à toi ! + $@c{smile}Oh, et profite bien de l’évènement !` }, }, "rival_female": { @@ -5065,7 +5068,8 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: `@c{shock}Tu viens de commencer et t’es déjà si forte ?!@d{96}\n@c{angry}T’as triché non ? Avoue ! $@c{smile_wave_wink}J’déconne !@d{64} @c{smile_eclosed}J’ai perdu dans les règles…\nJ’ai le sentiment que tu vas très bien t’en sortir. $@c{smile}D’ailleurs, le prof veut que je te donne ces quelques objets. Ils te seront utiles, pour sûr ! - $@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi !` + $@c{smile_wave}Fais de ton mieux, comme toujours !\nJe crois fort en toi ! + $@c{smile}Oh, et profite bien de l’évènement !` }, }, "rival_2": { @@ -5081,7 +5085,7 @@ export const PGFdialogue: DialogueTranslationEntries = { $@c{smile}Pas grave, c’est OK. Je me doutais que ça arriverait.\n@c{serious_mopen_fists}Je vais juste devoir encore plus m’entrainer !\n $@c{smile}Ah, et pas que t’aies réellement besoin d’aide, mais j’ai ça en trop sur moi qui pourrait t’intéresser.\n $@c{serious_smile_fists}Mais n’espère plus en avoir d’autres !\nJe peux pas passer mon temps à aider mon adversaire. - $@c{smile}Bref, prends soin de toi !` + $@c{smile}Bref, prends soin de toi et profite bien de l’évènement !` }, }, "rival_2_female": { @@ -5097,7 +5101,7 @@ export const PGFdialogue: DialogueTranslationEntries = { $@c{smile}Bon. Ça veut juste dire que je vais devoir encore plus m’entrainer ! $@c{smile_wave}J’ai aussi ça en rab pour toi !\n@c{smile_wave_wink}Inutile de me remercier ~. $@c{angry_mopen}C’était le dernier, terminé les cadeaux après celui-là ! - $@c{smile_wave}Allez, tiens le coup !` + $@c{smile_wave}Allez, tiens le coup et profite bien de l’évènement !` }, "defeat": { 1: "Je suppose que c’est parfois normal de perdre…" diff --git a/src/locales/it/dialogue.ts b/src/locales/it/dialogue.ts index 1089db4e6f8..f692b9b848a 100644 --- a/src/locales/it/dialogue.ts +++ b/src/locales/it/dialogue.ts @@ -2569,7 +2569,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner? $@c{smile}Maybe it was a bit of luck but…\nWho knows you might just be able to go all the way. $By the way, the professor asked me to give you these items. They look pretty cool. - $@c{serious_smile_fists}Good luck out there!` + $@c{serious_smile_fists}Good luck out there! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_female": { @@ -2583,7 +2584,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you? $@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square… I have a feeling you're going to do really well out there. $@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful! - $@c{smile_wave}Do your best like always! I believe in you!` + $@c{smile_wave}Do your best like always! I believe in you! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_2": { @@ -2599,7 +2601,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n $@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n $@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all. - $@c{smile}Anyway, take care!` + $@c{smile}Anyway, take care, and enjoy the event!` }, }, "rival_2_female": { @@ -2615,7 +2617,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Aw well. That just means I'll have to train even harder for next time! $@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~. $@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this! - $@c{smile_wave}Keep at it!` + $@c{smile_wave}Keep at it, and enjoy the event!` }, "defeat": { 1: "It's OK to lose sometimes…" diff --git a/src/locales/ja/dialogue.ts b/src/locales/ja/dialogue.ts index e783ea14006..6db337517da 100644 --- a/src/locales/ja/dialogue.ts +++ b/src/locales/ja/dialogue.ts @@ -2573,7 +2573,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Wow… You cleaned me out.\nAre you actually a beginner? $@c{smile}Maybe it was a bit of luck but…\nWho knows you might just be able to go all the way. $By the way, the professor asked me to give you these items. They look pretty cool. - $@c{serious_smile_fists}Good luck out there!` + $@c{serious_smile_fists}Good luck out there! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_female": { @@ -2587,7 +2588,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}You just started and you're already this strong?!@d{96}\n@c{angry}You totally cheated, didn't you? $@c{smile_wave_wink}Just kidding!@d{64} @c{smile_eclosed}I lost fair and square… I have a feeling you're going to do really well out there. $@c{smile}By the way, the professor wanted me to give you some items. Hopefully they're helpful! - $@c{smile_wave}Do your best like always! I believe in you!` + $@c{smile_wave}Do your best like always! I believe in you! + $@c{smile}Oh- and I hope you enjoy the event!` }, }, "rival_2": { @@ -2603,7 +2605,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}That's alright, though. I figured this might happen.\n@c{serious_mopen_fists}It just means I need to try harder for next time!\n $@c{smile}Oh, not that you really need the help, but I had an extra one of these lying around and figured you might want it.\n $@c{serious_smile_fists}Don't expect another one after this, though!\nI can't keep giving my opponent an advantage after all. - $@c{smile}Anyway, take care!` + $@c{smile}Anyway, take care, and enjoy the event!` }, }, "rival_2_female": { @@ -2619,7 +2621,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Aw well. That just means I'll have to train even harder for next time! $@c{smile_wave}I also got you another one of these!\n@c{smile_wave_wink}No need to thank me~. $@c{angry_mopen}This is the last one, though! You won't be getting anymore freebies from me after this! - $@c{smile_wave}Keep at it!` + $@c{smile_wave}Keep at it, and enjoy the event!` }, "defeat": { 1: "It's OK to lose sometimes…" diff --git a/src/locales/ko/dialogue.ts b/src/locales/ko/dialogue.ts index ed0b498abbc..ce6af0e43e7 100644 --- a/src/locales/ko/dialogue.ts +++ b/src/locales/ko/dialogue.ts @@ -2569,7 +2569,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}와… 정말 깔끔하게 당했네.\n초보자 맞아? $@c{smile}운이 따른 건지도 모르겠지만…\n그래도 정말 꿈을 이룰 지도. $그나저나, 박사님께서 이걸 전해달라고 하시더라.\n좋아 보이던데. - $@c{serious_smile_fists}아무튼, 힘 내는거야!` + $@c{serious_smile_fists}아무튼, 힘 내는거야! + $@c{smile}아- 그리고 이벤트 즐겁게 보내!` }, }, "rival_female": { @@ -2583,7 +2584,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}왜 벌써 이렇게 센 건데?!@d{96}\n@c{angry}아니면 뭔가 속임수, 그런 거? $@c{smile_wave_wink}농담, 농담!@d{64} @c{smile_eclosed}내가 진 거 맞아…\n너 정말 앞으로도 잘 하겠는데. $@c{smile}아 그래, 박사님께서 전해달라던 물건.\n도움이 되면 좋겠어! - $@c{smile_wave}항상 최선을 다 하라구! 믿고 있을게!` + $@c{smile_wave}항상 최선을 다 하라구! 믿고 있을게! + $@c{smile}아- 그리고 이벤트 즐겁게 보내!` }, }, "rival_2": { @@ -2599,7 +2601,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}그래, 또 지고 말았네.\n@c{serious_mopen_fists}좀 더 열심히 훈련을 해야겠어!\n $@c{smile}너한테 도움이 필요할 것 같지는 않지만, 이거.\n남는 게 있어서 말이야. $@c{serious_smile_fists}물론 이번이 마지막이야, 알겠지?\n공평하게 하지 않으면 그게 내 핑계거리가 되고 말거야. - $@c{smile}이제 갈게. 앞으로도 조심하고!` + $@c{smile}이제 갈게. 앞으로도 조심하고, 이벤트도 즐겁게 보내!` }, }, "rival_2_female": { @@ -2615,7 +2617,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}으, 그래. 더 열심히 훈련하면 되겠지! $@c{smile_wave}이것도 하나 더 챙겨왔으니 받아!\n@c{smile_wave_wink}감사 인사는 됐다구~. $@c{angry_mopen}하지만, 마지막이야!\n또 이렇게 공짜로 나눠주진 않을 테니까! - $@c{smile_wave}그럼!` + $@c{smile_wave}그럼! 이벤트 잘 즐기고!` }, "defeat": { 1: "가끔은 지는 것도 괜찮아…" diff --git a/src/locales/pt_BR/dialogue.ts b/src/locales/pt_BR/dialogue.ts index d128dea29ea..969c6fc36a9 100644 --- a/src/locales/pt_BR/dialogue.ts +++ b/src/locales/pt_BR/dialogue.ts @@ -2541,7 +2541,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Caramba… Você me limpou.\nVocê é mesmo um novato? $@c{smile}Talvez tenha sido um pouco de sorte, mas…\nQuem sabe você consiga chegar até o fim. $Aliás, o professor me pediu para te dar esses itens. Eles parecem bem legais. - $@c{serious_smile_fists}Boa sorte lá fora!` + $@c{serious_smile_fists}Boa sorte lá fora! + $@c{smile}Ah- e eu espero que você aproveite o evento!` }, }, "rival_female": { @@ -2555,7 +2556,8 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: `@c{shock}Você acabou de começar e já está tão forte?!@d{96}\n@c{angry}Você trapaceou, não foi? $@c{smile_wave_wink}Brincadeirinha!@d{64} @c{smile_eclosed}Eu perdi de forma justa… Tenho a sensação de que você vai se sair muito bem lá fora. $@c{smile}Aliás, o professor pediu para eu te dar alguns itens. Espero que sejam úteis! - $@c{smile_wave}Dê o seu melhor, como sempre! Eu acredito em você!` + $@c{smile_wave}Dê o seu melhor, como sempre! Eu acredito em você! + $@c{smile}Ah- e eu espero que você aproveite o evento!` }, }, "rival_2": { @@ -2571,7 +2573,7 @@ export const PGMdialogue: DialogueTranslationEntries = { $@c{smile}Tudo bem, no entanto. Eu imaginei que isso poderia acontecer.\n@c{serious_mopen_fists}Isso só significa que preciso me esforçar mais para a próxima vez!\n $@c{smile}Ah, não que você precise realmente de ajuda, mas eu tinha um extra desses itens e pensei que você poderia querer. $@c{serious_smile_fists}Não espere outro depois deste!\nNão posso continuar dando vantagem ao meu oponente. - $@c{smile}Enfim, cuide-se!` + $@c{smile}Enfim, cuide-se, e aproveite o evento!` }, }, "rival_2_female": { @@ -2585,9 +2587,9 @@ export const PGMdialogue: DialogueTranslationEntries = { "victory": { 1: `@c{neutral}Eu… não era para eu perder dessa vez… $@c{smile}Ah bem. Isso só significa que vou ter que treinar ainda mais para a próxima vez! - $@c{smile_wave}Também consegui mais um desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~. - $@c{angry_mopen}Este é o último, hein! Você não vai ganhar mais nenhum presente de mim depois desse! - $@c{smile_wave}Continue assim!` + $@c{smile_wave}Também consegui mais dois desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~. + $@c{angry_mopen}Estes são os últimos, hein! Você não vai ganhar mais nenhum presente de mim depois desse! + $@c{smile_wave}Continue assim, e aproveite o evento!` }, "defeat": { 1: "Está tudo bem perder às vezes…" @@ -2777,6 +2779,90 @@ export const PGFdialogue: DialogueTranslationEntries = { 9: "Estou realmente cansando de batalhar… Deve haver algo novo para fazer…" } }, + "breeder": { + "encounter": { + 1: "Pokémon obedientes, Pokémon egoístas… Pokémon têm características únicas.", + 2: "Embora minha criação e comportamento sejam ruins, criei meus Pokémon bem.", + 3: "Hmm, você disciplina seus Pokémon? Mimar demais não é bom." + }, + "victory": { + 1: "É importante nutrir e treinar as características de cada Pokémon.", + 2: "Ao contrário do meu lado diabólico, esses são bons Pokémon.", + 3: "Muito elogio pode estragar tanto Pokémon quanto pessoas." + }, + "defeat": { + 1: "Você não deve ficar com raiva dos seus Pokémon, mesmo se perder uma batalha.", + 2: "Certo? Pokémon bons, né? Eu sou adequado para criar coisas.", + 3: "Não importa o quanto você ame seus Pokémon, ainda precisa discipliná-los quando se comportam mal." + } + }, + "breeder_female": { + "encounter": { + 1: "Pokémon nunca te traem. Eles retribuem todo o amor que você dá a eles.", + 2: "Quer uma dica para treinar bons Pokémon?", + 3: "Eu criei esses Pokémon muito especiais usando um método especial." + }, + "victory": { + 1: "Ugh… Não era para ser assim. Será que administrei a mistura errada?", + 2: "Como isso aconteceu com meus Pokémon… O que você está dando de comer aos seus Pokémon?", + 3: "Se eu perder, isso significa que eu estava só matando o tempo. Não machuca meu ego nem um pouco." + }, + "defeat": { + 1: "Isso prova que meus Pokémon aceitaram meu amor.", + 2: "O verdadeiro truque para treinar bons Pokémon é capturar bons Pokémon.", + 3: "Pokémon serão fortes ou fracos dependendo de como você os cria." + } + }, + "fisherman": { + "encounter": { + 1: "Anem! Você me fez perder uma fisgada!\nO que vai fazer sobre isso?", + 2: "Sai daqui! Você está assustando os Pokémon!", + 3: "Vamos ver se você consegue fisgar uma vitória!", + }, + "victory": { + 1: "Esqueça isso.", + 2: "Da próxima vez, eu vou pescar a vitória!", + 3: "Acho que subestimei a força das correntes dessa vez.", + }, + }, + "fisherman_female": { + "encounter": { + 1: "Uau! Peguei um grande!", + 2: "Linha lançada, pronta para pescar o sucesso!", + 3: "Pronta para fazer ondas!" + }, + "victory": { + 1: "Vou voltar com um anzol mais forte.", + 2: "Vou pescar a vitória na próxima vez.", + 3: "Estou só afiando meus anzóis para a revanche!" + }, + }, + "swimmer": { + "encounter": { + 1: "Hora de mergulhar!", + 2: "Vamos surfar nas ondas da vitória!", + 3: "Pronto para fazer um splash!", + }, + "victory": { + 1: "Molhado na derrota!", + 2: "Uma onda de derrota!", + 3: "De volta à praia, eu acho.", + }, + }, + "backpacker": { + "encounter": { + 1: "Prepare-se, vamos começar!", + 2: "Vamos ver se você consegue acompanhar!", + 3: "Prepare-se, desafiante!", + 4: "Passei 20 anos tentando me encontrar… Mas onde estou?" + }, + "victory": { + 1: "Dessa vez tropecei!", + 2: "Ah, acho que estou perdido.", + 3: "Caminho sem saída!", + 4: "Espere um segundo! Ei! Você não sabe quem eu sou?" + }, + }, "ace_trainer": { "encounter": { 1: "Você parece bastante confiante.", @@ -2797,6 +2883,14 @@ export const PGFdialogue: DialogueTranslationEntries = { 4: "Claro que sou forte e não perco. É importante ganhar com graça." } }, + "parasol_lady": { + "encounter": { + 1: "Hora de embelezar o campo de batalha com elegância e postura!", + }, + "victory": { + 1: "Minha elegância permanece inabalável!", + } + }, "twins": { "encounter": { 1: "Prepare-se, porque quando nos unimos, é o dobro do problema!", @@ -2814,6 +2908,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Dobro de sorrisos, dobro da dança da vitória!" } }, + "cyclist": { + "encounter": { + 1: "Prepare-se para comer poeira!", + 2: "Prepare-se, desafiante! Estou prestes a te deixar para trás!", + 3: "Pé no pedal, vamos ver se você consegue acompanhar!" + }, + "victory": { + 1: "As rodas podem estar paradas, mas a determinação continua a pedalar.", + 2: "Fui mais rápido!", + 3: "O caminho para a vitória tem muitas curvas e voltas para explorar." + }, + }, "black_belt": { "encounter": { 1: "Elogio sua coragem ao me desafiar! Pois eu sou o que tem o chute mais forte!", @@ -2824,6 +2930,100 @@ export const PGFdialogue: DialogueTranslationEntries = { 2: "Hmmm… Se eu ia perder de qualquer maneira, esperava ficar totalmente destruído no processo." }, }, + "battle_girl": { + "encounter": { + 1: "Você não precisa tentar me impressionar. Você pode perder contra mim.", + }, + "victory": { + 1: "É difícil dizer adeus, mas estamos ficando sem tempo…", + }, + }, + "hiker": { + "encounter": { + 1: "Minha barriga de meia-idade me deu tanta gravidade quanto as montanhas que eu escalo!", + 2: "Herdei esse corpo ossudo dos meus pais… Sou como uma cadeia de montanhas viva…", + }, + "victory": { + 1: "Pelo menos não posso perder quando se trata de IMC!", + 2: "Não é suficiente… Nunca é suficiente. Meu colesterol ruim não está alto o suficiente…" + }, + }, + "ranger": { + "encounter": { + 1: "Quando estou cercado pela natureza, a maioria das outras coisas deixa de importar.", + 2: "Quando estou vivendo sem natureza na minha vida, às vezes sinto uma crise de ansiedade se aproximando." + }, + "victory": { + 1: "Não importa para a vastidão da natureza se eu ganhar ou perder…", + 2: "Algo assim é bastante trivial comparado aos sentimentos sufocantes da vida na cidade." + }, + "defeat": { + 1: "Ganhei a batalha. Mas a vitória não é nada comparada à vastidão da natureza…", + 2: "Tenho certeza de que como você se sente não é tão ruim se comparar aos meus ataques de ansiedade…" + } + }, + "scientist": { + "encounter": { + 1: "Minha pesquisa levará este mundo à paz e alegria.", + }, + "victory": { + 1: "Sou um gênio… Não devo perder para alguém como você…", + }, + }, + "school_kid": { + "encounter": { + 1: "Heehee. Estou confiante nos meus cálculos e análises.", + 2: "Estou ganhando o máximo de experiência que posso porque quero ser um Líder de Ginásio um dia." + }, + "victory": { + 1: "Aff… Cálculo e análise talvez não sejam páreo para o acaso…", + 2: "Até experiências difíceis e desafiadoras têm seu propósito, eu acho." + } + }, + "artist": { + "encounter": { + 1: "Eu costumava ser popular, mas agora estou acabado.", + }, + "victory": { + 1: "À medida que os tempos mudam, os valores também mudam. Percebi isso tarde demais.", + }, + }, + "guitarist": { + "encounter": { + 1: "Prepare-se para sentir o ritmo da derrota enquanto eu toco minha vitória!", + }, + "victory": { + 1: "Silenciado por agora, mas minha melodia de resiliência continuará a tocar.", + }, + }, + "worker": { + "encounter": { + 1: "Me incomoda que as pessoas sempre me entendam mal. Sou muito mais puro do que todos pensam.", + }, + "victory": { + 1: "Eu realmente não quero que minha pele queime, então quero ficar na sombra enquanto trabalho.", + }, + }, + "worker_female": { + "encounter": { + 1: `Me incomoda que as pessoas sempre me entendam mal. + $Sou muito mais pura do que todos pensam.` + }, + "victory": { + 1: "Eu realmente não quero que minha pele queime, então quero ficar na sombra enquanto trabalho." + }, + "defeat": { + 1: "Meu corpo e mente nem sempre estão necessariamente em sincronia." + } + }, + "worker_double": { + "encounter": { + 1: "Vou te mostrar que podemos te quebrar. Estamos treinando no campo!", + }, + "victory": { + 1: "Que estranho… Como isso pode ser… Não deveria ter sido superado.", + }, + }, "hex_maniac": { "encounter": { 1: "Normalmente, só escuto música clássica, mas se eu perder, acho que vou tentar um pouco de new age!", @@ -2838,6 +3038,32 @@ export const PGFdialogue: DialogueTranslationEntries = { 2: "Não fique presa na tristeza ou frustração. Você pode usar seus rancores para se motivar." } }, + "psychic": { + "encounter": { + 1: "Oi! Concentre-se!", + }, + "victory": { + 1: "Perdi minha concentração!", + }, + }, + "officer": { + "encounter": { + 1: "Prepare-se, porque a justiça está prestes a ser servida!", + 2: "Pronto para defender a lei e servir a justiça no campo de batalha!" + }, + "victory": { + 1: "O peso da justiça parece mais pesado do que nunca…", + 2: "As sombras da derrota pairam no distrito." + } + }, + "beauty": { + "encounter": { + 1: "Minha última batalha… É assim que eu gostaria que víssemos esta partida…", + }, + "victory": { + 1: "Foi divertido… Vamos ter outra última batalha algum dia…", + }, + }, "baker": { "encounter": { 1: "Espero que esteja pronta para saborear a derrota!" @@ -2846,6 +3072,26 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Vou assar uma revanche." }, }, + "biker": { + "encounter": { + 1: "Hora de acelerar e te deixar na poeira!" + }, + "victory": { + 1: "Vou me ajustar para a próxima corrida." + }, + }, + "firebreather": { + "encounter": { + 1: "Minhas chamas irão te consumir!", + 2: "Minha alma está pegando fogo. Irei te mostrar como queima!", + 3: "Cola aqui e dá uma olhada!" + }, + "victory": { + 1: "Fui reduzido a cinzas…", + 2: "Uau! Isso foi quente!", + 3: "Ai! Queimei minha língua!" + }, + }, "sailor": { "encounter": { 1: "Mano, você vai andar na prancha se perder!", @@ -2858,6 +3104,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Estou achando que quem tá enjoado sou eu..." }, }, + "archer": { + "encounter": { + 1: "Antes de você ir mais longe, vamos ver como você se sai contra nós, Equipe Rocket!", + 2: "Eu tenho recebido relatórios de que suas habilidades não são insignificantes. Vamos ver se são verdadeiros.", + 3: "Eu sou Archer, um Admin da Equipe Rocket. E não tenho piedade dos inimigos da nossa organização." + }, + "victory": { + 1: "Que vexame!", + 2: "Com minhas habilidades atuais, eu não estava à altura da tarefa, afinal.", + 3: "M-me perdoe, Giovanni... Por ser derrotado por um mero treinador..." + }, + }, "ariana": { "encounter": { 1: "Pera aí! Não podemos deixar alguém solto por aí. Isso é prejudicial para o orgulho da Equipe Rocket, entende?", @@ -2870,6 +3128,30 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Aaaieeeee! Isso não pode estar acontecendo! Eu lutei muito, mas ainda perdi…" }, }, + "proton": { + "encounter": { + 1: "O que você quer? Se você interromper nosso trabalho, não espere misericórdia!", + 2: "O que temos aqui? Costumam me chamar de o cara mais assustador e cruel da Equipe Rocket… Eu recomendo fortemente que você não interfira nos nossos negócios!", + 3: "Eu sou Proton, um Admin da Equipe Rocket. Estou aqui para acabar com a sua intromissão!" + }, + "victory": { + 1: "A fortaleza caiu!", + 2: "Você pode ter vencido desta vez… Mas tudo o que fez foi aumentar a ira da Equipe Rocket…", + 3: "Fui derrotado… Mas não esquecerei disso!" + }, + }, + "petrel": { + "encounter": { + 1: "Muhahaha, estávamos esperando por você. Eu? Você não sabe quem eu sou? Sou eu, Giovanni. O majestoso Giovanni em pessoa! Wahahaha! ...Huh? Eu não pareço nada com Giovanni? Eu nem mesmo pareço com Giovanni? Como assim? Trabalhei tanto para imitá-lo!", + 2: "Eu sou Petrel, um Admin da Equipe Rocket. Não permitirei que você interfira em nossos planos!", + 3: "O Executivo da Rocket, Petrel, vai lidar com este intruso!" + }, + "victory": { + 1: "OK, OK. Vou te contar onde ele está.", + 2: "Eu... Eu não consegui fazer nada... Giovanni, por favor, me perdoe...", + 3: "Não, eu não posso deixar isso me afetar. Tenho que informar os outros…" + }, + }, "tabitha": { "encounter": { 1: "Hehehe! Então você veio até aqui! Mas você chegou tarde demais!", @@ -2882,6 +3164,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Ahya! Como isso pode ser? Para um Admin como eu perder para uma treinadora qualquer..." }, }, + "courtney": { + "encounter": { + 1: "A coisa... A coisa que você segura... É o que... É o que nós da Equipe Magma procuramos...", + 2: "... Bem então... Deletando...", + 3: "...Ha. ...Analisando... ...Hah♪" + }, + "victory": { + 1: "... ...Mudar...o mundo.", + 2: "Como antecipado. Não antecipado. Você. Bloqueio de alvo... concluído. Iniciando... experimento. Você. Para sempre. Aha... ♪", + 3: "... De novo? Isso não foi antecipado. ...Eu sabia. Você... é interessante! ...Haha. ♪" + }, + }, "shelly": { "encounter": { 1: "Ahahahaha! Você vai se meter nos assuntos da Equipe Aqua? Você é absolutamente destemida, simplesmente ignorante ou ambos! Você é tão fofa que chega a ser nojenta! Vou te derrubar", @@ -2918,6 +3212,30 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Derrotada... Este foi um erro caro." } }, + "jupiter": { + "encounter": { + 1: "Júpiter, Comandante da Equipe Galáctica, ao seu serviço.", + 2: "A resistência é inútil. A Equipe Galáctica prevalecerá!", + 3: "Você está tremendo... já está com medo?" + }, + "victory": { + 1: "De jeito nenhum... Eu perdi?!", + 2: "Impressionante, você tem coragem!", + 3: "Perder assim... Que embaraço." + } + }, + "saturn": { + "encounter": { + 1: "Eu sou Saturno, Comandante da Equipe Galáctica.", + 2: "Nossa missão é absoluta. Qualquer obstáculo será obliterado!", + 3: "É medo o que vejo em seus olhos?" + }, + "victory": { + 1: "Impossível... Derrotado por você?!", + 2: "Você provou ser um adversário digno.", + 3: "Derrotado... Isso é inaceitável." + } + }, "zinzolin": { "encounter": { 1: "Você poderia se tornar uma ameaça para a Equipe Plasma, então vamos eliminá-la aqui e agora!", @@ -2982,6 +3300,38 @@ export const PGFdialogue: DialogueTranslationEntries = { 5: "Você diz o que? Equipe Rocket tchau-tchau a vai-vai? Quebrado é diz você?" // Uso de gramática incorreta é proposital }, }, + "magma_grunt": { + "encounter": { + 1: "Se você se meter com a Equipe Magma, não teremos piedade!", + 2: "É melhor você não interferir em nossos planos! Estamos tornando o mundo um lugar melhor!", + 3: "Você está no caminho! A Equipe Magma não tem tempo para crianças como você!", + 4: "Espero que você tenha trazido marshmallows porque as coisas estão prestes a esquentar!", + 5: "Vamos usar o poder de um vulcão! Vai ser... explosivo! Entendeu? Heh heh!" + }, + "victory": { + 1: "Ahn? Eu perdi?!", + 2: "Não posso acreditar que perdi! Até pulei o almoço por isso.", + 3: "De jeito nenhum! Você é apenas uma criança!", + 4: "Urrrgh... Eu deveria ter me escondido em nosso esconderijo imediatamente...", + 5: "Você me venceu... Você acha que o chefe vai cortar meu salário por isso?" + }, + }, + "aqua_grunt": { + "encounter": { + 1: "Não pegamos leve com quem se mete com a Equipe Aqua, nem mesmo crianças!", + 2: "Grrr... Você tem coragem de se intrometer com a Equipe Aqua!", + 3: "Você está prestes a se molhar! E não apenas por causa dos meus Pokémon aquáticos!", + 4: "Nós, da Equipe Aqua, existimos para o bem de todos!", + 5: "Prepare-se para ser levado pelas ondas do meu... uh, Pokémon! Sim, meu Pokémon!" + }, + "victory": { + 1: "Tá de brincadeira!", + 2: "Arrgh, eu não contei que seria atrapalhado por uma criança intrometida!", + 3: "Eu perdi?! Acho que vou ter que nadar de volta para o esconderijo agora...", + 4: "Oh, cara, que desastre... O chefe vai ficar furioso...", + 5: "Você me venceu... Você acha que o chefe vai me fazer andar na prancha por isso?" + }, + }, "galactic_grunt": { "encounter": { 1: "Não mexa com a Equipe Galáctica!", @@ -2998,6 +3348,104 @@ export const PGFdialogue: DialogueTranslationEntries = { 5: "Nota para mim mesmo: praticar batalhas Pokémon, o mais rápido possível." }, }, + "plasma_grunt": { + "encounter": { + 1: "Não toleramos pessoas que pensam diferente de nós!", + 2: "Se eu ganhar de você, liberte seus Pokémon!", + 3: "Se você atrapalhar a Equipe Plasma, eu cuidarei de você!", + 4: "A Equipe Plasma vai libertar os Pokémon de humanos egoístas como você!", + 5: "Nossos penteados são de outro mundo... mas nossas habilidades de batalha? Você descobrirá em breve." + }, + "victory": { + 1: "Plasmaaaaaaaaa!", + 2: "Como eu pude perder...", + 3: "...Que Pokémon fraco, vou ter que roubar alguns melhores!", + 4: "Grandes planos são sempre interrompidos.", + 5: "Isso é ruim... Ruim ruim ruim ruim ruim ruim ruim! Ruim para a Equipe Plasma! Ou Plasruim, para abreviar!" + }, + }, + "flare_grunt": { + "encounter": { + 1: "Seus Pokémon não são páreo para a elegância da Equipe Flare.", + 2: "Espero que você tenha trazido seus óculos de sol, porque as coisas vão ficar brilhantes!", + 3: "A Equipe Flare vai purificar o mundo da imperfeição!", + 4: "Prepare-se para enfrentar o brilho da Equipe Flare!", + 5: "A moda é o mais importante para nós!" + }, + "victory": { + 1: "O futuro não parece brilhante para mim.", + 2: "Talvez haja mais na batalha do que eu pensei. De volta à prancheta.", + 3: "Gahh?! Eu perdi?!", + 4: "Mesmo na derrota, a elegância da Equipe Flare brilha.", + 5: "Você pode ter me vencido, mas quando eu perco, eu saio com estilo!" + }, + }, + "rocket_boss_giovanni_1": { + "encounter": { + 1: "Tenho que admitir, estou impressionado que tenha chegado até aqui!" + }, + "victory": { + 1: "QUÊ! Isso não é possível!" + }, + "defeat": { + 1: "Guarde minhas palavras.\nNão ser capaz de medir sua própria força mostra que você ainda é uma criança." + } + }, + "rocket_boss_giovanni_2": { + "encounter": { + 1: "Meus antigos associados precisam de mim... Você vai ficar no meu caminho?" + }, + "victory": { + 1: "Como isso é possível...?\nO precioso sonho da Equipe Rocket se tornou pouco mais que uma ilusão..." + }, + "defeat": { + 1: "A Equipe Rocket renascerá, e eu dominarei o mundo!" + } + }, + "magma_boss_maxie_1": { + "encounter": { + 1: "Eu vou te enterrar com minhas próprias mãos.\nEspero que você aprecie essa honra!" + }, + "victory": { + 1: "Ugh! Você é... bastante capaz...\nEu fiquei para trás, mas apenas por um triz..." + }, + "defeat": { + 1: "A Equipe Magma vai prevalecer!" + } + }, + "magma_boss_maxie_2": { + "encounter": { + 1: "Você é o último obstáculo entre mim e meus objetivos.\nPrepare-se para meu ataque final! Fuhahaha!" + }, + "victory": { + 1: "Isso... Isso não é... Ngh..." + }, + "defeat": { + 1: "E agora... Eu transformarei este planeta em uma terra ideal para a humanidade." + } + }, + "aqua_boss_archie_1": { + "encounter": { + 1: "Eu sou o líder da Equipe Aqua, então temo que esse seja o fim da linha para você." + }, + "victory": { + 1: "Vamos nos encontrar de novo em algum lugar. Eu vou ter certeza de lembrar desse rosto." + }, + "defeat": { + 1: "Brilhante! Nada vai parar minha equipe agora!" + } + }, + "aqua_boss_archie_2": { + "encounter": { + 1: "Estive esperando tanto tempo por este dia.\nEste é o verdadeiro poder da minha equipe!" + }, + "victory": { + 1: "Como eu suspeitava..." + }, + "defeat": { + 1: "Eu vou voltar tudo neste mundo ao seu estado puro e original!!" + } + }, "galactic_boss_cyrus_1": { "encounter": { 1: "Você foi compelida a vir aqui por tal sentimentalismo vazio\nEu farei você se arrepender de ter ouvido seu coração!" @@ -3009,6 +3457,78 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Eu criarei meu novo mundo..." } }, + "galactic_boss_cyrus_2": { + "encounter": { + 1: "Nos encontramos novamente. Parece que nossos destinos estão entrelaçados.\nMas aqui e agora, eu finalmente quebrarei esse vínculo!" + }, + "victory": { + 1: "Como? Como? COMO?!" + }, + "defeat": { + 1: "Até logo." + } + }, + "plasma_boss_ghetsis_1": { + "encounter": { + 1: "Ninguém pode me deter! Não importa quem seja ou o que faça!" + }, + "victory": { + 1: "Como isso é possível? Eu sou o criador da Equipe Plasma! Eu sou perfeito!" + }, + "defeat": { + 1: "Eu sou o governante perfeito de um novo mundo perfeito! Mwa ha ha!" + } + }, + "plasma_boss_ghetsis_2": { + "encounter": { + 1: "Vamos! Eu quero ver sua cara depois que você perder toda a esperança!" + }, + "victory": { + 1: "Meus cálculos... Não! Meus planos cuidadosos! O mundo deveria ser meu!" + }, + "defeat": { + 1: "Kyurem! Use Absofusion!" + } + }, + "flare_boss_lysandre_1": { + "encounter": { + 1: "Você está aqui para me deter? Mostre-me em batalha." + }, + "victory": { + 1: "Você está aqui para me deter. Mas eu peço que você espere." + }, + "defeat": { + 1: "Pokémon... não devem mais existir." + } + }, + "flare_boss_lysandre_2": { + "encounter": { + 1: "O futuro que você quer, ou o futuro que eu quero... Vamos ver qual é o mais merecedor, não é mesmo?" + }, + "victory": { + 1: "Uau!" + }, + "defeat": { + 1: "Tolos sem visão continuarão a poluir este belo mundo." + } + }, + "brock": { + "encounter": { + 1: "Minha especialidade em Pokémon do tipo Pedra vai te derrubar! Vamos lá!", + 2: "Minha vontade firme como pedra vai te sobrecarregar!", + 3: "Permita-me mostrar a verdadeira força dos meus Pokémon!" + }, + "victory": { + 1: "A força dos seus Pokémon superou minhas defesas de pedra!", + 2: "O mundo é enorme! Estou feliz por ter tido a chance de batalhar com você.", + 3: "Talvez eu deva voltar a perseguir meu sonho de ser Criador de Pokémon…" + }, + "defeat": { + 1: "A melhor defesa é um bom ataque!\nEssa é a minha maneira de fazer as coisas!", + 2: "Venha estudar rochas comigo da próxima vez para aprender melhor a combatê-las!", + 3: "Hah, todas as minhas viagens pelas regiões estão valendo a pena!" + } + }, "misty": { "encounter": { 1: "Minha política é um ataque total com Pokémon do tipo Água!", @@ -3043,6 +3563,77 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Uma batalha de Pokémon é guerra, e eu te mostrei combate em primeira mão!" } }, + "erika": { + "encounter": { + 1: "Ah, o tempo está adorável aqui…\nOh, uma batalha? Muito bem então.", + 2: "Minhas habilidades de batalha Pokémon rivalizam com minhas habilidades de arranjo de flores.", + 3: "Oh, espero que o aroma agradável dos meus Pokémon não me faça dormir de novo…", + 4: "Ver flores em um jardim é tão calmante." + }, + "victory": { + 1: "Oh! Eu concedo a derrota.", + 2: "Aquela partida foi muito agradável.", + 3: "Ah, parece que perdi…", + 4: "Oh, meu Deus." + }, + "defeat": { + 1: "Tinha medo de adormecer…", + 2: "Oh, meu Deus, parece que meus Pokémon de Grama te dominaram.", + 3: "Essa batalha foi uma experiência tão calmante.", + 4: "Oh… É só isso?" + } + }, + "janine": { + "encounter": { + 1: "Estou dominando a arte dos ataques venenosos.\nVou lutar com você hoje!", + 2: "Meu pai confia que posso me defender.\nVou provar que ele está certo!", + 3: "Minhas técnicas de ninja só perdem para as do meu pai!\nVocê consegue acompanhar?" + }, + "victory": { + 1: "Ainda preciso de treinamento… Entendi.", + 2: "Sua técnica de batalha superou a minha.", + 3: "Vou me aplicar de verdade e melhorar minhas habilidades." + }, + "defeat": { + 1: "Hehe… o veneno drenou todas as suas forças para lutar.", + 2: "Ha! Você não teve chance contra minhas habilidades superiores de ninja!", + 3: "A fé do meu pai em mim não foi mal colocada." + } + }, + "sabrina": { + "encounter": { + 1: "Através da minha habilidade psíquica, tive uma visão da sua chegada!", + 2: "Não gosto de lutar, mas se você quiser, vou mostrar meus poderes!", + 3: "Posso sentir grande ambição em você. Vou ver se não é infundada." + }, + "victory": { + 1: "Seu poder… Ele supera o que eu previa…", + 2: "Não consegui prever seu poder com precisão.", + 3: "Mesmo com meus imensos poderes psíquicos, não consigo sentir outro tão forte quanto você." + }, + "defeat": { + 1: "Essa vitória… É exatamente como previ nas minhas visões!", + 2: "Talvez fosse outra pessoa que eu sentisse um grande desejo…", + 3: "Aprimore suas habilidades antes de entrar em batalha precipitadamente.\nVocê nunca sabe o que o futuro pode reservar se fizer isso…" + } + }, + "blaine": { + "encounter": { + 1: "Hah! Espero que tenha trazido uma Cura de Queimadura!", + 2: "Meus Pokémon de Fogo vão incinerar todos os desafiantes!", + 3: "Prepare-se para brincar com fogo!" + }, + "victory": { + 1: "Queimei até não restar nada! Nem cinzas sobraram!", + 2: "Não acendi as chamas alto o suficiente?", + 3: "Estou completamente exausto… Mas isso faz minha motivação para melhorar queimar ainda mais!" + }, + "defeat": { + 1: "Meu inferno ardente não pode ser apagado!", + 2: "Meus Pokémon foram fortalecidos com o calor desta vitória!", + 3: "Hah! Minha paixão queima mais do que a sua!" + } + }, "giovanni": { "encounter": { 1: "Eu, o líder da Equipe Rocket, vou te fazer sentir um mundo de dor!", @@ -3060,6 +3651,23 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Espero que entenda o quão tolo foi me desafiar." } }, + "roxanne": { + "encounter": { + 1: "Você poderia gentilmente demonstrar como batalha?", + 2: "Você pode aprender muitas coisas batalhando com muitos treinadores.", + 3: "Oh, você me pegou estrategizando.\nGostaria de batalhar?" + }, + "victory": { + 1: "Oh, parece que perdi.\nEu entendo.", + 2: "Parece que ainda tenho muito mais a aprender quando se trata de batalhas.", + 3: "Vou levar o que aprendi aqui hoje a sério." + }, + "defeat": { + 1: "Aprendi muitas coisas com nossa batalha.\nEspero que você também tenha aprendido.", + 2: "Espero batalhar com você novamente.\nEspero que use o que aprendeu aqui.", + 3: "Venci devido a tudo o que aprendi." + } + }, "brawly": { "encounter": { 1: "Oh cara, uma desafiante!\nVamos ver o que você pode fazer!", @@ -3094,6 +3702,40 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Wahahahaha! Que batalha eletrizante!" } }, + "flannery": { + "encounter": { + 1: "Meus Pokémon de fogo estão prontos para queimar a concorrência!\nVamos nessa!", + 2: "Prepare-se para sentir o calor da minha determinação!\nNão vou segurar nada!", + 3: "Minhas habilidades vão incinerar você!\nPrepare-se para a batalha mais quente da sua vida!" + }, + "victory": { + 1: "Essa derrota só faz minha determinação queimar mais!", + 2: "Essa perda não apagará minhas chamas!\nEstarei de volta mais forte!", + 3: "Vou usar essa experiência para reacender meu espírito competitivo!" + }, + "defeat": { + 1: "Minhas chamas nunca se apagarão!\nSou muito apaixonada por isso!", + 2: "Você foi incrível!\nVamos fazer isso de novo algum dia!", + 3: "Que batalha ardente!\nMal posso esperar pela próxima!" + } + }, + "norman": { + "encounter": { + 1: "Você está pronto para enfrentar a força pura do meu time?\nVou te mostrar o poder do equilíbrio!", + 2: "Minha experiência em batalha vai fazer você suar!\nPrepare-se!", + 3: "Treinei meu time rigorosamente.\nVamos ver se você consegue igualar!" + }, + "victory": { + 1: "Parece que subestimei você.\nFoi uma batalha dura.", + 2: "Você é forte, mas ainda há muito para aprender.", + 3: "Essa derrota não abalará minha determinação.\nEstarei de volta mais forte!" + }, + "defeat": { + 1: "Você lutou bravamente!\nEspero batalhar com você novamente.", + 2: "Sua força é incrível!\nNão posso esperar pela nossa próxima batalha.", + 3: "Foi uma honra batalhar com você!\nAté a próxima!" + } + }, "winona": { "encounter": { 1: "Tenho sobrevoado os céus em busca de presas...\nE você é meu alvo!", @@ -3145,6 +3787,60 @@ export const PGFdialogue: DialogueTranslationEntries = { 3: "Tudo graças ao meu treinamento rigoroso com Tate.\nPosso me sincronizar com meus Pokémon." } }, + "juan": { + "encounter": { + 1: "Agora não é hora de agir timidamente.\nVamos batalhar!", + 2: "Ahahaha, você será testemunha da minha arte com Pokémon de Água!", + 3: "Um tufão se aproxima!\nVocê será capaz de me testar?", + 4: "Por favor, você será testemunha da nossa arte.\nUma grande ilusão de água esculpida por meus Pokémon e por mim!" + }, + "victory": { + 1: "Você pode ser um gênio que pode enfrentar Wallace!", + 2: "Eu me concentrei na elegância enquanto você treinava.\nÉ natural que você me derrotasse.", + 3: "Ahahaha!\nMuito bem, você venceu desta vez.", + 4: "De você, sinto o brilho brilhante da habilidade que superará tudo." + }, + "defeat": { + 1: "Meus Pokémon e eu esculpimos uma ilusão de Água e saímos vitoriosos.", + 2: "Ahahaha, eu venci, e você perdeu.", + 3: "Posso emprestar meu traje? Pode te ajudar a batalhar!\nAhahaha, estou brincando!", + 4: "Eu sou o vencedor! O que quer dizer, você perdeu." + } + }, + "crasher_wake": { + "encounter": { + 1: "Crash! Crash! Cuidado!\nDemolidor Wake… está… aqui!", + 2: "Crash! Crash! Demolidor Wake!", + 3: "Sou a onda de poder que vai te lavar!" + }, + "victory": { + 1: "Isso coloca um sorriso no meu rosto!\nGuhahaha! Foi uma explosão!", + 2: "Hunwah! Acabou e terminou!\nComo vou dizer isso...\nQuero mais! Queria batalhar muito mais!", + 3: "O QUÊ?!" + }, + "defeat": { + 1: "Siiiiim! Isso mesmo!", + 2: "Eu venci, mas quero mais! Queria batalhar muito mais!", + 3: "Até logo!" + } + }, + "falkner": { + "encounter": { + 1: "Vou mostrar o verdadeiro poder dos magníficos Pokémon pássaros!", + 2: "Ventos, fiquem comigo!", + 3: "Pai! Espero que esteja vendo minha batalha de cima!" + }, + "victory": { + 1: "Eu entendo... Vou sair graciosamente.", + 2: "Uma derrota é uma derrota. Você é realmente forte.", + 3: "...Droga! Sim, eu perdi." + }, + "defeat": { + 1: "Pai! Venci com seus amados Pokémon pássaros...", + 2: "Pokémon pássaros são os melhores afinal!", + 3: "Sinto que estou alcançando meu pai!" + } + }, "nessa": { "encounter": { 1: "Não importa que tipo de plano sua mente refinada possa estar tramando, meu parceiro e eu vamos afundá-la.", @@ -3293,6 +3989,42 @@ export const PGFdialogue: DialogueTranslationEntries = { 6: "Eu sabia que venceria!" } }, + "crispin": { + "encounter": { + 1: "Quero vencer, então é exatamente isso que vou fazer!", + 2: "Eu batalho porque quero batalhar! E sabe de uma coisa? É assim que deve ser!" + }, + "victory": { + 1: "Queria vencer... mas perdi!", + 2: "Eu perdi... porque não consegui vencer!" + }, + "defeat": { + 1: "Ei, espere um segundo. Eu acabei de vencer? Acho que acabei de vencer! Que satisfação!", + 2: "Uou! Isso foi incrível!" + } + }, + "amarys": { + "encounter": { + 1: "Quero ser a pessoa a ajudar alguém em particular. Sendo assim, não posso me dar ao luxo de perder.\n... Nossa batalha começa agora." + }, + "victory": { + 1: "Eu sou... não o suficiente, eu vejo." + }, + "defeat": { + 1: "A vitória pertence a mim. Bem lutado." + } + }, + "lacey": { + "encounter": { + 1: "Vou enfrentar você com meu time usual como membro da Elite dos Quatro." + }, + "victory": { + 1: "Foi uma excelente batalha. Estou ansiosa para o próximo desafio." + }, + "defeat": { + 1: "Fufufu... Nada mal.\nDesafiantes que derrotam a Elite dos Quatro são dignos de notar." + } + }, "drayton": { "encounter": { 1: `Cara, eu amo cadeiras. Você não ama cadeiras? Que salva-vidas. @@ -3317,6 +4049,23 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Hohoho... De fato. Pequenas lâminas frágeis de grama conseguem quebrar até mesmo concreto." } }, + "viola": { + "encounter": { + 1: `Seja as lágrimas de frustração que seguem uma derrota ou o florescer da alegria que vem com a vitória… + $Ambos são ótimos temas para minha câmera! Fantástico! Isso vai ser simplesmente fantástico! + $Agora venha para cima de mim!`, + 2: "Minha lente está sempre focada na vitória – não vou deixar nada estragar esta foto!" + }, + "victory": { + 1: "Você e seus Pokémon me mostraram uma nova profundidade de campo! Fantástico! Simplesmente fantástico!", + 2: `O mundo que você vê através de uma lente, e o mundo que você vê com um Pokémon ao seu lado… + $O mesmo mundo pode parecer completamente diferente dependendo do seu ponto de vista.` + }, + "defeat": { + 1: "A foto do momento da minha vitória vai ser um verdadeiro sucesso!", + 2: "Sim! Tirei ótimas fotos!" + } + }, "candice": { "encounter": { 1: `Você quer desafiar a Candice? Com certeza! Eu estava esperando por alguém forte! @@ -3345,6 +4094,40 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Sim! Meus Pokémon e eu somos perfeitamente bons!" } }, + "aaron": { + "encounter": { + 1: "Ok! Deixe-me enfrentar você!" + }, + "victory": { + 1: "Batalhar é um assunto profundo e complexo..." + }, + "defeat": { + 1: "Vencer um membro da Elite dos Quatro não é fácil." + } + }, + "cress": { + "encounter": { + 1: "Isso mesmo! Serei eu e meus estimados tipos Água que você deve enfrentar na batalha!" + }, + "victory": { + 1: "Perder? Eu? Não acredito nisso." + }, + "defeat": { + 1: "Este é o resultado apropriado quando eu sou seu oponente." + } + }, + "allister": { + "encounter": { + 1: "Sou Allister.\nA-aqui... vou eu..." + }, + "victory": { + 1: `Quase perdi minha máscara de tanto choque... Isso foi… + $Uau. Posso ver sua habilidade pelo que ela é.`, + }, + "defeat": { + 1: "I-isso foi incrível!" + } + }, "clay": { "encounter": { 1: "Harrumph! Me deixou esperando, não foi, garota? Tudo bem, hora de ver o que você pode fazer!" @@ -3367,6 +4150,68 @@ export const PGFdialogue: DialogueTranslationEntries = { "defeat": { 1: "Volte para me ver novamente, ouviu?" } + }, "tulip": { + "encounter": { + 1: "Permita-me usar minhas habilidades para deixar seus lindos Pokémon ainda mais bonitos!" + }, + "victory": { + 1: "Sua força tem uma magia que não pode ser apagada." + }, + "defeat": { + 1: "Você sabe, na minha linha de trabalho, pessoas que carecem de talento em uma área ou outra frequentemente desaparecem rapidamente - nunca mais se ouve falar delas." + } + }, + "sidney": { + "encounter": { + 1: `Gostei desse olhar que você me deu. Acho que você vai ser um bom desafio. + $Isso é ótimo! Parece muito bom! Vamos nessa! + $Você e eu, vamos curtir uma batalha que só pode acontecer aqui!`, + }, + "victory": { + 1: "E aí, gostou? Eu perdi! Mas foi divertido, então não importa." + }, + "defeat": { + 1: "Sem ressentimentos, beleza?" + } + }, + "phoebe": { + "encounter": { + 1: `Enquanto treinava, adquiri a habilidade de me comunicar com Pokémon do tipo Fantasma. + $Sim, o vínculo que desenvolvi com os Pokémon é extremamente forte. + $Então, vamos lá, tente ver se você consegue até mesmo causar dano aos meus Pokémon!`, + }, + "victory": { + 1: "Ah, droga. Eu perdi." + }, + "defeat": { + 1: "Estou ansiosa para batalhar com você de novo algum dia!" + } + }, + "glacia": { + "encounter": { + 1: `Tudo o que vi foram desafios de Treinadores fracos e seus Pokémon. + $E você? Ficaria extremamente satisfeita se pudesse dar tudo de mim contra você!`, + }, + "victory": { + 1: `Você e seus Pokémon… Como seus espíritos queimam! + $O calor consumido é esmagador. + $Não é surpresa que minhas habilidades geladas falharam em te machucar.`, + }, + "defeat": { + 1: "Uma batalha intensamente apaixonada, sem dúvida." + } + }, + "drake": { + "encounter": { + 1: `Para nós, batalhar com Pokémon como parceiros, você sabe o que é necessário? Você sabe o que precisa? + $Se não souber, nunca prevalecerá contra mim!`, + }, + "victory": { + 1: "Excelente, deve-se dizer." + }, + "defeat": { + 1: "Dei meu máximo nessa batalha!" + } }, "wallace": { "encounter": { @@ -3418,6 +4263,17 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Estou encantada! Sim, encantada por poder esmagar você sob meu calcanhar." } }, + "hala": { + "encounter": { + 1: "O velho Hala está aqui para fazer você gritar!" + }, + "victory": { + 1: "Pude sentir o poder que você ganhou na sua jornada." + }, + "defeat": { + 1: "Haha! Que batalha deliciosa!" + } + }, "molayne": { "encounter": { 1: `Dei a posição de capitão ao meu primo Sophocles, mas estou confiante na minha habilidade. @@ -3441,6 +4297,17 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Nahahaha! Você realmente é algo mais, garota!" } }, + "bruno": { + "encounter": { + 1: "Nós vamos te triturar com nosso poder superior! Hoo hah!" + }, + "victory": { + 1: "Por quê? Como eu poderia perder?" + }, + "defeat": { + 1: "Você pode me desafiar o quanto quiser, mas os resultados nunca vão mudar!" + } + }, "bugsy": { "encounter": { 1: "Sou Bugsy! Eu nunca perco quando se trata de Pokémon do tipo Inseto!" @@ -3452,6 +4319,30 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Obrigado! Graças à nossa batalha, eu também pude fazer progressos na minha pesquisa!" } }, + "koga": { + "encounter": { + 1: "Fwahahahaha! Pokémon não são apenas sobre força bruta--você verá em breve!" + }, + "victory": { + 1: "Ah! Você provou seu valor!" + }, + "defeat": { + 1: "Você aprendeu a temer as técnicas do ninja?" + } + }, + "bertha": { + "encounter": { + 1: "Bem, você mostraria a esta velha senhora o quanto aprendeu?" + }, + "victory": { + 1: `Bem! Querida criança, devo dizer, isso foi muito impressionante. + $Seus Pokémon acreditaram em você e fizeram o melhor para te dar a vitória. + $Mesmo tendo perdido, me encontro com esse sorriso bobo!`, + }, + "defeat": { + 1: "Hahahahah! Parece que esta velha senhora ganhou!" + } + }, "lenora": { "encounter": { 1: "Bem, desafiadora, vou pesquisar como você batalha com os Pokémon que criou com tanto carinho!" @@ -3463,6 +4354,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Ah ha ha! Se você perder, certifique-se de analisar o porquê e use esse conhecimento na próxima batalha!" } }, + "siebold": { + "encounter": { + 1: "Enquanto eu estiver vivo, continuarei em busca da culinária suprema... e dos oponentes mais fortes em batalha!" + }, + "victory": { + 1: "Guardarei minha memória de você e seus Pokémon para sempre em meu coração." + }, + "defeat": { + 1: `Nossa batalha Pokémon foi como alimento para minha alma. Isso vai me manter em frente. + $É assim que vou prestar meus respeitos a você por dar tudo de si na batalha!`, + } + }, "roxie": { "encounter": { 1: "Prepare-se! Vou arrancar algum senso de você!" @@ -3474,6 +4377,40 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Ei, vamos lá! Seja séria! Você tem que dar mais de si!" } }, + "olivia": { + "encounter": { + 1: "Não precisa de introdução aqui. Hora de batalhar comigo, Olivia!" + }, + "victory": { + 1: "Realmente encantador… Tanto você quanto seus Pokémon…" + }, + "defeat": { + 1: "Mmm-hmm." + } + }, + "poppy": { + "encounter": { + 1: "Oooh! Você quer ter uma batalha Pokémon comigo?" + }, + "victory": { + 1: "Uagh?! Mmmuuuggghhh…" + }, + "defeat": { + 1: `Yaaay! Eu consegui! Eu der-ro-tei você! Você pode vir para… Para… Uma revanche? + $Venha para uma revanche quando quiser!`, + } + }, + "agatha": { + "encounter": { + 1: "Pokémon são para batalhas! Vou te mostrar como um verdadeiro Treinador batalha!" + }, + "victory": { + 1: "Oh meu! Você é algo especial, criança!" + }, + "defeat": { + 1: "Bahaha. É assim que uma batalha adequada é feita!" + } + }, "flint": { "encounter": { 1: "Espero que você esteja aquecida, porque aqui vem o Big Bang!" @@ -3485,6 +4422,17 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Huh? Isso é tudo? Acho que você precisa de um pouco mais de paixão." } }, + "grimsley": { + "encounter": { + 1: "O vencedor leva tudo, e não sobra nada para o perdedor." + }, + "victory": { + 1: "Quando se perde, perde-se tudo… A próxima coisa que vou procurar será a vitória, também!" + }, + "defeat": { + 1: "Se alguém vence, a pessoa que lutou contra essa pessoa perde." + } + }, "caitlin": { "encounter": { 1: `Sou eu que apareci quando a flor se abriu. Você que estava esperando… @@ -3499,6 +4447,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Aspiro a reivindicar a vitória com elegância e graça." } }, + "diantha": { + "encounter": { + 1: `Batalhar contra você e seus Pokémon, todos vocês cheios de esperança para o futuro… + $Honestamente, isso apenas me enche da energia que preciso para continuar enfrentando cada novo dia! Sim!`, + }, + "victory": { + 1: "Testemunhar os espíritos nobres de você e seus Pokémon em batalha realmente tocou meu coração…" + }, + "defeat": { + 1: "Oh, fantástico! O que achou? Minha equipe foi bem legal, né?" + } + }, "wikstrom": { "encounter": { 1: `Bem encontrado, jovem desafiadora! Verdadeiramente sou a lâmina famosa de aço endurecido, Duque Wikstrom! @@ -3523,6 +4483,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Ehaha! Que vitória incrível!" } }, + "larry_elite": { + "encounter": { + 1: `Olá… Sou eu, Larry. + $Eu também sou membro da Elite dos Quatro, sim… Infelizmente para mim.`, + }, + "victory": { + 1: "Bem, isso tirou o vento debaixo das nossas asas…" + }, + "defeat": { + 1: "É hora de uma reunião com o chefe." + } + }, "lance": { "encounter": { 1: "Estive esperando por você. Permita-me testar suas habilidades.", @@ -3537,6 +4509,23 @@ export const PGFdialogue: DialogueTranslationEntries = { 2: "Não é que você seja fraca. Não se incomode com isso." } }, + "karen": { + "encounter": { + 1: "Eu sou Karen. Você gostaria de um duelo com meus Pokémon do tipo Sombrio?", + 2: "Sou diferente daqueles que você já conheceu.", + 3: "Você montou uma equipe charmosa. Nossa batalha deve ser boa." + }, + "victory": { + 1: "Não! Eu não posso vencer. Como você ficou tão forte?", + 2: "Não me desviarei do meu caminho escolhido.", + 3: "O Campeão está ansioso para te conhecer." + }, + "defeat": { + 1: "Isso era o que eu esperava.", + 2: "Bem, isso foi relativamente divertido.", + 3: "Venha me visitar a qualquer momento." + } + }, "milo": { "encounter": { 1: `Parece que você entende bem os Pokémon. @@ -3550,6 +4539,20 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Isso realmente vai te deixar em choque e admiração." } }, + "lucian": { + "encounter": { + 1: `Só um momento, por favor. O livro que estou lendo está quase no clímax emocionante… + $O herói obteve uma espada mística e está prestes a enfrentar sua prova final… Ah, tanto faz. + $Já que você chegou tão longe, vou deixar isso de lado e batalhar com você. + $Deixe-me ver se você alcançará tanta glória quanto o herói do meu livro!`, + }, + "victory": { + 1: "Eu vejo… Parece que você me colocou em xeque-mate." + }, + "defeat": { + 1: "Tenho uma reputação a manter." + } + }, "drasna": { "encounter": { 1: `Você deve ser uma Treinadora forte. Sim, bastante forte… @@ -3562,6 +4565,29 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Como isso é possível?" } }, + "kahili": { + "encounter": { + 1: "Então, aqui está você… Por que não vemos para quem os ventos favorecem hoje, você… ou eu?" + }, + "victory": { + 1: "É frustrante para mim como membro da Elite dos Quatro, mas parece que sua força é real." + }, + "defeat": { + 1: "Essa foi uma jogada de mestre!" + } + }, + "hassel": { + "encounter": { + 1: "Prepare-se para aprender em primeira mão como é a respiração ardente de uma batalha feroz!" + }, + "victory": { + 1: `A sorte sorriu para mim desta vez, mas… + $Julgando pelo andamento da luta, quem sabe se serei tão sortudo na próxima vez.`, + }, + "defeat": { + 1: "Essa foi uma jogada de mestre!" + } + }, "blue": { "encounter": { 1: "Você deve ser muito boa para chegar tão longe." @@ -3573,6 +4599,39 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Viu? Meu poder é o que me trouxe até aqui." } }, + "piers": { + "encounter": { + 1: "Prepare-se para uma mosh pit comigo e minha galera! Spikemuth, é hora de roquear!" + }, + "victory": { + 1: "Eu e minha equipe demos o nosso melhor. Vamos nos encontrar novamente para uma batalha algum dia…" + }, + "defeat": { + 1: "Minha garganta está desgastada de tanto gritar… Mas essa foi uma batalha empolgante!" + } + }, + "red": { + "encounter": { + 1: "…!" + }, + "victory": { + 1: "…?" + }, + "defeat": { + 1: "…!" + } + }, + "jasmine": { + "encounter": { + 1: "Oh… Seus Pokémon são impressionantes. Acho que vou gostar disso." + }, + "victory": { + 1: "Você é realmente forte. Vou ter que me esforçar muito mais também." + }, + "defeat": { + 1: "Eu nunca esperei ganhar." + } + }, "lance_champion": { "encounter": { 1: "Ainda sou o Campeão. Não vou segurar nada." @@ -3584,6 +4643,96 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Defendi com sucesso meu Campeonato." } }, + "steven": { + "encounter": { + 1: `Diga-me… O que você viu na sua jornada com seus Pokémon? + $O que você sentiu, encontrando tantos outros Treinadores por aí? + $Viajar por esta terra rica… Isso despertou algo dentro de você? + $Quero que você venha até mim com tudo o que aprendeu. + $Meus Pokémon e eu responderemos com tudo o que sabemos!`, + }, + "victory": { + 1: "Então eu, o Campeão, caio em derrota…" + }, + "defeat": { + 1: "Esse tempo foi bem gasto! Obrigado!" + } + }, + "cynthia": { + "encounter": { + 1: "Eu, Cynthia, aceito seu desafio! Não haverá nenhuma trégua da minha parte!" + }, + "victory": { + 1: "Não importa o quão divertida a batalha seja, ela sempre terminará algum dia…" + }, + "defeat": { + 1: "Mesmo que você perca, nunca perca o amor pelos Pokémon." + } + }, + "iris": { + "encounter": { + 1: `Sabe de uma coisa? Estou realmente ansiosa para ter batalhas sérias com Treinadores fortes! + $Quero dizer, vamos lá! Os Treinadores que chegam aqui são Treinadores que desejam a vitória com todas as fibras do seu ser! + $E eles estão batalhando ao lado de Pokémon que passaram por inúmeras batalhas difíceis! + $Se eu batalhar com pessoas assim, não só eu ficarei mais forte, meus Pokémon também! + $E nós vamos nos conhecer ainda melhor! OK! Prepare-se! + $Sou Iris, a Campeã da Liga Pokémon, e vou te derrotar!`, + }, + "victory": { + 1: "Aghhhh… Eu dei o meu melhor, mas nós perdemos…" + }, + "defeat": { + 1: "Yay! Nós vencemos!" + } + }, + "hau": { + "encounter": { + 1: `Eu me pergunto se um Treinador batalha de maneira diferente dependendo se ele é de uma região quente ou fria. + $Vamos testar isso!`, + }, + "victory": { + 1: "Isso foi incrível! Acho que entendi um pouco melhor seu estilo agora!" + }, + "defeat": { + 1: "Cara, essa foi uma batalha e tanto!" + } + }, + "geeta": { + "encounter": { + 1: `Decidi entrar na batalha mais uma vez. + $Venha agora… Mostre-me os frutos do seu treinamento.`, + }, + "victory": { + 1: "Estou ansiosa para notícias de todas as suas conquistas!" + }, + "defeat": { + 1: "Qual o problema? Isso é tudo?" + } + }, + "nemona": { + "encounter": { + 1: "Yesss! Estou tão empolgada! Hora de soltar tudo!" + }, + "victory": { + 1: "Bem, isso foi ruim, mas ainda me diverti! Eu te pego na próxima!" + }, + "defeat": { + 1: "Bem, essa foi uma ótima batalha! Frutífera, com certeza." + } + }, + "leon": { + "encounter": { + 1: "Vamos ter um tempo absolutamente campeão!" + }, + "victory": { + 1: `Meu tempo como Campeão acabou… + $Mas que tempo campeão foi! + $Obrigado pela melhor batalha que já tive!`, + }, + "defeat": { + 1: "Um tempo absolutamente campeão, foi!" + } + }, "whitney": { "encounter": { 1: "Eai! Você não acha que os Pokémon são, tipo, super fofos?" @@ -3617,6 +4766,28 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Coma, meu adorável Vivillon!" } }, + "pryce": { + "encounter": { + 1: "A juventude sozinha não garante a vitória! Experiência é o que conta." + }, + "victory": { + 1: "Excelente! Isso foi perfeito. Tente não esquecer o que sente agora." + }, + "defeat": { + 1: "Exatamente como eu imaginei." + } + }, + "clair": { + "encounter": { + 1: "Você sabe quem eu sou? E ainda se atreve a me desafiar?" + }, + "victory": { + 1: "Eu me pergunto até onde você pode ir com seu nível de habilidade. Isso deve ser fascinante." + }, + "defeat": { + 1: "E é isso." + } + }, "maylene": { "encounter": { 1: `Vim desafiá-la agora e não vou segurar nada. @@ -3629,6 +4800,18 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Isso foi incrível." } }, + "fantina": { + "encounter": { + 1: `Você vai me desafiar, não é? Mas eu vou ganhar. + $É o que a Líder do Ginásio de Hearthome faz, não?`, + }, + "victory": { + 1: "Você é tão incrivelmente forte. Sei porque perdi." + }, + "defeat": { + 1: "Estou tão, tão, muito feliz!" + } + }, "byron": { "encounter": { 1: `Treinadora! Você é jovem, assim como meu filho, Roark. @@ -3642,6 +4825,17 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Gwahahaha! Como foram meus Pokémon robustos?!" } }, + "olympia": { + "encounter": { + 1: "Um costume antigo decidindo o destino de alguém. A batalha começa!" + }, + "victory": { + 1: "Crie seu próprio caminho. Não deixe nada te atrapalhar. Seu destino, seu futuro." + }, + "defeat": { + 1: "Nosso caminho está claro agora." + } + }, "volkner": { "encounter": { 1: `Já que você chegou tão longe, deve ser bastante forte… @@ -3657,6 +4851,108 @@ export const PGFdialogue: DialogueTranslationEntries = { $Isso não é o que eu queria!`, } }, + "burgh": { + "encounter": { + 1: `M'hm… Se eu ganhar esta batalha, sinto que posso desenhar um quadro diferente de qualquer outro. + $OK! Posso ouvir minha musa da batalha claramente. Vamos direto ao ponto!`, + 2: `Claro, estou realmente orgulhoso de todos os meus Pokémon! + $Bem agora… Vamos direto ao ponto!` + }, + "victory": { + 1: "Acabou? Minha musa me abandonou?", + 2: "Hmm… Acabou! Você é incrível!" + }, + "defeat": { + 1: "Uau… É bonito de alguma forma, não é…", + 2: `Às vezes ouço as pessoas dizerem que foi uma vitória feia. + $Acho que se você está dando o seu melhor, qualquer vitória é bonita.` + } + }, + "elesa": { + "encounter": { + 1: `C'est fini! Quando tenho certeza disso, sinto um choque elétrico percorrer meu corpo! + $Quero sentir essa sensação, então agora meus amados Pokémon vão fazer sua cabeça girar!`, + }, + "victory": { + 1: "Eu queria fazer sua cabeça girar, mas você me surpreendeu." + }, + "defeat": { + 1: "Isso foi insatisfatório de alguma forma… Você dará tudo de si na próxima vez?" + } + }, + "skyla": { + "encounter": { + 1: `Finalmente é hora do confronto! Isso significa a batalha Pokémon que decide quem está no topo, certo? + $Eu amo estar no topo! Porque você pode ver para sempre e sempre de lugares altos! + $Então, que tal nós nos divertirmos?`, + }, + "victory": { + 1: "Ser seu oponente na batalha é uma nova fonte de força para mim. Obrigada!" + }, + "defeat": { + 1: "Ganhar ou perder, você sempre ganha algo com uma batalha, certo?" + } + }, + "brycen": { + "encounter": { + 1: `Há também força em estar com outras pessoas e Pokémon. + $Receber o apoio deles te fortalece. Vou te mostrar esse poder!`, + }, + "victory": { + 1: "A maravilhosa combinação de você e seus Pokémon! Que amizade linda!" + }, + "defeat": { + 1: "Condições extremas realmente testam e treinam você!" + } + }, + "drayden": { + "encounter": { + 1: `O que eu quero encontrar é um jovem Treinador que possa me mostrar um futuro brilhante. + $Vamos batalhar com tudo o que temos: sua habilidade, minha experiência e o amor com que criamos nossos Pokémon!`, + }, + "victory": { + 1: "Esse sentimento intenso que me invade após uma derrota… Não sei como descrevê-lo." + }, + "defeat": { + 1: "Harrumph! Sei que sua habilidade é maior que isso!" + } + }, + "grant": { + "encounter": { + 1: `Só há uma coisa que desejo. + $Que, superando um ao outro, encontremos um caminho para alturas ainda maiores.`, + }, + "victory": { + 1: "Você é uma parede que não consigo superar!" + }, + "defeat": { + 1: `Não desista. + $Isso é tudo o que realmente importa. + $As lições mais importantes da vida são simples.`, + } + }, + "korrina": { + "encounter": { + 1: "Hora da grande aparição de Lady Korrina!" + }, + "victory": { + 1: "É o seu próprio ser que permite que seus Pokémon evoluam!" + }, + "defeat": { + 1: "Que batalha explosiva!" + } + }, + "clemont": { + "encounter": { + 1: "Oh! Estou feliz por termos nos encontrado!" + }, + "victory": { + 1: "Sua paixão pela batalha me inspira!" + }, + "defeat": { + 1: "Parece que minha Máquina Treinadora-Crescer-Forte, Mach 2 está realmente funcionando!" + } + }, "valerie": { "encounter": { 1: `Oh, se não é uma jovem Treinadora… É adorável conhecê-la assim. @@ -3730,6 +5026,42 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Bom trabalho, eu suponho." } }, + "gordie": { + "encounter": { + 1: "Então, vamos acabar com isso." + }, + "victory": { + 1: "Eu só quero me enterrar em um buraco… Bem, acho que seria mais como cair daqui." + }, + "defeat": { + 1: "Batalhe como sempre faz, a vitória seguirá!" + } + }, + "marnie": { + "encounter": { + 1: `A verdade é que, quando tudo está dito e feito… Eu realmente só quero me tornar Campeã por mim mesma! + $Então, não leve para o pessoal quando eu chutar seu traseiro!`, + }, + "victory": { + 1: "OK, então eu perdi… Mas consegui ver muitos dos pontos bons de você e seus Pokémon!" + }, + "defeat": { + 1: "Espero que você tenha gostado das nossas táticas de batalha." + } + }, + "raihan": { + "encounter": { + 1: "Vou derrotar o Campeão, vencer todo o torneio e provar ao mundo o quão forte o grande Raihan realmente é!" + }, + "victory": { + 1: `Eu pareço bem mesmo quando perco. + $É uma verdadeira maldição. + $Acho que é hora de mais uma selfie!`, + }, + "defeat": { + 1: "Vamos tirar uma selfie para lembrar disso." + } + }, "brassius": { "encounter": { 1: "Pressuponho que você está pronta? Que nossa obra de arte colaborativa comece!" @@ -3755,6 +5087,17 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Seus olhos são MEUS!" } }, + "larry": { + "encounter": { + 1: "Quando tudo está dito e feito, a simplicidade é mais forte." + }, + "victory": { + 1: "Uma porção de derrota, hein?" + }, + "defeat": { + 1: "Vou encerrar o dia." + } + }, "ryme": { "encounter": { 1: "Vamos lá, baby! Me agite até os ossos!" @@ -3766,6 +5109,31 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: "Até mais, baby!" } }, + "grusha": { + "encounter": { + 1: "Tudo o que preciso fazer é garantir que o poder do meu Pokémon te arrependa até os ossos!" + }, + "victory": { + 1: "Sua paixão ardente... Eu meio que gosto, para ser honesto." + }, + "defeat": { + 1: "As coisas não esquentaram para você." + } + }, + "marnie_elite": { + "encounter": { + 1: "Você chegou até aqui, hein? Vamos ver se você pode lidar com meus Pokémon!", + 2: "Vou dar o meu melhor, mas não pense que vou pegar leve com você!" + }, + "victory": { + 1: "Não acredito que perdi... Mas você mereceu essa vitória. Bem feito!", + 2: "Parece que ainda tenho muito a aprender. Porém, grande batalha!" + }, + "defeat": { + 1: "Você lutou bem, mas eu tenho a vantagem! Melhor sorte na próxima vez!", + 2: "Parece que meu treinamento valeu a pena. Obrigado pela batalha!" + } + }, "nessa_elite": { "encounter": { 1: "As marés estão mudando a meu favor. Pronta para ser levada pela corrente?", @@ -3780,6 +5148,20 @@ export const PGFdialogue: DialogueTranslationEntries = { 2: "Você lutou bem, mas o poder do oceano é imparável!" } }, + "bea_elite": { + "encounter": { + 1: "Prepare-se! Meu espírito de luta brilha intensamente!", + 2: "Vamos ver se você consegue acompanhar meu ritmo implacável!" + }, + "victory": { + 1: "Sua força... É impressionante. Você realmente merece essa vitória.", + 2: "Nunca senti essa intensidade antes. Trabalho incrível!" + }, + "defeat": { + 1: "Outra vitória para meu rigoroso regime de treinamento! Bem feito!", + 2: "Você tem força, mas eu treinei mais. Grande batalha!" + } + }, "allister_elite": { "encounter": { 1: "As sombras caem... Você está pronta para enfrentar seus medos?", @@ -3808,6 +5190,32 @@ export const PGFdialogue: DialogueTranslationEntries = { 2: "Você foi pega na minha tempestade! Melhor sorte na próxima vez!" } }, + "alder": { + "encounter": { + 1: "Se prepare para uma batalha contra o Treinador mais forte de Unova!" + }, + "victory": { + 1: "Muito bem! Você certamente é um talento incomparável." + }, + "defeat": { + 1: `Um vento fresco sopra em meu coração... + $Que esforço extraordinário!` + } + }, + "kieran": { + "encounter": { + 1: `Através do trabalho duro, eu me torno cada vez mais forte! + $Eu não perco.` + }, + "victory": { + 1: `Eu não acredito... + $Que batalha divertida e emocionante!` + }, + "defeat": { + 1: `Uau, que batalha! + $Hora de você treinar ainda mais.` + } + }, "rival": { "encounter": { 1: `@c{smile}Eai, estava procurando você! Sabia que você estava ansiosa para começar, mas esperava pelo menos um tchau… @@ -3819,7 +5227,8 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: `@c{shock}Caramba… Você me limpou.\nVocê é mesmo uma novata? $@c{smile}Talvez tenha sido um pouco de sorte, mas…\nQuem sabe você consiga chegar até o fim. $Aliás, o professor me pediu para te dar esses itens. Eles parecem bem legais. - $@c{serious_smile_fists}Boa sorte lá fora!` + $@c{serious_smile_fists}Boa sorte lá fora! + $@c{smile}Ah- e eu espero que você aproveite o evento!` }, }, "rival_female": { @@ -3833,7 +5242,8 @@ export const PGFdialogue: DialogueTranslationEntries = { 1: `@c{shock}Você acabou de começar e já está tão forte?!@d{96}\n@c{angry}Você trapaceou, não foi? $@c{smile_wave_wink}Brincadeirinha!@d{64} @c{smile_eclosed}Eu perdi de forma justa… Tenho a sensação de que você vai se sair muito bem lá fora. $@c{smile}Aliás, o professor pediu para eu te dar alguns itens. Espero que sejam úteis! - $@c{smile_wave}Dê o seu melhor, como sempre! Eu acredito em você!` + $@c{smile_wave}Dê o seu melhor, como sempre! Eu acredito em você! + $@c{smile}Ah- e eu espero que você aproveite o evento!` }, }, "rival_2": { @@ -3849,7 +5259,7 @@ export const PGFdialogue: DialogueTranslationEntries = { $@c{smile}Tudo bem, no entanto. Eu imaginei que isso poderia acontecer.\n@c{serious_mopen_fists}Isso só significa que preciso me esforçar mais para a próxima vez!\n $@c{smile}Ah, não que você precise realmente de ajuda, mas eu tinha um extra desses itens e pensei que você poderia querer. $@c{serious_smile_fists}Não espere outro depois deste!\nNão posso continuar dando vantagem ao meu oponente. - $@c{smile}Enfim, cuide-se!` + $@c{smile}Enfim, cuide-se, e aproveite o evento!` }, }, "rival_2_female": { @@ -3863,9 +5273,9 @@ export const PGFdialogue: DialogueTranslationEntries = { "victory": { 1: `@c{neutral}Eu… não era para eu perder dessa vez… $@c{smile}Ah bem. Isso só significa que vou ter que treinar ainda mais para a próxima vez! - $@c{smile_wave}Também consegui mais um desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~. - $@c{angry_mopen}Este é o último, hein! Você não vai ganhar mais nenhum presente de mim depois desse! - $@c{smile_wave}Continue assim!` + $@c{smile_wave}Também consegui mais dois desses para você!\n@c{smile_wave_wink}Não precisa me agradecer~. + $@c{angry_mopen}Estes são os últimos, hein! Você não vai ganhar mais nenhum presente de mim depois desse! + $@c{smile_wave}Continue assim, e aproveite o evento!` }, "defeat": { 1: "Está tudo bem perder às vezes…" diff --git a/src/locales/pt_BR/menu.ts b/src/locales/pt_BR/menu.ts index 927ccce518b..87be5d8bed0 100644 --- a/src/locales/pt_BR/menu.ts +++ b/src/locales/pt_BR/menu.ts @@ -35,11 +35,11 @@ export const menu: SimpleTranslationEntries = { "sessionSuccess": "Sessão carregada com sucesso.", "failedToLoadSession": "Não foi possível carregar os dados da sua sessão.\nEles podem estar corrompidos.", "boyOrGirl": "Você é um menino ou uma menina?", - "evolving": "Que?\n{{pokemonName}} tá evoluindo!", + "evolving": "Quê?\n{{pokemonName}} tá evoluindo!", "stoppedEvolving": "{{pokemonName}} parou de evoluir.", "pauseEvolutionsQuestion": "Gostaria de pausar evoluções para {{pokemonName}}?\nEvoluções podem ser religadas na tela de equipe.", "evolutionsPaused": "Evoluções foram paradas para {{pokemonName}}.", - "evolutionDone": "Parabéns!\nSeu {{pokemonName}} evolui para {{evolvedPokemonName}}!", + "evolutionDone": "Parabéns!\nSeu {{pokemonName}} evoluiu para {{evolvedPokemonName}}!", "dailyRankings": "Classificação Diária", "weeklyRankings": "Classificação Semanal", "noRankings": "Sem Classificação", diff --git a/src/locales/pt_BR/modifier.ts b/src/locales/pt_BR/modifier.ts index 168665205c3..eadd5c5667a 100644 --- a/src/locales/pt_BR/modifier.ts +++ b/src/locales/pt_BR/modifier.ts @@ -4,7 +4,7 @@ export const modifier: SimpleTranslationEntries = { "surviveDamageApply": "{{pokemonNameWithAffix}} aguentou o tranco\nusando sua {{typeName}}!", "turnHealApply": "{{pokemonNameWithAffix}} restaurou um pouco de PS usando\nsuas {{typeName}}!", "hitHealApply": "{{pokemonNameWithAffix}} restaurou um pouco de PS usando\nsua {{typeName}}!", - "pokemonInstantReviveApply": "{{pokemonNameWithAffix}} foi revivido\npor sua {{typeName}}!", + "pokemonInstantReviveApply": "{{pokemonNameWithAffix}} foi reanimado\npor sua {{typeName}}!", "pokemonResetNegativeStatStageApply": "Os atributos diminuídos de {{pokemonNameWithAffix}} foram\nrestaurados por seu(sua) {{typeName}}!", "moneyInterestApply": "Você recebeu um juros de ₽{{moneyAmount}}\nde sua {{typeName}}!", "turnHeldItemTransferApply": "{{itemName}} de {{pokemonNameWithAffix}} foi absorvido(a)\npelo {{typeName}} de {{pokemonName}}!", diff --git a/src/locales/pt_BR/move-trigger.ts b/src/locales/pt_BR/move-trigger.ts index 042d539338e..620f867ae9a 100644 --- a/src/locales/pt_BR/move-trigger.ts +++ b/src/locales/pt_BR/move-trigger.ts @@ -26,7 +26,7 @@ export const moveTriggers: SimpleTranslationEntries = { "soothingAromaWaftedThroughArea": "Um aroma suave se espalhou pelo ambiente!", "sprangUp": "{{pokemonName}} se levantou!", "choseDoomDesireAsDestiny": "{{pokemonName}} escolheu\no Desejo da Perdição como seu destino!", - "vanishedInstantly": "{{pokemonName}} desapareceu/nde repente!", + "vanishedInstantly": "{{pokemonName}} desapareceu\nde repente!", "tookTargetIntoSky": "{{pokemonName}} levou {{targetName}}\npara o céu!", "becameCloakedInFreezingLight": "{{pokemonName}} ficou envolto/nem uma luz congelante!", "becameCloakedInFreezingAir": "{{pokemonName}} ficou envolto/nem ar congelante!", diff --git a/src/locales/pt_BR/party-ui-handler.ts b/src/locales/pt_BR/party-ui-handler.ts index 08132b4bfc0..1f3e0fbe242 100644 --- a/src/locales/pt_BR/party-ui-handler.ts +++ b/src/locales/pt_BR/party-ui-handler.ts @@ -15,7 +15,7 @@ export const partyUiHandler: SimpleTranslationEntries = { "ALL": "Tudo", "PASS_BATON": "Passar Bastão", "UNPAUSE_EVOLUTION": "Ativar Evolução", - "REVIVE": "Reviver", + "REVIVE": "Reanimar", "RENAME": "Renomear", "choosePokemon": "Escolha um Pokémon.", diff --git a/src/locales/pt_BR/pokemon-form.ts b/src/locales/pt_BR/pokemon-form.ts index 062fc165ae0..dbe63fb7864 100644 --- a/src/locales/pt_BR/pokemon-form.ts +++ b/src/locales/pt_BR/pokemon-form.ts @@ -29,7 +29,7 @@ export const pokemonForm: SimpleTranslationEntries = { "pikachuPartner": "Parceiro", "eeveePartner": "Parceiro", // 2G - "pichuSpiky": "Spiky", + "pichuSpiky": "Orelha Espetada", "unownA": "A", "unownB": "B", "unownC": "C", @@ -74,8 +74,8 @@ export const pokemonForm: SimpleTranslationEntries = { "rotomFrost": "Congelante", "rotomFan": "Ventilador", "rotomMow": "Corte", - "giratinaAltered": "Altered", - "shayminLand": "Land", + "giratinaAltered": "Alterado", + "shayminLand": "Terrestre", // 5G "basculinRedStriped": "Listras Vermelhas", "basculinBlueStriped": "Listras Azuis", @@ -84,11 +84,11 @@ export const pokemonForm: SimpleTranslationEntries = { "deerlingSummer": "Verão", "deerlingAutumn": "Outono", "deerlingWinter": "Inverno", - "tornadusIncarnate": "Incarnate", - "thundurusIncarnate": "Incarnate", - "landorusIncarnate": "Incarnate", - "keldeoOrdinary": "Ordinary", - "meloettaAria": "Aria", + "tornadusIncarnate": "Materializado", + "thundurusIncarnate": "Materializado", + "landorusIncarnate": "Materializado", + "keldeoOrdinary": "Comum", + "meloettaAria": "Ária", // 6G "froakieBattleBond": "Vínculo de Batalha", "scatterbugMeadow": "Prado", @@ -165,11 +165,11 @@ export const pokemonForm: SimpleTranslationEntries = { "eiscueNoIce": "Descongelado", "indeedeeMale": "Macho", "indeedeeFemale": "Fêmea", - "morpekoFullBelly": "Full Belly", - "zacianHeroOfManyBattles": "Hero Of Many Battles", - "zamazentaHeroOfManyBattles": "Hero Of Many Battles", + "morpekoFullBelly": "Saciado", + "zacianHeroOfManyBattles": "Herói Veterano", + "zamazentaHeroOfManyBattles": "Herói Veterano", "zarudeDada": "Papa", - "enamorusIncarnate": "Incarnate", + "enamorusIncarnate": "Materializado", // 9G "squawkabillyGreenPlumage": "Plumas Verdes", "squawkabillyBluePlumage": "Plumas Azuis", diff --git a/src/locales/zh_CN/dialogue.ts b/src/locales/zh_CN/dialogue.ts index 20d1d0d6040..29afb56c40e 100644 --- a/src/locales/zh_CN/dialogue.ts +++ b/src/locales/zh_CN/dialogue.ts @@ -2463,7 +2463,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile}嘿,我在找你呢!我知道你急着上路,\n但至少说个再见吧…$@c{smile_eclosed}所以你终于要开始追逐梦想了?\n我几乎不敢相信。$@c{serious_smile_fists}来都来了,来一场对战怎么样?\n毕竟,我想看看你是不是准备周全了。$@c{serious_mopen_fists}不要手下留情,我想让你全力以赴!", }, "victory": { - 1: "@c{shock}哇…你彻底击败了我。\n你是真初学者吗?$@c{smile}也许是靠点运气,但是…\n谁知道,你可能真的能一路走下去。$顺便说一下,博士让我给你这些东西。它们看起来可牛了。$@c{serious_smile_fists}祝你好运!", + 1: "@c{shock}哇…你彻底击败了我。\n你是真初学者吗?$@c{smile}也许是靠点运气,但是…\n谁知道,你可能真的能一路走下去。$顺便说一下,博士让我给你这些东西。它们看起来可牛了。$@c{serious_smile_fists}祝你好运!$@c{smile}哦!我希望你能喜欢这次的活动! ", }, }, "rival_female": { @@ -2471,7 +2471,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile_wave}你在这儿啊!我到处找你呢!$@c{angry_mopen}你忘了和你最好的朋友说再见了吗?$@c{smile_ehalf}你要去追逐梦想了,对吧?\n从今天开始,是不是…$@c{smile}不管怎样,忘了我的事就原谅你吧,\n但有个条件。@c{smile_wave_wink}你必须和我对战!$@c{angry_mopen}全力以赴!\n你也不想让你的冒险在开始之前就结束了,对吧?", }, "victory": { - 1: "@c{shock}你刚开始就已经这么强了?!@d{96}$@c{angry}你是不是开了?$@c{smile_wave_wink}只是开个玩笑啦!@d{64} @c{smile_eclosed}我输地心服口服了…\n我感觉你出去挺有天赋的。$@c{smile}顺便说一下,博士想让我给你一些东西。\n希望它们能帮上忙!$@c{smile_wave}像往常一样尽力而为!\n我相信你!", + 1: "@c{shock}你刚开始就已经这么强了?!@d{96}$@c{angry}你是不是开了?$@c{smile_wave_wink}只是开个玩笑啦!@d{64} @c{smile_eclosed}我输地心服口服了…\n我感觉你出去挺有天赋的。$@c{smile}顺便说一下,博士想让我给你一些东西。\n希望它们能帮上忙!$@c{smile_wave}像往常一样尽力而为!\n我相信你!$@c{smile}哦!我希望你能喜欢这次的活动! ", }, }, "rival_2": { @@ -2479,7 +2479,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile}嘿,你也在这里吗?$@c{smile_eclosed}一路过关斩将,是吧?$@c{serious_mopen_fists}我知道看起来好像我尾随着你来到这里,\n怎么可能啦。$@c{serious_smile_fists}说真的,自从你在老家打败我后,\n我就一直很渴望再比一场。$我自己也进行了很多训练,\n所以这次我肯定会好好打一场。$@c{serious_mopen_fists}不要手下留情,就像以前一样!$让我们开始吧!", }, "victory": { - 1: "@c{neutral_eclosed}哦。我过于自信了。$@c{smile}不过没关系。我猜到可能会这样。$@c{serious_mopen_fists}这只意味着我下次需要更努力!$$@c{smile}呃,不是特意帮你,我正好有多余的这个,\n我觉得你可能想要。$$@c{serious_smile_fists}不过这次之后别指望再有了!$我不能一直给我的对手优势。$@c{smile}反正,保重!", + 1: "@c{neutral_eclosed}哦。我过于自信了。$@c{smile}不过没关系。我猜到可能会这样。$@c{serious_mopen_fists}这只意味着我下次需要更努力!$$@c{smile}呃,不是特意帮你,我正好有多余的这个,\n我觉得你可能想要。$$@c{serious_smile_fists}不过这次之后别指望再有了!$我不能一直给我的对手优势。$@c{smile}反正,保重,要享受活动哦!", }, }, "rival_2_female": { @@ -2487,7 +2487,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile_wave}哦,真巧,在这里遇见你。\n看来你还没输过嘛。@c{angry_mopen}哈……好家伙!$@c{angry_mopen}我知道你在想什么,\n不,我才不会跟踪你什么呢。 @c{smile_eclosed}我只是碰巧在附近。$@c{smile_ehalf}我为你感到高兴,但我只想让你知道\n有时输了是可以接受的。$@c{smile}我们从错误中学到的东西\n往往比我们一直成功时学到的还要多。$@c{angry_mopen}无论如何,我为了我们的复赛已经努力训练了\n所以你最好全力以赴!", }, "victory": { - 1: "@c{neutral}我……没打算会输来着……$@c{smile}嗷……好吧。看来我要再更加努力训练了!$@c{smile_wave}我还给你带了个这个$@c{smile_wave_wink}不用谢我哦~.$@c{angry_mopen}不过,这是最后一个啦!\n你可别想再从我这赚小便宜了~$@c{smile_wave}要保重哦!", + 1: "@c{neutral}我……没打算会输来着……$@c{smile}嗷……好吧。看来我要再更加努力训练了!$@c{smile_wave}我还给你带了个这个$@c{smile_wave_wink}不用谢我哦~.$@c{angry_mopen}不过,这是最后一个啦!\n你可别想再从我这赚小便宜了~$@c{smile_wave}要保重哦,要享受活动哦!", }, "defeat": { 1: "输了有时候也不要紧的…", diff --git a/src/locales/zh_TW/dialogue.ts b/src/locales/zh_TW/dialogue.ts index cfe43317bb7..06ccc745a49 100644 --- a/src/locales/zh_TW/dialogue.ts +++ b/src/locales/zh_TW/dialogue.ts @@ -2463,7 +2463,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile}嘿,我在找你呢!我知道你急著上路,\n但至少說個再見吧…$@c{smile_eclosed}所以你終於要開始追逐夢想了?\n我幾乎不敢相信。$@c{serious_smile_fists}來都來了,來一場對戰怎麼樣?\n畢竟,我想看看你是不是準備周全了。$@c{serious_mopen_fists}不要手下留情,我想讓你全力以赴!", }, "victory": { - 1: "@c{shock}哇…你徹底擊敗了我。\n你是真初學者嗎?$@c{smile}也許是靠點運氣,但是…\n誰知道,你可能真的能一路走下去。$順便說一下,博士讓我給你這些東西。它們看起來可牛了。$@c{serious_smile_fists}祝你好运!", + 1: "@c{shock}哇…你徹底擊敗了我。\n你是真初學者嗎?$@c{smile}也許是靠點運氣,但是…\n誰知道,你可能真的能一路走下去。$順便說一下,博士讓我給你這些東西。它們看起來可牛了。$@c{serious_smile_fists}祝你好运!$@c{smile}哦!我希望你能喜歡這次的活動!", }, }, "rival_female": { @@ -2471,7 +2471,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile_wave}你在這兒啊!我到處找你呢!$@c{angry_mopen}你忘了和你最好的朋友說再見了嗎?$@c{smile_ehalf}你要去追逐夢想了,對吧?\n從今天開始,是不是…$@c{smile}不管怎樣,忘了我的事就原諒你吧,\n但有個條件。@c{smile_wave_wink}你必須和我對戰!$@c{angry_mopen}全力以赴!\n你也不想讓你的冒險在開始之前就結束了,對吧?", }, "victory": { - 1: "@c{shock}你剛開始就已經這麼強了?!@d{96}$@c{angry}你是不是開了?$@c{smile_wave_wink}只是開個玩笑啦!@d{64} @c{smile_eclosed}我輸地心服口服了…\n我感覺你出去挺有天賦的。$@c{smile}順便說一下,博士想讓我給你一些東西。\n希望它們能幫上忙!$@c{smile_wave}像往常一樣盡力而為!\n我相信你!", + 1: "@c{shock}你剛開始就已經這麼強了?!@d{96}$@c{angry}你是不是開了?$@c{smile_wave_wink}只是開個玩笑啦!@d{64} @c{smile_eclosed}我輸地心服口服了…\n我感覺你出去挺有天賦的。$@c{smile}順便說一下,博士想讓我給你一些東西。\n希望它們能幫上忙!$@c{smile_wave}像往常一樣盡力而為!\n我相信你!$@c{smile}哦!我希望你能喜歡這次的活動!", }, }, "rival_2": { @@ -2479,7 +2479,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile}嘿,你也在這裡嗎?$@c{smile_eclosed}一路過關斬將,是吧?$@c{serious_mopen_fists}我知道看起來好像我尾隨著你來到這裡,\n怎麼可能啦。$@c{serious_smile_fists}說真的,自從你在老家打敗我後,\n我就一直很渴望再比一場。$我自己也進行了很多訓練,\n所以這次我肯定會好好打一場。$@c{serious_mopen_fists}不要手下留情,就像以前一樣!$讓我們開始吧!", }, "victory": { - 1: "@c{neutral_eclosed}哦。我過於自信了。$@c{smile}不過沒關係。我猜到可能會這樣。$@c{serious_mopen_fists}這只意味著我下次需要更努力!$$@c{smile}呃,不是特意幫你,我正好有多餘的這個,\n我覺得你可能想要。$$@c{serious_smile_fists}不過這次之後別指望再有了!$我不能一直給我的對手優勢。$@c{smile}反正,保重!", + 1: "@c{neutral_eclosed}哦。我過於自信了。$@c{smile}不過沒關係。我猜到可能會這樣。$@c{serious_mopen_fists}這只意味著我下次需要更努力!$$@c{smile}呃,不是特意幫你,我正好有多餘的這個,\n我覺得你可能想要。$$@c{serious_smile_fists}不過這次之後別指望再有了!$我不能一直給我的對手優勢。$@c{smile}反正,保重, 要享受活動哦!", }, }, "rival_2_female": { @@ -2487,7 +2487,7 @@ export const PGMdialogue: DialogueTranslationEntries = { 1: "@c{smile_wave}哦,真巧,在這裡遇見你。\n看來你還沒輸過嘛。@c{angry_mopen}哈……好傢伙!$@c{angry_mopen}我知道你在想什麼,\n不,我才不會跟蹤你什麼呢。 @c{smile_eclosed}我只是碰巧在附近。$@c{smile_ehalf}我為你感到高興,但我只想讓你知道\n有時輸了是可以接受的。$@c{smile}我們從錯誤中學到的東西\n往往比我們一直成功時學到的還要多。$@c{angry_mopen}無論如何,我為了我們的複賽已經努力訓練了\n所以你最好全力以赴!", }, "victory": { - 1: "@c{neutral}我……沒打算會輸來著……$@c{smile}嗷……好吧。看來我要再更加努力訓練了!$@c{smile_wave}我還給你帶了個這個$@c{smile_wave_wink}不用謝我哦~.$@c{angry_mopen}不過,這是最後一個啦!\n 你可別想再從我這賺小便宜了~$@c{smile_wave}要保重哦!", + 1: "@c{neutral}我……沒打算會輸來著……$@c{smile}嗷……好吧。看來我要再更加努力訓練了!$@c{smile_wave}我還給你帶了個這個$@c{smile_wave_wink}不用謝我哦~.$@c{angry_mopen}不過,這是最後一個啦!\n 你可別想再從我這賺小便宜了~$@c{smile_wave}要保重哦,要享受活動哦!", }, "defeat": { 1: "輸了有時候也不要緊的…", diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 656353a224a..365fc433d2f 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1571,7 +1571,7 @@ const modifierPool: ModifierPool = { new WeightedModifierType(modifierTypes.EVOLUTION_ITEM, (party: Pokemon[]) => { return Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 15), 8); }, 8), - new WeightedModifierType(modifierTypes.MAP, skipInClassicAfterWave(180, 1)), + new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode.isClassic && party[0].scene.currentBattle.waveIndex < 180 ? 1 : 0, 1), new WeightedModifierType(modifierTypes.TM_GREAT, 3), new WeightedModifierType(modifierTypes.MEMORY_MUSHROOM, (party: Pokemon[]) => { if (!party.find(p => p.getLearnableLevelMoves().length)) { @@ -2209,7 +2209,7 @@ export function getDefaultModifierTypeForTier(tier: ModifierTier): ModifierType } export class ModifierTypeOption { - public type: ModifierType | null; + public type: ModifierType; public upgradeCount: integer; public cost: integer; diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index a32f3c019f4..8a6598f5849 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,5 +1,4 @@ import * as ModifierTypes from "./modifier-type"; -import { LearnMovePhase, LevelUpPhase, PokemonHealPhase } from "../phases"; import BattleScene from "../battle-scene"; import { getLevelTotalExp } from "../data/exp"; import { MAX_PER_TYPE_POKEBALLS, PokeballType } from "../data/pokeball"; @@ -7,7 +6,7 @@ import Pokemon, { PlayerPokemon } from "../field/pokemon"; import { Stat } from "../data/pokemon-stat"; import { addTextObject, TextStyle } from "../ui/text"; import { Type } from "../data/type"; -import { EvolutionPhase } from "../evolution-phase"; +import { EvolutionPhase } from "../phases/evolution-phase"; import { FusionSpeciesFormEvolution, pokemonEvolutions, pokemonPrevolutions } from "../data/pokemon-evolutions"; import { getPokemonNameWithAffix } from "../messages"; import * as Utils from "../utils"; @@ -28,6 +27,9 @@ import i18next from "i18next"; import { allMoves } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; +import { LearnMovePhase } from "#app/phases/learn-move-phase.js"; +import { LevelUpPhase } from "#app/phases/level-up-phase.js"; +import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase.js"; export type ModifierPredicate = (modifier: Modifier) => boolean; @@ -2338,7 +2340,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { * @see {@linkcode modifierTypes[MINI_BLACK_HOLE]} */ export class TurnHeldItemTransferModifier extends HeldItemTransferModifier { - readonly isTransferrable: boolean = true; + isTransferrable: boolean = true; constructor(type: ModifierType, pokemonId: integer, stackCount?: integer) { super(type, pokemonId, stackCount); } @@ -2362,6 +2364,10 @@ export class TurnHeldItemTransferModifier extends HeldItemTransferModifier { getMaxHeldItemCount(pokemon: Pokemon): integer { return 1; } + + setTransferrableFalse(): void { + this.isTransferrable = false; + } } /** @@ -2410,7 +2416,7 @@ export class ContactHeldItemTransferChanceModifier extends HeldItemTransferModif } getTransferMessage(pokemon: Pokemon, targetPokemon: Pokemon, item: ModifierTypes.ModifierType): string { - return i18next.t("modifier:contactHeldItemTransferApply", { pokemonNameWithAffix: getPokemonNameWithAffix(targetPokemon), itemName: item.name, pokemonName: pokemon.name, typeName: this.type.name }); + return i18next.t("modifier:contactHeldItemTransferApply", { pokemonNameWithAffix: getPokemonNameWithAffix(targetPokemon), itemName: item.name, pokemonName: getPokemonNameWithAffix(pokemon), typeName: this.type.name }); } getMaxHeldItemCount(pokemon: Pokemon): integer { diff --git a/src/phases.ts b/src/phases.ts deleted file mode 100644 index 0a140e171ac..00000000000 --- a/src/phases.ts +++ /dev/null @@ -1,5889 +0,0 @@ -import BattleScene, { bypassLogin } from "./battle-scene"; -import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from "./field/pokemon"; -import * as Utils from "./utils"; -import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, MoveTarget, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, PreMoveMessageAttr, HealStatusEffectAttr, NoEffectAttr, BypassRedirectAttr, FixedDamageAttr, PostVictoryStatChangeAttr, ForceSwitchOutAttr, VariableTargetAttr, IncrementMovePriorityAttr, MoveHeaderAttr, MoveCategory } 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, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, overrideModifiers, overrideHeldItems, BypassSpeedChanceModifier, TurnStatusEffectModifier, PokemonResetNegativeStatStageModifier } 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"; -import { StatusEffect, getStatusEffectActivationText, getStatusEffectCatchRateMultiplier, getStatusEffectHealText, getStatusEffectObtainText, getStatusEffectOverlapText } from "./data/status-effect"; -import { SummaryUiMode } from "./ui/summary-ui-handler"; -import EvolutionSceneHandler from "./ui/evolution-scene-handler"; -import { EvolutionPhase } from "./evolution-phase"; -import { Phase } from "./phase"; -import { BattleStat, getBattleStatLevelChangeDescription, getBattleStatName } from "./data/battle-stat"; -import { biomeLinks, getBiomeName } from "./data/biomes"; -import { ModifierTier } from "./modifier/modifier-tier"; -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, CenterOfAttentionTag, EncoreTag, ProtectedTag, SemiInvulnerableTag, TrappedTag } from "./data/battler-tags"; -import { getPokemonNameWithAffix } from "./messages"; -import { Starter } from "./ui/starter-select-ui-handler"; -import { Gender } from "./data/gender"; -import { Weather, WeatherType, getRandomWeatherType, getTerrainBlockMessage, getWeatherDamageMessage, getWeatherLapseMessage } from "./data/weather"; -import { ArenaTagSide, ArenaTrapTag, ConditionalProtectTag, MistTag, TrickRoomTag } from "./data/arena-tag"; -import { CheckTrappedAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, BlockRedirectAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, ChangeMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, PreventBypassSpeedChanceAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr, StatChangeCopyAbAttr, PokemonTypeChangeAbAttr, applyPreAttackAbAttrs, applyPostMoveUsedAbAttrs, PostMoveUsedAbAttr, MaxMultiHitAbAttr, HealFromBerryUseAbAttr, IgnoreMoveEffectsAbAttr, BlockStatusDamageAbAttr, BypassSpeedChanceAbAttr, AddSecondStrikeAbAttr, ReduceBurnDamageAbAttr } from "./data/ability"; -import { Unlockables, getUnlockableName } from "./system/unlockables"; -import { getBiomeKey } from "./field/arena"; -import { BattleType, BattlerIndex, TurnCommand } from "./battle"; -import { ChallengeAchv, HealAchv, LevelAchv, achvs } from "./system/achv"; -import { TrainerSlot, trainerConfigs } from "./data/trainer-config"; -import { EggHatchPhase } from "./egg-hatch-phase"; -import { Egg } from "./data/egg"; -import { vouchers } from "./system/voucher"; -import { clientSessionId, loggedInUser, updateUserInfo } from "./account"; -import { SessionSaveData } from "./system/game-data"; -import { addPokeballCaptureStars, addPokeballOpenParticles } from "./field/anims"; -import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangePreMoveTrigger } from "./data/pokemon-forms"; -import { battleSpecDialogue, getCharVariantFromDialogue, miscDialogue } from "./data/dialogue"; -import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from "./ui/modifier-select-ui-handler"; -import { SettingKeys } from "./system/settings/settings"; -import { Tutorial, handleTutorial } from "./tutorial"; -import { TerrainType } from "./data/terrain"; -import { OptionSelectConfig, OptionSelectItem } from "./ui/abstact-option-select-ui-handler"; -import { SaveSlotUiMode } from "./ui/save-slot-select-ui-handler"; -import { fetchDailyRunSeed, getDailyRunStarters } from "./data/daily-run"; -import { GameMode, GameModes, getGameMode } from "./game-mode"; -import PokemonSpecies, { getPokemonSpecies, speciesStarters } from "./data/pokemon-species"; -import i18next from "./plugins/i18n"; -import Overrides from "#app/overrides"; -import { TextStyle, addTextObject, getTextColor } from "./ui/text"; -import { Type } from "./data/type"; -import { BerryUsedEvent, EncounterPhaseEvent, MoveUsedEvent, TurnEndEvent, TurnInitEvent } from "./events/battle-scene"; -import { Abilities } from "#enums/abilities"; -import { ArenaTagType } from "#enums/arena-tag-type"; -import { BattleSpec } from "#enums/battle-spec"; -import { BattleStyle } from "#enums/battle-style"; -import { BattlerTagType } from "#enums/battler-tag-type"; -import { Biome } from "#enums/biome"; -import { ExpNotification } from "#enums/exp-notification"; -import { Moves } from "#enums/moves"; -import { PlayerGender } from "#enums/player-gender"; -import { Species } from "#enums/species"; -import { TrainerType } from "#enums/trainer-type"; -import { applyChallenges, ChallengeType } from "./data/challenge"; -import { pokemonEvolutions } from "./data/pokemon-evolutions"; - -const { t } = i18next; - -export class LoginPhase extends Phase { - private showText: boolean; - - constructor(scene: BattleScene, showText?: boolean) { - super(scene); - - this.showText = showText === undefined || !!showText; - } - - start(): void { - super.start(); - - const hasSession = !!Utils.getCookie(Utils.sessionIdKey); - - this.scene.ui.setMode(Mode.LOADING, { buttonActions: [] }); - Utils.executeIf(bypassLogin || hasSession, updateUserInfo).then(response => { - const success = response ? response[0] : false; - const statusCode = response ? response[1] : null; - if (!success) { - if (!statusCode || statusCode === 400) { - if (this.showText) { - this.scene.ui.showText(i18next.t("menu:logInOrCreateAccount")); - } - - this.scene.playSound("menu_open"); - - const loadData = () => { - updateUserInfo().then(success => { - if (!success[0]) { - Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); - return; - } - this.scene.gameData.loadSystem().then(() => this.end()); - }); - }; - - this.scene.ui.setMode(Mode.LOGIN_FORM, { - buttonActions: [ - () => { - this.scene.ui.playSelect(); - loadData(); - }, () => { - this.scene.playSound("menu_open"); - this.scene.ui.setMode(Mode.REGISTRATION_FORM, { - buttonActions: [ - () => { - this.scene.ui.playSelect(); - updateUserInfo().then(success => { - if (!success[0]) { - Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); - return; - } - this.end(); - } ); - }, () => { - this.scene.unshiftPhase(new LoginPhase(this.scene, false)); - this.end(); - } - ] - }); - }, () => { - const redirectUri = encodeURIComponent(`${import.meta.env.VITE_SERVER_URL}/auth/discord/callback`); - const discordId = import.meta.env.VITE_DISCORD_CLIENT_ID; - const discordUrl = `https://discord.com/api/oauth2/authorize?client_id=${discordId}&redirect_uri=${redirectUri}&response_type=code&scope=identify&prompt=none`; - window.open(discordUrl, "_self"); - }, () => { - const redirectUri = encodeURIComponent(`${import.meta.env.VITE_SERVER_URL}/auth/google/callback`); - const googleId = import.meta.env.VITE_GOOGLE_CLIENT_ID; - const googleUrl = `https://accounts.google.com/o/oauth2/auth?client_id=${googleId}&redirect_uri=${redirectUri}&response_type=code&scope=openid`; - window.open(googleUrl, "_self"); - } - ] - }); - } else if (statusCode === 401) { - Utils.removeCookie(Utils.sessionIdKey); - this.scene.reset(true, true); - } else { - this.scene.unshiftPhase(new UnavailablePhase(this.scene)); - super.end(); - } - return null; - } else { - this.scene.gameData.loadSystem().then(success => { - if (success || bypassLogin) { - this.end(); - } else { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(t("menu:failedToLoadSaveData")); - } - }); - } - }); - } - - end(): void { - this.scene.ui.setMode(Mode.MESSAGE); - - if (!this.scene.gameData.gender) { - this.scene.unshiftPhase(new SelectGenderPhase(this.scene)); - } - - handleTutorial(this.scene, Tutorial.Intro).then(() => super.end()); - } -} - -export class TitlePhase extends Phase { - private loaded: boolean; - private lastSessionData: SessionSaveData; - public gameMode: GameModes; - - constructor(scene: BattleScene) { - super(scene); - - this.loaded = false; - } - - start(): void { - super.start(); - - this.scene.ui.clearText(); - this.scene.ui.fadeIn(250); - - this.scene.playBgm("title", true); - - this.scene.gameData.getSession(loggedInUser?.lastSessionSlot ?? -1).then(sessionData => { - if (sessionData) { - this.lastSessionData = sessionData; - const biomeKey = getBiomeKey(sessionData.arena.biome); - const bgTexture = `${biomeKey}_bg`; - this.scene.arenaBg.setTexture(bgTexture); - } - this.showOptions(); - }).catch(err => { - console.error(err); - this.showOptions(); - }); - } - - showOptions(): void { - const options: OptionSelectItem[] = []; - if (loggedInUser && loggedInUser.lastSessionSlot > -1) { - options.push({ - label: i18next.t("continue", {ns: "menu"}), - handler: () => { - this.loadSaveSlot(this.lastSessionData || !loggedInUser ? -1 : loggedInUser.lastSessionSlot); - return true; - } - }); - } - options.push({ - label: i18next.t("menu:newGame"), - handler: () => { - const setModeAndEnd = (gameMode: GameModes) => { - this.gameMode = gameMode; - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); - this.end(); - }; - if (this.scene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { - const options: OptionSelectItem[] = [ - { - label: GameMode.getModeName(GameModes.CLASSIC), - handler: () => { - setModeAndEnd(GameModes.CLASSIC); - return true; - } - }, - { - label: GameMode.getModeName(GameModes.CHALLENGE), - handler: () => { - setModeAndEnd(GameModes.CHALLENGE); - return true; - } - }, - { - label: GameMode.getModeName(GameModes.ENDLESS), - handler: () => { - setModeAndEnd(GameModes.ENDLESS); - return true; - } - } - ]; - if (this.scene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE]) { - options.push({ - label: GameMode.getModeName(GameModes.SPLICED_ENDLESS), - handler: () => { - setModeAndEnd(GameModes.SPLICED_ENDLESS); - return true; - } - }); - } - options.push({ - label: i18next.t("menu:cancel"), - handler: () => { - this.scene.clearPhaseQueue(); - this.scene.pushPhase(new TitlePhase(this.scene)); - super.end(); - return true; - } - }); - this.scene.ui.showText(i18next.t("menu:selectGameMode"), null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); - } else { - this.gameMode = GameModes.CLASSIC; - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); - this.end(); - } - return true; - } - }, - { - label: i18next.t("menu:loadGame"), - handler: () => { - this.scene.ui.setOverlayMode(Mode.SAVE_SLOT, SaveSlotUiMode.LOAD, - (slotId: integer) => { - if (slotId === -1) { - return this.showOptions(); - } - this.loadSaveSlot(slotId); - }); - return true; - } - }, - { - label: i18next.t("menu:dailyRun"), - handler: () => { - this.initDailyRun(); - return true; - }, - keepOpen: true - }, - { - label: i18next.t("menu:settings"), - handler: () => { - this.scene.ui.setOverlayMode(Mode.SETTINGS); - return true; - }, - keepOpen: true - }); - const config: OptionSelectConfig = { - options: options, - noCancel: true, - yOffset: 47 - }; - this.scene.ui.setMode(Mode.TITLE, config); - } - - loadSaveSlot(slotId: integer): void { - this.scene.sessionSlotId = slotId > -1 || !loggedInUser ? slotId : loggedInUser.lastSessionSlot; - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.resetModeChain(); - this.scene.gameData.loadSession(this.scene, slotId, slotId === -1 ? this.lastSessionData : undefined).then((success: boolean) => { - if (success) { - this.loaded = true; - this.scene.ui.showText(i18next.t("menu:sessionSuccess"), null, () => this.end()); - } else { - this.end(); - } - }).catch(err => { - console.error(err); - this.scene.ui.showText(i18next.t("menu:failedToLoadSession"), null); - }); - } - - initDailyRun(): void { - this.scene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { - this.scene.clearPhaseQueue(); - if (slotId === -1) { - this.scene.pushPhase(new TitlePhase(this.scene)); - return super.end(); - } - this.scene.sessionSlotId = slotId; - - const generateDaily = (seed: string) => { - this.scene.gameMode = getGameMode(GameModes.DAILY); - - this.scene.setSeed(seed); - this.scene.resetSeed(1); - - this.scene.money = this.scene.gameMode.getStartingMoney(); - - const starters = getDailyRunStarters(this.scene, seed); - const startingLevel = this.scene.gameMode.getStartingLevel(); - - const party = this.scene.getParty(); - const loadPokemonAssets: Promise[] = []; - for (const starter of starters) { - const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); - const starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); - const starterGender = starter.species.malePercent !== null - ? !starterProps.female ? Gender.MALE : Gender.FEMALE - : Gender.GENDERLESS; - const starterPokemon = this.scene.addPlayerPokemon(starter.species, startingLevel, starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, undefined, starter.nature); - starterPokemon.setVisible(false); - party.push(starterPokemon); - loadPokemonAssets.push(starterPokemon.loadAssets()); - } - - regenerateModifierPoolThresholds(party, ModifierPoolType.DAILY_STARTER); - const modifiers: Modifier[] = Array(3).fill(null).map(() => modifierTypes.EXP_SHARE().withIdFromFunc(modifierTypes.EXP_SHARE).newModifier()) - .concat(Array(3).fill(null).map(() => modifierTypes.GOLDEN_EXP_CHARM().withIdFromFunc(modifierTypes.GOLDEN_EXP_CHARM).newModifier())) - .concat(getDailyRunStarterModifiers(party)) - .filter((m) => m !== null); - - for (const m of modifiers) { - this.scene.addModifier(m, true, false, false, true); - } - this.scene.updateModifiers(true, true); - - Promise.all(loadPokemonAssets).then(() => { - this.scene.time.delayedCall(500, () => this.scene.playBgm()); - this.scene.gameData.gameStats.dailyRunSessionsPlayed++; - this.scene.newArena(this.scene.gameMode.getStartingBiome(this.scene)); - this.scene.newBattle(); - this.scene.arena.init(); - this.scene.sessionPlayTime = 0; - this.scene.lastSavePlayTime = 0; - this.end(); - }); - }; - - // If Online, calls seed fetch from db to generate daily run. If Offline, generates a daily run based on current date. - if (!Utils.isLocal) { - fetchDailyRunSeed().then(seed => { - if (seed) { - generateDaily(seed); - } else { - throw new Error("Daily run seed is null!"); - } - }).catch(err => { - console.error("Failed to load daily run:\n", err); - }); - } else { - generateDaily(btoa(new Date().toISOString().substring(0, 10))); - } - }); - } - - end(): void { - if (!this.loaded && !this.scene.gameMode.isDaily) { - this.scene.arena.preloadBgm(); - this.scene.gameMode = getGameMode(this.gameMode); - if (this.gameMode === GameModes.CHALLENGE) { - this.scene.pushPhase(new SelectChallengePhase(this.scene)); - } else { - this.scene.pushPhase(new SelectStarterPhase(this.scene)); - } - this.scene.newArena(this.scene.gameMode.getStartingBiome(this.scene)); - } else { - this.scene.playBgm(); - } - - this.scene.pushPhase(new EncounterPhase(this.scene, this.loaded)); - - if (this.loaded) { - const availablePartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()).length; - - this.scene.pushPhase(new SummonPhase(this.scene, 0, true, true)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.pushPhase(new SummonPhase(this.scene, 1, true, true)); - } - - if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { - const minPartySize = this.scene.currentBattle.double ? 2 : 1; - if (availablePartyMembers > minPartySize) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); - if (this.scene.currentBattle.double) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); - } - } - } - } - - for (const achv of Object.keys(this.scene.gameData.achvUnlocks)) { - if (vouchers.hasOwnProperty(achv)) { - this.scene.validateVoucher(vouchers[achv]); - } - } - - super.end(); - } -} - -export class UnavailablePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - start(): void { - this.scene.ui.setMode(Mode.UNAVAILABLE, () => { - this.scene.unshiftPhase(new LoginPhase(this.scene, true)); - this.end(); - }); - } -} - -export class ReloadSessionPhase extends Phase { - private systemDataStr: string | null; - - constructor(scene: BattleScene, systemDataStr?: string) { - super(scene); - - this.systemDataStr = systemDataStr ?? null; - } - - start(): void { - this.scene.ui.setMode(Mode.SESSION_RELOAD); - - let delayElapsed = false; - let loaded = false; - - this.scene.time.delayedCall(Utils.fixedInt(1500), () => { - if (loaded) { - this.end(); - } else { - delayElapsed = true; - } - }); - - this.scene.gameData.clearLocalData(); - - (this.systemDataStr ? this.scene.gameData.initSystem(this.systemDataStr) : this.scene.gameData.loadSystem()).then(() => { - if (delayElapsed) { - this.end(); - } else { - loaded = true; - } - }); - } -} - -export class OutdatedPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - start(): void { - this.scene.ui.setMode(Mode.OUTDATED); - } -} - -export class SelectGenderPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - start(): void { - super.start(); - - this.scene.ui.showText(i18next.t("menu:boyOrGirl"), null, () => { - this.scene.ui.setMode(Mode.OPTION_SELECT, { - options: [ - { - label: i18next.t("settings:boy"), - handler: () => { - this.scene.gameData.gender = PlayerGender.MALE; - this.scene.gameData.saveSetting(SettingKeys.Player_Gender, 0); - this.scene.gameData.saveSystem().then(() => this.end()); - return true; - } - }, - { - label: i18next.t("settings:girl"), - handler: () => { - this.scene.gameData.gender = PlayerGender.FEMALE; - this.scene.gameData.saveSetting(SettingKeys.Player_Gender, 1); - this.scene.gameData.saveSystem().then(() => this.end()); - return true; - } - } - ] - }); - }); - } - - end(): void { - this.scene.ui.setMode(Mode.MESSAGE); - super.end(); - } -} - -export class SelectChallengePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.playBgm("menu"); - - this.scene.ui.setMode(Mode.CHALLENGE_SELECT); - } -} - -export class SelectStarterPhase extends Phase { - - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.playBgm("menu"); - - this.scene.ui.setMode(Mode.STARTER_SELECT, (starters: Starter[]) => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { - if (slotId === -1) { - this.scene.clearPhaseQueue(); - this.scene.pushPhase(new TitlePhase(this.scene)); - return this.end(); - } - this.scene.sessionSlotId = slotId; - this.initBattle(starters); - }); - }); - } - - /** - * Initialize starters before starting the first battle - * @param starters {@linkcode Pokemon} with which to start the first battle - */ - initBattle(starters: Starter[]) { - const party = this.scene.getParty(); - const loadPokemonAssets: Promise[] = []; - starters.forEach((starter: Starter, i: integer) => { - if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { - starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species); - } - const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); - let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); - if ( - starter.species.speciesId in Overrides.STARTER_FORM_OVERRIDES && - starter.species.forms[Overrides.STARTER_FORM_OVERRIDES[starter.species.speciesId]!] - ) { - starterFormIndex = Overrides.STARTER_FORM_OVERRIDES[starter.species.speciesId]!; - } - - let starterGender = starter.species.malePercent !== null - ? !starterProps.female ? Gender.MALE : Gender.FEMALE - : Gender.GENDERLESS; - if (Overrides.GENDER_OVERRIDE !== null) { - starterGender = Overrides.GENDER_OVERRIDE; - } - const starterIvs = this.scene.gameData.dexData[starter.species.speciesId].ivs.slice(0); - const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature); - starter.moveset && starterPokemon.tryPopulateMoveset(starter.moveset); - if (starter.passive) { - starterPokemon.passive = true; - } - starterPokemon.luck = this.scene.gameData.getDexAttrLuck(this.scene.gameData.dexData[starter.species.speciesId].caughtAttr); - if (starter.pokerus) { - starterPokemon.pokerus = true; - } - - if (starter.nickname) { - starterPokemon.nickname = starter.nickname; - } - - if (this.scene.gameMode.isSplicedOnly) { - starterPokemon.generateFusionSpecies(true); - } - starterPokemon.setVisible(false); - applyChallenges(this.scene.gameMode, ChallengeType.STARTER_MODIFY, starterPokemon); - party.push(starterPokemon); - loadPokemonAssets.push(starterPokemon.loadAssets()); - }); - overrideModifiers(this.scene); - overrideHeldItems(this.scene, party[0]); - Promise.all(loadPokemonAssets).then(() => { - SoundFade.fadeOut(this.scene, this.scene.sound.get("menu"), 500, true); - this.scene.time.delayedCall(500, () => this.scene.playBgm()); - if (this.scene.gameMode.isClassic) { - this.scene.gameData.gameStats.classicSessionsPlayed++; - } else { - this.scene.gameData.gameStats.endlessSessionsPlayed++; - } - this.scene.newBattle(); - this.scene.arena.init(); - this.scene.sessionPlayTime = 0; - this.scene.lastSavePlayTime = 0; - // Ensures Keldeo (or any future Pokemon that have this type of form change) starts in the correct form - this.scene.getParty().forEach((p: PlayerPokemon) => { - this.scene.triggerPokemonFormChange(p, SpeciesFormChangeMoveLearnedTrigger); - }); - this.end(); - }); - } -} - -export class BattlePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - showEnemyTrainer(trainerSlot: TrainerSlot = TrainerSlot.NONE): void { - const sprites = this.scene.currentBattle.trainer?.getSprites()!; // TODO: is this bang correct? - const tintSprites = this.scene.currentBattle.trainer?.getTintSprites()!; // TODO: is this bang correct? - for (let i = 0; i < sprites.length; i++) { - const visible = !trainerSlot || !i === (trainerSlot === TrainerSlot.TRAINER) || sprites.length < 2; - [sprites[i], tintSprites[i]].map(sprite => { - if (visible) { - sprite.x = trainerSlot || sprites.length < 2 ? 0 : i ? 16 : -16; - } - sprite.setVisible(visible); - sprite.clearTint(); - }); - sprites[i].setVisible(visible); - tintSprites[i].setVisible(visible); - sprites[i].clearTint(); - tintSprites[i].clearTint(); - } - this.scene.tweens.add({ - targets: this.scene.currentBattle.trainer, - x: "-=16", - y: "+=16", - alpha: 1, - ease: "Sine.easeInOut", - duration: 750 - }); - } - - hideEnemyTrainer(): void { - this.scene.tweens.add({ - targets: this.scene.currentBattle.trainer, - x: "+=16", - y: "-=16", - alpha: 0, - ease: "Sine.easeInOut", - duration: 750 - }); - } -} - -type PokemonFunc = (pokemon: Pokemon) => void; - -export abstract class FieldPhase extends BattlePhase { - getOrder(): BattlerIndex[] { - const playerField = this.scene.getPlayerField().filter(p => p.isActive()) as Pokemon[]; - const enemyField = this.scene.getEnemyField().filter(p => p.isActive()) as Pokemon[]; - - // We shuffle the list before sorting so speed ties produce random results - let orderedTargets: Pokemon[] = playerField.concat(enemyField); - // We seed it with the current turn to prevent an inconsistency where it - // was varying based on how long since you last reloaded - this.scene.executeWithSeedOffset(() => { - orderedTargets = Utils.randSeedShuffle(orderedTargets); - }, this.scene.currentBattle.turn, this.scene.waveSeed); - - orderedTargets.sort((a: Pokemon, b: Pokemon) => { - const aSpeed = a?.getBattleStat(Stat.SPD) || 0; - const bSpeed = b?.getBattleStat(Stat.SPD) || 0; - - return bSpeed - aSpeed; - }); - - const speedReversed = new Utils.BooleanHolder(false); - this.scene.arena.applyTags(TrickRoomTag, speedReversed); - - if (speedReversed.value) { - orderedTargets = orderedTargets.reverse(); - } - - return orderedTargets.map(t => t.getFieldIndex() + (!t.isPlayer() ? BattlerIndex.ENEMY : 0)); - } - - executeForAll(func: PokemonFunc): void { - const field = this.scene.getField(true).filter(p => p.summonData); - field.forEach(pokemon => func(pokemon)); - } -} - -export abstract class PokemonPhase extends FieldPhase { - protected battlerIndex: BattlerIndex | integer; - public player: boolean; - public fieldIndex: integer; - - constructor(scene: BattleScene, battlerIndex?: BattlerIndex | integer) { - super(scene); - - if (battlerIndex === undefined) { - battlerIndex = scene.getField().find(p => p?.isActive())!.getBattlerIndex(); // TODO: is the bang correct here? - } - - this.battlerIndex = battlerIndex; - this.player = battlerIndex < 2; - this.fieldIndex = battlerIndex % 2; - } - - getPokemon(): Pokemon { - if (this.battlerIndex > BattlerIndex.ENEMY_2) { - return this.scene.getPokemonById(this.battlerIndex)!; //TODO: is this bang correct? - } - return this.scene.getField()[this.battlerIndex]!; //TODO: is this bang correct? - } -} - -export abstract class PartyMemberPokemonPhase extends FieldPhase { - protected partyMemberIndex: integer; - protected fieldIndex: integer; - protected player: boolean; - - constructor(scene: BattleScene, partyMemberIndex: integer, player: boolean) { - super(scene); - - this.partyMemberIndex = partyMemberIndex; - this.fieldIndex = partyMemberIndex < this.scene.currentBattle.getBattlerCount() - ? partyMemberIndex - : -1; - this.player = player; - } - - getParty(): Pokemon[] { - return this.player ? this.scene.getParty() : this.scene.getEnemyParty(); - } - - getPokemon(): Pokemon { - return this.getParty()[this.partyMemberIndex]; - } -} - -export abstract class PlayerPartyMemberPokemonPhase extends PartyMemberPokemonPhase { - constructor(scene: BattleScene, partyMemberIndex: integer) { - super(scene, partyMemberIndex, true); - } - - getPlayerPokemon(): PlayerPokemon { - return super.getPokemon() as PlayerPokemon; - } -} - -export abstract class EnemyPartyMemberPokemonPhase extends PartyMemberPokemonPhase { - constructor(scene: BattleScene, partyMemberIndex: integer) { - super(scene, partyMemberIndex, false); - } - - getEnemyPokemon(): EnemyPokemon { - return super.getPokemon() as EnemyPokemon; - } -} - -export class EncounterPhase extends BattlePhase { - private loaded: boolean; - - constructor(scene: BattleScene, loaded?: boolean) { - super(scene); - - this.loaded = !!loaded; - } - - start() { - super.start(); - - this.scene.updateGameInfo(); - - this.scene.initSession(); - - this.scene.eventTarget.dispatchEvent(new EncounterPhaseEvent()); - - // Failsafe if players somehow skip floor 200 in classic mode - if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex > 200) { - this.scene.unshiftPhase(new GameOverPhase(this.scene)); - } - - const loadEnemyAssets: Promise[] = []; - - const battle = this.scene.currentBattle; - - let totalBst = 0; - - battle.enemyLevels?.forEach((level, e) => { - if (!this.loaded) { - if (battle.battleType === BattleType.TRAINER) { - battle.enemyParty[e] = battle.trainer?.genPartyMember(e)!; // TODO:: is the bang correct here? - } else { - const enemySpecies = this.scene.randomSpecies(battle.waveIndex, level, true); - battle.enemyParty[e] = this.scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, !!this.scene.getEncounterBossSegments(battle.waveIndex, level, enemySpecies)); - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { - battle.enemyParty[e].ivs = new Array(6).fill(31); - } - this.scene.getParty().slice(0, !battle.double ? 1 : 2).reverse().forEach(playerPokemon => { - applyAbAttrs(SyncEncounterNatureAbAttr, playerPokemon, null, battle.enemyParty[e]); - }); - } - } - const enemyPokemon = this.scene.getEnemyParty()[e]; - if (e < (battle.double ? 2 : 1)) { - enemyPokemon.setX(-66 + enemyPokemon.getFieldPositionOffset()[0]); - enemyPokemon.resetSummonData(); - } - - if (!this.loaded) { - this.scene.gameData.setPokemonSeen(enemyPokemon, true, battle.battleType === BattleType.TRAINER); - } - - if (enemyPokemon.species.speciesId === Species.ETERNATUS) { - if (this.scene.gameMode.isClassic && (battle.battleSpec === BattleSpec.FINAL_BOSS || this.scene.gameMode.isWaveFinal(battle.waveIndex))) { - if (battle.battleSpec !== BattleSpec.FINAL_BOSS) { - enemyPokemon.formIndex = 1; - enemyPokemon.updateScale(); - } - enemyPokemon.setBoss(); - } else if (!(battle.waveIndex % 1000)) { - enemyPokemon.formIndex = 1; - enemyPokemon.updateScale(); - } - } - - totalBst += enemyPokemon.getSpeciesForm().baseTotal; - - loadEnemyAssets.push(enemyPokemon.loadAssets()); - - console.log(getPokemonNameWithAffix(enemyPokemon), enemyPokemon.species.speciesId, enemyPokemon.stats); - }); - - if (this.scene.getParty().filter(p => p.isShiny()).length === 6) { - this.scene.validateAchv(achvs.SHINY_PARTY); - } - - if (battle.battleType === BattleType.TRAINER) { - loadEnemyAssets.push(battle.trainer?.loadAssets().then(() => battle.trainer?.initSprite())!); // TODO: is this bang correct? - } else { - // This block only applies for double battles to init the boss segments (idk why it's split up like this) - if (battle.enemyParty.filter(p => p.isBoss()).length > 1) { - for (const enemyPokemon of battle.enemyParty) { - // If the enemy pokemon is a boss and wasn't populated from data source, then set it up - if (enemyPokemon.isBoss() && !enemyPokemon.isPopulatedFromDataSource) { - enemyPokemon.setBoss(true, Math.ceil(enemyPokemon.bossSegments * (enemyPokemon.getSpeciesForm().baseTotal / totalBst))); - enemyPokemon.initBattleInfo(); - } - } - } - } - - Promise.all(loadEnemyAssets).then(() => { - battle.enemyParty.forEach((enemyPokemon, e) => { - if (e < (battle.double ? 2 : 1)) { - if (battle.battleType === BattleType.WILD) { - this.scene.field.add(enemyPokemon); - battle.seenEnemyPartyMemberIds.add(enemyPokemon.id); - const playerPokemon = this.scene.getPlayerPokemon(); - if (playerPokemon?.visible) { - this.scene.field.moveBelow(enemyPokemon as Pokemon, playerPokemon); - } - enemyPokemon.tint(0, 0.5); - } else if (battle.battleType === BattleType.TRAINER) { - enemyPokemon.setVisible(false); - this.scene.currentBattle.trainer?.tint(0, 0.5); - } - if (battle.double) { - enemyPokemon.setFieldPosition(e ? FieldPosition.RIGHT : FieldPosition.LEFT); - } - } - }); - - if (!this.loaded) { - regenerateModifierPoolThresholds(this.scene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); - this.scene.generateEnemyModifiers(); - } - - this.scene.ui.setMode(Mode.MESSAGE).then(() => { - if (!this.loaded) { - //@ts-ignore - this.scene.gameData.saveAll(this.scene, true, battle.waveIndex % 10 === 1 || this.scene.lastSavePlayTime >= 300).then(success => { // TODO: get rid of ts-ignore - this.scene.disableMenu = false; - if (!success) { - return this.scene.reset(true); - } - this.doEncounter(); - }); - } else { - this.doEncounter(); - } - }); - }); - } - - doEncounter() { - this.scene.playBgm(undefined, true); - this.scene.updateModifiers(false); - this.scene.setFieldScale(1); - - /*if (startingWave > 10) { - for (let m = 0; m < Math.min(Math.floor(startingWave / 10), 99); m++) - this.scene.addModifier(getPlayerModifierTypeOptionsForWave((m + 1) * 10, 1, this.scene.getParty())[0].type.newModifier(), true); - this.scene.updateModifiers(true); - }*/ - - for (const pokemon of this.scene.getParty()) { - if (pokemon) { - pokemon.resetBattleData(); - } - } - - if (!this.loaded) { - this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); - } - - const enemyField = this.scene.getEnemyField(); - this.scene.tweens.add({ - targets: [this.scene.arenaEnemy, this.scene.currentBattle.trainer, enemyField, this.scene.arenaPlayer, this.scene.trainer].flat(), - x: (_target, _key, value, fieldIndex: integer) => fieldIndex < 2 + (enemyField.length) ? value + 300 : value - 300, - duration: 2000, - onComplete: () => { - if (!this.tryOverrideForBattleSpec()) { - this.doEncounterCommon(); - } - } - }); - } - - getEncounterMessage(): string { - const enemyField = this.scene.getEnemyField(); - - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { - return i18next.t("battle:bossAppeared", { bossName: getPokemonNameWithAffix(enemyField[0])}); - } - - if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - if (this.scene.currentBattle.double) { - return i18next.t("battle:trainerAppearedDouble", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); - - } else { - return i18next.t("battle:trainerAppeared", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); - } - } - - return enemyField.length === 1 - ? i18next.t("battle:singleWildAppeared", { pokemonName: enemyField[0].getNameToRender() }) - : i18next.t("battle:multiWildAppeared", { pokemonName1: enemyField[0].getNameToRender(), pokemonName2: enemyField[1].getNameToRender() }); - } - - doEncounterCommon(showEncounterMessage: boolean = true) { - const enemyField = this.scene.getEnemyField(); - - if (this.scene.currentBattle.battleType === BattleType.WILD) { - enemyField.forEach(enemyPokemon => { - enemyPokemon.untint(100, "Sine.easeOut"); - enemyPokemon.cry(); - enemyPokemon.showInfo(); - if (enemyPokemon.isShiny()) { - this.scene.validateAchv(achvs.SEE_SHINY); - } - }); - this.scene.updateFieldScale(); - if (showEncounterMessage) { - this.scene.ui.showText(this.getEncounterMessage(), null, () => this.end(), 1500); - } else { - this.end(); - } - } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - const trainer = this.scene.currentBattle.trainer; - trainer?.untint(100, "Sine.easeOut"); - trainer?.playAnim(); - - const doSummon = () => { - this.scene.currentBattle.started = true; - this.scene.playBgm(undefined); - this.scene.pbTray.showPbTray(this.scene.getParty()); - this.scene.pbTrayEnemy.showPbTray(this.scene.getEnemyParty()); - const doTrainerSummon = () => { - this.hideEnemyTrainer(); - const availablePartyMembers = this.scene.getEnemyParty().filter(p => !p.isFainted()).length; - this.scene.unshiftPhase(new SummonPhase(this.scene, 0, false)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.unshiftPhase(new SummonPhase(this.scene, 1, false)); - } - this.end(); - }; - if (showEncounterMessage) { - this.scene.ui.showText(this.getEncounterMessage(), null, doTrainerSummon, 1500, true); - } else { - doTrainerSummon(); - } - }; - - const encounterMessages = this.scene.currentBattle.trainer?.getEncounterMessages(); - - if (!encounterMessages?.length) { - doSummon(); - } else { - let message: string; - this.scene.executeWithSeedOffset(() => message = Utils.randSeedItem(encounterMessages), this.scene.currentBattle.waveIndex); - message = message!; // tell TS compiler it's defined now - const showDialogueAndSummon = () => { - this.scene.ui.showDialogue(message, trainer?.getName(TrainerSlot.NONE, true), null, () => { - this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => doSummon())); - }); - }; - if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { - this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(trainer?.getKey()!, getCharVariantFromDialogue(encounterMessages[0])).then(() => showDialogueAndSummon())); // TODO: is this bang correct? - } else { - showDialogueAndSummon(); - } - } - } - } - - end() { - const enemyField = this.scene.getEnemyField(); - - enemyField.forEach((enemyPokemon, e) => { - if (enemyPokemon.isShiny()) { - this.scene.unshiftPhase(new ShinySparklePhase(this.scene, BattlerIndex.ENEMY + e)); - } - }); - - if (this.scene.currentBattle.battleType !== BattleType.TRAINER) { - enemyField.map(p => this.scene.pushConditionalPhase(new PostSummonPhase(this.scene, p.getBattlerIndex()), () => { - // if there is not a player party, we can't continue - if (!this.scene.getParty()?.length) { - return false; - } - // how many player pokemon are on the field ? - const pokemonsOnFieldCount = this.scene.getParty().filter(p => p.isOnField()).length; - // if it's a 2vs1, there will never be a 2nd pokemon on our field even - const requiredPokemonsOnField = Math.min(this.scene.getParty().filter((p) => !p.isFainted()).length, 2); - // if it's a double, there should be 2, otherwise 1 - if (this.scene.currentBattle.double) { - return pokemonsOnFieldCount === requiredPokemonsOnField; - } - return pokemonsOnFieldCount === 1; - })); - const ivScannerModifier = this.scene.findModifier(m => m instanceof IvScannerModifier); - if (ivScannerModifier) { - enemyField.map(p => this.scene.pushPhase(new ScanIvsPhase(this.scene, p.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)))); - } - } - - if (!this.loaded) { - const availablePartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()); - - if (!availablePartyMembers[0].isOnField()) { - this.scene.pushPhase(new SummonPhase(this.scene, 0)); - } - - if (this.scene.currentBattle.double) { - if (availablePartyMembers.length > 1) { - this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, true)); - if (!availablePartyMembers[1].isOnField()) { - this.scene.pushPhase(new SummonPhase(this.scene, 1)); - } - } - } else { - if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { - this.scene.pushPhase(new ReturnPhase(this.scene, 1)); - } - this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, false)); - } - - if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { - const minPartySize = this.scene.currentBattle.double ? 2 : 1; - if (availablePartyMembers.length > minPartySize) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); - if (this.scene.currentBattle.double) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); - } - } - } - } - handleTutorial(this.scene, Tutorial.Access_Menu).then(() => super.end()); - } - - tryOverrideForBattleSpec(): boolean { - switch (this.scene.currentBattle.battleSpec) { - case BattleSpec.FINAL_BOSS: - const enemy = this.scene.getEnemyPokemon(); - this.scene.ui.showText(this.getEncounterMessage(), null, () => { - const count = 5643853 + this.scene.gameData.gameStats.classicSessionsPlayed; - //The two lines below check if English ordinals (1st, 2nd, 3rd, Xth) are used and determine which one to use. - //Otherwise, it defaults to an empty string. - //As of 08-07-24: Spanish and Italian default to the English translations - const ordinalUse = ["en", "es", "it"]; - const currentLanguage = i18next.resolvedLanguage ?? "en"; - const ordinalIndex = (ordinalUse.includes(currentLanguage)) ? ["st", "nd", "rd"][((count + 90) % 100 - 10) % 10 - 1] ?? "th" : ""; - const cycleCount = count.toLocaleString() + ordinalIndex; - const encounterDialogue = i18next.t(`${(this.scene.gameData.gender === PlayerGender.FEMALE) ? "PGF" : "PGM"}battleSpecDialogue:encounter`, {cycleCount: cycleCount}); - this.scene.ui.showDialogue(encounterDialogue, enemy?.species.name, null, () => { - this.doEncounterCommon(false); - }); - }, 1500, true); - return true; - } - - return false; - } -} - -export class NextEncounterPhase extends EncounterPhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - } - - doEncounter(): void { - this.scene.playBgm(undefined, true); - - for (const pokemon of this.scene.getParty()) { - if (pokemon) { - pokemon.resetBattleData(); - } - } - - this.scene.arenaNextEnemy.setBiome(this.scene.arena.biomeType); - this.scene.arenaNextEnemy.setVisible(true); - - const enemyField = this.scene.getEnemyField(); - this.scene.tweens.add({ - targets: [this.scene.arenaEnemy, this.scene.arenaNextEnemy, this.scene.currentBattle.trainer, enemyField, this.scene.lastEnemyTrainer].flat(), - x: "+=300", - duration: 2000, - onComplete: () => { - this.scene.arenaEnemy.setBiome(this.scene.arena.biomeType); - this.scene.arenaEnemy.setX(this.scene.arenaNextEnemy.x); - this.scene.arenaEnemy.setAlpha(1); - this.scene.arenaNextEnemy.setX(this.scene.arenaNextEnemy.x - 300); - this.scene.arenaNextEnemy.setVisible(false); - if (this.scene.lastEnemyTrainer) { - this.scene.lastEnemyTrainer.destroy(); - } - - if (!this.tryOverrideForBattleSpec()) { - this.doEncounterCommon(); - } - } - }); - } -} - -export class NewBiomeEncounterPhase extends NextEncounterPhase { - constructor(scene: BattleScene) { - super(scene); - } - - doEncounter(): void { - this.scene.playBgm(undefined, true); - - for (const pokemon of this.scene.getParty()) { - if (pokemon) { - pokemon.resetBattleData(); - } - } - - this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); - - for (const pokemon of this.scene.getParty().filter(p => p.isOnField())) { - applyAbAttrs(PostBiomeChangeAbAttr, pokemon, null); - } - - const enemyField = this.scene.getEnemyField(); - this.scene.tweens.add({ - targets: [this.scene.arenaEnemy, enemyField].flat(), - x: "+=300", - duration: 2000, - onComplete: () => { - if (!this.tryOverrideForBattleSpec()) { - this.doEncounterCommon(); - } - } - }); - } -} - -export class PostSummonPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); - } - - start() { - super.start(); - - const pokemon = this.getPokemon(); - - if (pokemon.status?.effect === StatusEffect.TOXIC) { - pokemon.status.turnCount = 0; - } - this.scene.arena.applyTags(ArenaTrapTag, pokemon); - applyPostSummonAbAttrs(PostSummonAbAttr, pokemon).then(() => this.end()); - } -} - -export class SelectBiomePhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - const currentBiome = this.scene.arena.biomeType; - - const setNextBiome = (nextBiome: Biome) => { - if (this.scene.currentBattle.waveIndex % 10 === 1) { - this.scene.applyModifiers(MoneyInterestModifier, true, this.scene); - this.scene.unshiftPhase(new PartyHealPhase(this.scene, false)); - } - this.scene.unshiftPhase(new SwitchBiomePhase(this.scene, nextBiome)); - this.end(); - }; - - if ((this.scene.gameMode.isClassic && this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex + 9)) - || (this.scene.gameMode.isDaily && this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) - || (this.scene.gameMode.hasShortBiomes && !(this.scene.currentBattle.waveIndex % 50))) { - setNextBiome(Biome.END); - } else if (this.scene.gameMode.hasRandomBiomes) { - setNextBiome(this.generateNextBiome()); - } else if (Array.isArray(biomeLinks[currentBiome])) { - let biomes: Biome[] = []; - this.scene.executeWithSeedOffset(() => { - biomes = (biomeLinks[currentBiome] as (Biome | [Biome, integer])[]) - .filter(b => !Array.isArray(b) || !Utils.randSeedInt(b[1])) - .map(b => !Array.isArray(b) ? b : b[0]); - }, this.scene.currentBattle.waveIndex); - if (biomes.length > 1 && this.scene.findModifier(m => m instanceof MapModifier)) { - let biomeChoices: Biome[] = []; - this.scene.executeWithSeedOffset(() => { - biomeChoices = (!Array.isArray(biomeLinks[currentBiome]) - ? [biomeLinks[currentBiome] as Biome] - : biomeLinks[currentBiome] as (Biome | [Biome, integer])[]) - .filter((b, i) => !Array.isArray(b) || !Utils.randSeedInt(b[1])) - .map(b => Array.isArray(b) ? b[0] : b); - }, this.scene.currentBattle.waveIndex); - const biomeSelectItems = biomeChoices.map(b => { - const ret: OptionSelectItem = { - label: getBiomeName(b), - handler: () => { - this.scene.ui.setMode(Mode.MESSAGE); - setNextBiome(b); - return true; - } - }; - return ret; - }); - this.scene.ui.setMode(Mode.OPTION_SELECT, { - options: biomeSelectItems, - delay: 1000 - }); - } else { - setNextBiome(biomes[Utils.randSeedInt(biomes.length)]); - } - } else if (biomeLinks.hasOwnProperty(currentBiome)) { - setNextBiome(biomeLinks[currentBiome] as Biome); - } else { - setNextBiome(this.generateNextBiome()); - } - } - - generateNextBiome(): Biome { - if (!(this.scene.currentBattle.waveIndex % 50)) { - return Biome.END; - } - return this.scene.generateRandomBiome(this.scene.currentBattle.waveIndex); - } -} - -export class SwitchBiomePhase extends BattlePhase { - private nextBiome: Biome; - - constructor(scene: BattleScene, nextBiome: Biome) { - super(scene); - - this.nextBiome = nextBiome; - } - - start() { - super.start(); - - if (this.nextBiome === undefined) { - return this.end(); - } - - this.scene.tweens.add({ - targets: [this.scene.arenaEnemy, this.scene.lastEnemyTrainer], - x: "+=300", - duration: 2000, - onComplete: () => { - this.scene.arenaEnemy.setX(this.scene.arenaEnemy.x - 600); - - this.scene.newArena(this.nextBiome); - - const biomeKey = getBiomeKey(this.nextBiome); - const bgTexture = `${biomeKey}_bg`; - this.scene.arenaBgTransition.setTexture(bgTexture); - this.scene.arenaBgTransition.setAlpha(0); - this.scene.arenaBgTransition.setVisible(true); - this.scene.arenaPlayerTransition.setBiome(this.nextBiome); - this.scene.arenaPlayerTransition.setAlpha(0); - this.scene.arenaPlayerTransition.setVisible(true); - - this.scene.tweens.add({ - targets: [this.scene.arenaPlayer, this.scene.arenaBgTransition, this.scene.arenaPlayerTransition], - duration: 1000, - delay: 1000, - ease: "Sine.easeInOut", - alpha: (target: any) => target === this.scene.arenaPlayer ? 0 : 1, - onComplete: () => { - this.scene.arenaBg.setTexture(bgTexture); - this.scene.arenaPlayer.setBiome(this.nextBiome); - this.scene.arenaPlayer.setAlpha(1); - this.scene.arenaEnemy.setBiome(this.nextBiome); - this.scene.arenaEnemy.setAlpha(1); - this.scene.arenaNextEnemy.setBiome(this.nextBiome); - this.scene.arenaBgTransition.setVisible(false); - this.scene.arenaPlayerTransition.setVisible(false); - if (this.scene.lastEnemyTrainer) { - this.scene.lastEnemyTrainer.destroy(); - } - - this.end(); - } - }); - } - }); - } -} - -export class SummonPhase extends PartyMemberPokemonPhase { - private loaded: boolean; - - constructor(scene: BattleScene, fieldIndex: integer, player: boolean = true, loaded: boolean = false) { - super(scene, fieldIndex, player); - - this.loaded = loaded; - } - - start() { - super.start(); - - 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 or illegal under a challenge, switch to the first non-fainted legal Pokemon - if (!partyMember.isAllowedInBattle()) { - console.warn("The Pokemon about to be sent out is fainted or illegal under a challenge. Attempting to resolve..."); - - // First check if they're somehow still in play, if so remove them. - if (partyMember.isOnField()) { - partyMember.leaveField(); - } - - const party = this.getParty(); - - // Find the first non-fainted Pokemon index above the current one - const legalIndex = party.findIndex((p, i) => i > this.partyMemberIndex && p.isAllowedInBattle()); - if (legalIndex === -1) { - console.error("Party Details:\n", party); - console.error("All available Pokemon were fainted or illegal!"); - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new GameOverPhase(this.scene)); - this.end(); - return; - } - - // Swaps the fainted Pokemon and the first non-fainted legal Pokemon in the party - [party[this.partyMemberIndex], party[legalIndex]] = [party[legalIndex], party[this.partyMemberIndex]]; - console.warn("Swapped %s %O with %s %O", getPokemonNameWithAffix(partyMember), partyMember, getPokemonNameWithAffix(party[0]), party[0]); - } - - if (this.player) { - this.scene.ui.showText(i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); - if (this.player) { - this.scene.pbTray.hide(); - } - this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); - this.scene.time.delayedCall(562, () => { - this.scene.trainer.setFrame("2"); - this.scene.time.delayedCall(64, () => { - this.scene.trainer.setFrame("3"); - }); - }); - this.scene.tweens.add({ - targets: this.scene.trainer, - x: -36, - duration: 1000, - onComplete: () => this.scene.trainer.setVisible(false) - }); - this.scene.time.delayedCall(750, () => this.summon()); - } else { - const trainerName = this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); - const pokemonName = this.getPokemon().getNameToRender(); - const message = i18next.t("battle:trainerSendOut", { trainerName, pokemonName }); - - this.scene.pbTrayEnemy.hide(); - this.scene.ui.showText(message, null, () => this.summon()); - } - } - - summon(): void { - const pokemon = this.getPokemon(); - - const pokeball = this.scene.addFieldSprite(this.player ? 36 : 248, this.player ? 80 : 44, "pb", getPokeballAtlasKey(pokemon.pokeball)); - pokeball.setVisible(false); - pokeball.setOrigin(0.5, 0.625); - this.scene.field.add(pokeball); - - if (this.fieldIndex === 1) { - pokemon.setFieldPosition(FieldPosition.RIGHT, 0); - } else { - const availablePartyMembers = this.getParty().filter(p => p.isAllowedInBattle()).length; - pokemon.setFieldPosition(!this.scene.currentBattle.double || availablePartyMembers === 1 ? FieldPosition.CENTER : FieldPosition.LEFT); - } - - const fpOffset = pokemon.getFieldPositionOffset(); - - pokeball.setVisible(true); - - this.scene.tweens.add({ - targets: pokeball, - duration: 650, - x: (this.player ? 100 : 236) + fpOffset[0] - }); - - this.scene.tweens.add({ - targets: pokeball, - duration: 150, - ease: "Cubic.easeOut", - y: (this.player ? 70 : 34) + fpOffset[1], - onComplete: () => { - this.scene.tweens.add({ - targets: pokeball, - duration: 500, - ease: "Cubic.easeIn", - angle: 1440, - y: (this.player ? 132 : 86) + fpOffset[1], - onComplete: () => { - this.scene.playSound("pb_rel"); - pokeball.destroy(); - this.scene.add.existing(pokemon); - this.scene.field.add(pokemon); - if (!this.player) { - const playerPokemon = this.scene.getPlayerPokemon() as Pokemon; - if (playerPokemon?.visible) { - this.scene.field.moveBelow(pokemon, playerPokemon); - } - this.scene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); - } - addPokeballOpenParticles(this.scene, pokemon.x, pokemon.y - 16, pokemon.pokeball); - this.scene.updateModifiers(this.player); - this.scene.updateFieldScale(); - pokemon.showInfo(); - pokemon.playAnim(); - pokemon.setVisible(true); - pokemon.getSprite().setVisible(true); - pokemon.setScale(0.5); - pokemon.tint(getPokeballTintColor(pokemon.pokeball)); - pokemon.untint(250, "Sine.easeIn"); - this.scene.updateFieldScale(); - this.scene.tweens.add({ - targets: pokemon, - duration: 250, - ease: "Sine.easeIn", - scale: pokemon.getSpriteScale(), - onComplete: () => { - pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); - pokemon.getSprite().clearTint(); - pokemon.resetSummonData(); - this.scene.time.delayedCall(1000, () => this.end()); - } - }); - } - }); - } - }); - } - - onEnd(): void { - const pokemon = this.getPokemon(); - - if (pokemon.isShiny()) { - this.scene.unshiftPhase(new ShinySparklePhase(this.scene, pokemon.getBattlerIndex())); - } - - pokemon.resetTurnData(); - - if (!this.loaded || this.scene.currentBattle.battleType === BattleType.TRAINER || (this.scene.currentBattle.waveIndex % 10) === 1) { - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); - this.queuePostSummon(); - } - } - - queuePostSummon(): void { - this.scene.pushPhase(new PostSummonPhase(this.scene, this.getPokemon().getBattlerIndex())); - } - - end() { - this.onEnd(); - - super.end(); - } -} - -export class SwitchSummonPhase extends SummonPhase { - private slotIndex: integer; - private doReturn: boolean; - private batonPass: boolean; - - private lastPokemon: Pokemon; - - /** - * Constructor for creating a new SwitchSummonPhase - * @param scene {@linkcode BattleScene} the scene the phase is associated with - * @param fieldIndex integer representing position on the battle field - * @param slotIndex integer for the index of pokemon (in party of 6) to switch into - * @param doReturn boolean whether to render "comeback" dialogue - * @param batonPass boolean if the switch is from baton pass - * @param player boolean if the switch is from the player - */ - constructor(scene: BattleScene, fieldIndex: integer, slotIndex: integer, doReturn: boolean, batonPass: boolean, player?: boolean) { - super(scene, fieldIndex, player !== undefined ? player : true); - - this.slotIndex = slotIndex; - this.doReturn = doReturn; - this.batonPass = batonPass; - } - - start(): void { - super.start(); - } - - preSummon(): void { - if (!this.player) { - if (this.slotIndex === -1) { - //@ts-ignore - this.slotIndex = this.scene.currentBattle.trainer?.getNextSummonIndex(!this.fieldIndex ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); // TODO: what would be the default trainer-slot fallback? - } - if (this.slotIndex > -1) { - this.showEnemyTrainer(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); - this.scene.pbTrayEnemy.showPbTray(this.scene.getEnemyParty()); - } - } - - if (!this.doReturn || (this.slotIndex !== -1 && !(this.player ? this.scene.getParty() : this.scene.getEnemyParty())[this.slotIndex])) { - if (this.player) { - return this.switchAndSummon(); - } else { - this.scene.time.delayedCall(750, () => this.switchAndSummon()); - return; - } - } - - const pokemon = this.getPokemon(); - - if (!this.batonPass) { - (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.removeTagsBySourceId(pokemon.id)); - } - - this.scene.ui.showText(this.player ? - i18next.t("battle:playerComeBack", { pokemonName: getPokemonNameWithAffix(pokemon) }) : - i18next.t("battle:trainerComeBack", { - trainerName: this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), - pokemonName: getPokemonNameWithAffix(pokemon) - }) - ); - this.scene.playSound("pb_rel"); - pokemon.hideInfo(); // this is also done by pokemon.leaveField(), but needs to go earlier for animation purposes - pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, "Sine.easeIn"); - this.scene.tweens.add({ - targets: pokemon, - duration: 250, - ease: "Sine.easeIn", - scale: 0.5, - onComplete: () => { - // 250ms delay on leaveField is necessary to avoid calling hideInfo() twice - // and double-animating the stats panel slideout - this.scene.time.delayedCall(250, () => pokemon.leaveField(!this.batonPass)); - this.scene.time.delayedCall(750, () => this.switchAndSummon()); - } - }); - } - - switchAndSummon() { - const party = this.player ? this.getParty() : this.scene.getEnemyParty(); - const switchedInPokemon = party[this.slotIndex]; - this.lastPokemon = this.getPokemon(); - applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, this.lastPokemon); - if (this.batonPass && switchedInPokemon) { - (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.transferTagsBySourceId(this.lastPokemon.id, switchedInPokemon.id)); - if (!this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { - const batonPassModifier = this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier - && (m as SwitchEffectTransferModifier).pokemonId === this.lastPokemon.id) as SwitchEffectTransferModifier; - if (batonPassModifier && !this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { - this.scene.tryTransferHeldItemModifier(batonPassModifier, switchedInPokemon, false); - } - } - } - if (switchedInPokemon) { - party[this.slotIndex] = this.lastPokemon; - party[this.fieldIndex] = switchedInPokemon; - const showTextAndSummon = () => { - this.scene.ui.showText(this.player ? - i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(switchedInPokemon) }) : - i18next.t("battle:trainerGo", { - trainerName: this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), - pokemonName: this.getPokemon().getNameToRender() - }) - ); - // Ensure improperly persisted summon data (such as tags) is cleared upon switching - if (!this.batonPass) { - switchedInPokemon.resetBattleData(); - switchedInPokemon.resetSummonData(); - } - this.summon(); - }; - if (this.player) { - showTextAndSummon(); - } else { - this.scene.time.delayedCall(1500, () => { - this.hideEnemyTrainer(); - this.scene.pbTrayEnemy.hide(); - showTextAndSummon(); - }); - } - } else { - this.end(); - } - } - - onEnd(): void { - super.onEnd(); - - const pokemon = this.getPokemon(); - - const moveId = this.lastPokemon?.scene.currentBattle.lastMove; - const lastUsedMove = moveId ? allMoves[moveId] : undefined; - - const currentCommand = pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command; - const lastPokemonIsForceSwitchedAndNotFainted = lastUsedMove?.hasAttr(ForceSwitchOutAttr) && !this.lastPokemon.isFainted(); - - // Compensate for turn spent summoning - // Or compensate for force switch move if switched out pokemon is not fainted - if (currentCommand === Command.POKEMON || lastPokemonIsForceSwitchedAndNotFainted) { - pokemon.battleSummonData.turnCount--; - } - - if (this.batonPass && pokemon) { - pokemon.transferSummon(this.lastPokemon); - } - - this.lastPokemon?.resetSummonData(); - - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); - } - - queuePostSummon(): void { - this.scene.unshiftPhase(new PostSummonPhase(this.scene, this.getPokemon().getBattlerIndex())); - } -} - -export class ReturnPhase extends SwitchSummonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, fieldIndex, -1, true, false); - } - - switchAndSummon(): void { - this.end(); - } - - summon(): void { } - - onEnd(): void { - const pokemon = this.getPokemon(); - - pokemon.resetTurnData(); - pokemon.resetSummonData(); - - this.scene.updateFieldScale(); - - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger); - } -} - -export class ShowTrainerPhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.trainer.setVisible(true); - - this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); - - this.scene.tweens.add({ - targets: this.scene.trainer, - x: 106, - duration: 1000, - onComplete: () => this.end() - }); - } -} - -export class ToggleDoublePositionPhase extends BattlePhase { - private double: boolean; - - constructor(scene: BattleScene, double: boolean) { - super(scene); - - this.double = double; - } - - start() { - super.start(); - - const playerPokemon = this.scene.getPlayerField().find(p => p.isActive(true)); - if (playerPokemon) { - playerPokemon.setFieldPosition(this.double && this.scene.getParty().filter(p => p.isAllowedInBattle()).length > 1 ? FieldPosition.LEFT : FieldPosition.CENTER, 500).then(() => { - if (playerPokemon.getFieldIndex() === 1) { - const party = this.scene.getParty(); - party[1] = party[0]; - party[0] = playerPokemon; - } - this.end(); - }); - } else { - this.end(); - } - } -} - -export class CheckSwitchPhase extends BattlePhase { - protected fieldIndex: integer; - protected useName: boolean; - - constructor(scene: BattleScene, fieldIndex: integer, useName: boolean) { - super(scene); - - this.fieldIndex = fieldIndex; - this.useName = useName; - } - - start() { - super.start(); - - const pokemon = this.scene.getPlayerField()[this.fieldIndex]; - - if (this.scene.battleStyle === BattleStyle.SET) { - super.end(); - return; - } - - if (this.scene.field.getAll().indexOf(pokemon) === -1) { - this.scene.unshiftPhase(new SummonMissingPhase(this.scene, this.fieldIndex)); - super.end(); - return; - } - - if (!this.scene.getParty().slice(1).filter(p => p.isActive()).length) { - super.end(); - return; - } - - if (pokemon.getTag(BattlerTagType.FRENZY)) { - super.end(); - return; - } - - this.scene.ui.showText(i18next.t("battle:switchQuestion", { pokemonName: this.useName ? getPokemonNameWithAffix(pokemon) : 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); - this.scene.unshiftPhase(new SwitchPhase(this.scene, this.fieldIndex, "switchMode", true)); - this.end(); - }, () => { - this.scene.ui.setMode(Mode.MESSAGE); - this.end(); - }); - }); - } -} - -export class SummonMissingPhase extends SummonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, fieldIndex); - } - - preSummon(): void { - this.scene.ui.showText(i18next.t("battle:sendOutPokemon", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); - this.scene.time.delayedCall(250, () => this.summon()); - } -} - -export class LevelCapPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); - } - - start(): void { - super.start(); - - this.scene.ui.setMode(Mode.MESSAGE).then(() => { - this.scene.playSound("level_up_fanfare"); - this.scene.ui.showText(i18next.t("battle:levelCapUp", { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true); - this.executeForAll(pokemon => pokemon.updateInfo(true)); - }); - } -} - -export class TurnInitPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.getPlayerField().forEach(p => { - // If this pokemon is in play and evolved into something illegal under the current challenge, force a switch - if (p.isOnField() && !p.isAllowedInBattle()) { - this.scene.queueMessage(i18next.t("challenges:illegalEvolution", { "pokemon": p.name }), null, true); - - const allowedPokemon = this.scene.getParty().filter(p => p.isAllowedInBattle()); - - if (!allowedPokemon.length) { - // If there are no longer any legal pokemon in the party, game over. - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new GameOverPhase(this.scene)); - } else if (allowedPokemon.length >= this.scene.currentBattle.getBattlerCount() || (this.scene.currentBattle.double && !allowedPokemon[0].isActive(true))) { - // If there is at least one pokemon in the back that is legal to switch in, force a switch. - p.switchOut(false); - } else { - // If there are no pokemon in the back but we're not game overing, just hide the pokemon. - // This should only happen in double battles. - p.leaveField(); - } - if (allowedPokemon.length === 1 && this.scene.currentBattle.double) { - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); - } - } - }); - - //this.scene.pushPhase(new MoveAnimTestPhase(this.scene)); - this.scene.eventTarget.dispatchEvent(new TurnInitEvent()); - - this.scene.getField().forEach((pokemon, i) => { - if (pokemon?.isActive()) { - if (pokemon.isPlayer()) { - this.scene.currentBattle.addParticipant(pokemon as PlayerPokemon); - } - - pokemon.resetTurnData(); - - this.scene.pushPhase(pokemon.isPlayer() ? new CommandPhase(this.scene, i) : new EnemyCommandPhase(this.scene, i - BattlerIndex.ENEMY)); - } - }); - - this.scene.pushPhase(new TurnStartPhase(this.scene)); - - this.end(); - } -} - -export class CommandPhase extends FieldPhase { - protected fieldIndex: integer; - - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene); - - this.fieldIndex = fieldIndex; - } - - start() { - super.start(); - - if (this.fieldIndex) { - // If we somehow are attempting to check the right pokemon but there's only one pokemon out - // Switch back to the center pokemon. This can happen rarely in double battles with mid turn switching - if (this.scene.getPlayerField().filter(p => p.isActive()).length === 1) { - this.fieldIndex = FieldPosition.CENTER; - } else { - const allyCommand = this.scene.currentBattle.turnCommands[this.fieldIndex - 1]; - if (allyCommand?.command === Command.BALL || allyCommand?.command === Command.RUN) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: allyCommand?.command, skip: true }; - } - } - } - - if (this.scene.currentBattle.turnCommands[this.fieldIndex]?.skip) { - return this.end(); - } - - const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; - - const moveQueue = playerPokemon.getMoveQueue(); - - while (moveQueue.length && moveQueue[0] - && moveQueue[0].move && (!playerPokemon.getMoveset().find(m => m?.moveId === moveQueue[0].move) - || !playerPokemon.getMoveset()[playerPokemon.getMoveset().findIndex(m => m?.moveId === moveQueue[0].move)]!.isUsable(playerPokemon, moveQueue[0].ignorePP))) { // TODO: is the bang correct? - moveQueue.shift(); - } - - if (moveQueue.length) { - const queuedMove = moveQueue[0]; - if (!queuedMove.move) { - this.handleCommand(Command.FIGHT, -1, false); - } else { - const moveIndex = playerPokemon.getMoveset().findIndex(m => m?.moveId === queuedMove.move); - if (moveIndex > -1 && playerPokemon.getMoveset()[moveIndex]!.isUsable(playerPokemon, queuedMove.ignorePP)) { // TODO: is the bang correct? - this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, { targets: queuedMove.targets, multiple: queuedMove.targets.length > 1 }); - } else { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - } - } - } else { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - } - } - - handleCommand(command: Command, cursor: integer, ...args: any[]): boolean { - const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; - const enemyField = this.scene.getEnemyField(); - let success: boolean; - - 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)) { - const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor]!.moveId : Moves.NONE : Moves.STRUGGLE; // TODO: is the bang correct? - 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) { - turnCommand.targets = [this.fieldIndex]; - } - console.log(moveTargets, getPokemonNameWithAffix(playerPokemon)); - if (moveTargets.targets.length > 1 && moveTargets.multiple) { - this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); - } - if (moveTargets.targets.length <= 1 || moveTargets.multiple) { - turnCommand.move!.targets = moveTargets.targets; //TODO: is the bang correct here? - } else if (playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1) { - turnCommand.move!.targets = playerPokemon.getMoveQueue()[0].targets; //TODO: is the bang correct here? - } 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) { - const move = playerPokemon.getMoveset()[cursor]!; //TODO: is this bang correct? - 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.gameMode.isFreshStartChallenge() && 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("battle:noPokeballForce"), null, () => { - this.scene.ui.showText("", 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("battle:noPokeballTrainer"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else { - const targets = this.scene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); - if (targets.length > 1) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:noPokeballMulti"), null, () => { - this.scene.ui.showText("", 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 && !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("battle:noPokeballStrong"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else { - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; - this.scene.currentBattle.turnCommands[this.fieldIndex]!.targets = targets; - if (this.fieldIndex) { - this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; - } - success = true; - } - } - } - break; - case Command.POKEMON: - case Command.RUN: - const isSwitch = command === Command.POKEMON; - 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("battle:noEscapeForce"), null, () => { - this.scene.ui.showText("", 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("battle:noEscapeTrainer"), null, () => { - this.scene.ui.showText("", 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else { - const trapTag = playerPokemon.findTag(t => t instanceof TrappedTag) as TrappedTag; - const trapped = new Utils.BooleanHolder(false); - const batonPass = isSwitch && args[0] as boolean; - const trappedAbMessages: string[] = []; - if (!batonPass) { - enemyField.forEach(enemyPokemon => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, enemyPokemon, trapped, playerPokemon, true, trappedAbMessages)); - } - if (batonPass || (!trapTag && !trapped.value)) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch - ? { command: Command.POKEMON, cursor: cursor, args: args } - : { command: Command.RUN }; - success = true; - if (!isSwitch && this.fieldIndex) { - this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; - } - } else if (trapTag) { - if (trapTag.sourceMove === Moves.INGRAIN && trapTag.sourceId && this.scene.getPokemonById(trapTag.sourceId)?.isOfType(Type.GHOST)) { - success = true; - this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch - ? { command: Command.POKEMON, cursor: cursor, args: args } - : { command: Command.RUN }; - break; - } - if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - } - this.scene.ui.showText( - i18next.t("battle:noEscapePokemon", { - pokemonName: trapTag.sourceId && this.scene.getPokemonById(trapTag.sourceId) ? getPokemonNameWithAffix(this.scene.getPokemonById(trapTag.sourceId)!) : "", - moveName: trapTag.getMoveName(), - escapeVerb: isSwitch ? i18next.t("battle:escapeVerbSwitch") : i18next.t("battle:escapeVerbFlee") - }), - null, - () => { - this.scene.ui.showText("", 0); - if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - } - }, null, true); - } else if (trapped.value && trappedAbMessages.length > 0) { - if (!isSwitch) { - this.scene.ui.setMode(Mode.MESSAGE); - } - this.scene.ui.showText(trappedAbMessages[0], null, () => { - this.scene.ui.showText("", 0); - if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - } - }, null, true); - } - } - break; - } - - if (success!) { // TODO: is the bang correct? - this.end(); - } - - return success!; // TODO: is the bang correct? - } - - cancel() { - if (this.fieldIndex) { - this.scene.unshiftPhase(new CommandPhase(this.scene, 0)); - this.scene.unshiftPhase(new CommandPhase(this.scene, 1)); - this.end(); - } - } - - checkFightOverride(): boolean { - const pokemon = this.getPokemon(); - - const encoreTag = pokemon.getTag(EncoreTag) as EncoreTag; - - if (!encoreTag) { - return false; - } - - const moveIndex = pokemon.getMoveset().findIndex(m => m?.moveId === encoreTag.moveId); - - if (moveIndex === -1 || !pokemon.getMoveset()[moveIndex]!.isUsable(pokemon)) { // TODO: is this bang correct? - return false; - } - - this.handleCommand(Command.FIGHT, moveIndex, false); - - return true; - } - - getFieldIndex(): integer { - return this.fieldIndex; - } - - getPokemon(): PlayerPokemon { - return this.scene.getPlayerField()[this.fieldIndex]; - } - - end() { - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); - } -} - -/** - * Phase for determining an enemy AI's action for the next turn. - * During this phase, the enemy decides whether to switch (if it has a trainer) - * or to use a move from its moveset. - * - * For more information on how the Enemy AI works, see docs/enemy-ai.md - * @see {@linkcode Pokemon.getMatchupScore} - * @see {@linkcode EnemyPokemon.getNextMove} - */ -export class EnemyCommandPhase extends FieldPhase { - protected fieldIndex: integer; - - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene); - - this.fieldIndex = fieldIndex; - } - - start() { - super.start(); - - const enemyPokemon = this.scene.getEnemyField()[this.fieldIndex]; - - const battle = this.scene.currentBattle; - - const trainer = battle.trainer; - - /** - * If the enemy has a trainer, decide whether or not the enemy should switch - * to another member in its party. - * - * This block compares the active enemy Pokemon's {@linkcode Pokemon.getMatchupScore | matchup score} - * against the active player Pokemon with the enemy party's other non-fainted Pokemon. If a party - * member's matchup score is 3x the active enemy's score (or 2x for "boss" trainers), - * the enemy will switch to that Pokemon. - */ - if (trainer && !enemyPokemon.getMoveQueue().length) { - const opponents = enemyPokemon.getOpponents(); - - const trapTag = enemyPokemon.findTag(t => t instanceof TrappedTag) as TrappedTag; - const trapped = new Utils.BooleanHolder(false); - opponents.forEach(playerPokemon => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, playerPokemon, trapped, enemyPokemon, true, [])); - if (!trapTag && !trapped.value) { - const partyMemberScores = trainer.getPartyMemberMatchupScores(enemyPokemon.trainerSlot, true); - - if (partyMemberScores.length) { - const matchupScores = opponents.map(opp => enemyPokemon.getMatchupScore(opp)); - const matchupScore = matchupScores.reduce((total, score) => total += score, 0) / matchupScores.length; - - const sortedPartyMemberScores = trainer.getSortedPartyMemberMatchupScores(partyMemberScores); - - const switchMultiplier = 1 - (battle.enemySwitchCounter ? Math.pow(0.1, (1 / battle.enemySwitchCounter)) : 0); - - if (sortedPartyMemberScores[0][1] * switchMultiplier >= matchupScore * (trainer.config.isBoss ? 2 : 3)) { - const index = trainer.getNextSummonIndex(enemyPokemon.trainerSlot, partyMemberScores); - - battle.turnCommands[this.fieldIndex + BattlerIndex.ENEMY] = - { command: Command.POKEMON, cursor: index, args: [false] }; - - battle.enemySwitchCounter++; - - return this.end(); - } - } - } - } - - /** Select a move to use (and a target to use it against, if applicable) */ - const nextMove = enemyPokemon.getNextMove(); - - this.scene.currentBattle.turnCommands[this.fieldIndex + BattlerIndex.ENEMY] = - { command: Command.FIGHT, move: nextMove }; - - this.scene.currentBattle.enemySwitchCounter = Math.max(this.scene.currentBattle.enemySwitchCounter - 1, 0); - - this.end(); - } -} - -export class SelectTargetPhase extends PokemonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, fieldIndex); - } - - start() { - super.start(); - - const turnCommand = this.scene.currentBattle.turnCommands[this.fieldIndex]; - const move = turnCommand?.move?.move; - this.scene.ui.setMode(Mode.TARGET_SELECT, this.fieldIndex, move, (targets: BattlerIndex[]) => { - this.scene.ui.setMode(Mode.MESSAGE); - if (targets.length < 1) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = null; - this.scene.unshiftPhase(new CommandPhase(this.scene, this.fieldIndex)); - } else { - turnCommand!.targets = targets; //TODO: is the bang correct here? - } - if (turnCommand?.command === Command.BALL && this.fieldIndex) { - this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; //TODO: is the bang correct here? - } - this.end(); - }); - } -} - -export class TurnStartPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - const field = this.scene.getField(); - const order = this.getOrder(); - - const battlerBypassSpeed = {}; - - this.scene.getField(true).filter(p => p.summonData).map(p => { - const bypassSpeed = new Utils.BooleanHolder(false); - const canCheckHeldItems = new Utils.BooleanHolder(true); - applyAbAttrs(BypassSpeedChanceAbAttr, p, null, bypassSpeed); - applyAbAttrs(PreventBypassSpeedChanceAbAttr, p, null, bypassSpeed, canCheckHeldItems); - if (canCheckHeldItems.value) { - this.scene.applyModifiers(BypassSpeedChanceModifier, p.isPlayer(), p, bypassSpeed); - } - battlerBypassSpeed[p.getBattlerIndex()] = bypassSpeed; - }); - - const moveOrder = order.slice(0); - - moveOrder.sort((a, b) => { - const aCommand = this.scene.currentBattle.turnCommands[a]!; - const bCommand = this.scene.currentBattle.turnCommands[b]!; - - if (aCommand.command !== bCommand.command) { - if (aCommand.command === Command.FIGHT) { - if (aCommand.move?.move === Moves.PURSUIT && bCommand.command === Command.POKEMON) { - return -1; - } else { - return 1; - } - } else if (bCommand.command === Command.FIGHT) { - if (bCommand.move?.move === Moves.PURSUIT && aCommand.command === Command.POKEMON) { - return 1; - } else { - return -1; - } - } - } else if (aCommand?.command === Command.FIGHT) { - const aMove = allMoves[aCommand.move!.move];//TODO: is the bang correct here? - const bMove = allMoves[bCommand!.move!.move];//TODO: is the bang correct here? - - const aPriority = new Utils.IntegerHolder(aMove.priority); - const bPriority = new Utils.IntegerHolder(bMove.priority); - - applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, aMove, aPriority); //TODO: is the bang correct here? - applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, bMove, bPriority); //TODO: is the bang correct here? - - applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, aMove, aPriority); //TODO: is the bang correct here? - applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, bMove, bPriority); //TODO: is the bang correct here? - - if (aPriority.value !== bPriority.value) { - const bracketDifference = Math.ceil(aPriority.value) - Math.ceil(bPriority.value); - const hasSpeedDifference = battlerBypassSpeed[a].value !== battlerBypassSpeed[b].value; - if (bracketDifference === 0 && hasSpeedDifference) { - return battlerBypassSpeed[a].value ? -1 : 1; - } - return aPriority.value < bPriority.value ? 1 : -1; - } - } - - if (battlerBypassSpeed[a]?.value !== battlerBypassSpeed[b]?.value) { - return battlerBypassSpeed[a]?.value ? -1 : 1; - } - - const aIndex = order.indexOf(a); - const bIndex = order.indexOf(b); - - return aIndex < bIndex ? -1 : aIndex > bIndex ? 1 : 0; - }); - - let orderIndex = 0; - - for (const o of moveOrder) { - - const pokemon = field[o]; - const turnCommand = this.scene.currentBattle.turnCommands[o]; - - if (turnCommand?.skip) { - continue; - } - - switch (turnCommand?.command) { - case Command.FIGHT: - const queuedMove = turnCommand.move; - pokemon.turnData.order = orderIndex++; - if (!queuedMove) { - continue; - } - const move = pokemon.getMoveset().find(m => m?.moveId === queuedMove.move) || new PokemonMove(queuedMove.move); - if (move.getMove().hasAttr(MoveHeaderAttr)) { - this.scene.unshiftPhase(new MoveHeaderPhase(this.scene, pokemon, move)); - } - // even though pursuit is ordered before Pokemon commands in the move - // order, the SwitchSummonPhase is unshifted onto the phase list, which - // would cause it to run before pursuit if pursuit was pushed normally. - // the SwitchSummonPhase can't be changed to a push either, because then - // the MoveHeaderPhase for all moves would run prior to the switch-out, - // which is not correct (eg, when focus punching a switching opponent, - // the correct order is switch -> tightening focus message -> attack - // fires, not focus -> switch -> attack). so, we have to specifically - // unshift pursuit when there are other pokemon commands after it, as - // well as order it before any Pokemon commands, otherwise it won't go first. - const remainingMoves = moveOrder.slice(moveOrder.findIndex(mo => mo === o) + 1); - const pendingOpposingPokemonCommands = remainingMoves.filter(o => - this.scene.currentBattle.turnCommands[o]!.command === Command.POKEMON - && (pokemon.isPlayer() ? o >= BattlerIndex.ENEMY : o < BattlerIndex.ENEMY) - ); - const arePokemonCommandsLeftInQueue = Boolean(pendingOpposingPokemonCommands.length); - const addPhase = ( - queuedMove.move === Moves.PURSUIT && arePokemonCommandsLeftInQueue - ? this.scene.unshiftPhase - : this.scene.pushPhase - ).bind(this.scene); - - // pursuit also hits the first pokemon to switch out in doubles, - // regardless of original target - const targets = queuedMove.move === Moves.PURSUIT && arePokemonCommandsLeftInQueue - ? [pendingOpposingPokemonCommands[0]] - : turnCommand.targets || turnCommand.move!.targets; - if (pokemon.isPlayer()) { - if (turnCommand.cursor === -1) { - addPhase(new MovePhase(this.scene, pokemon, targets, move)); - } else { - const playerPhase = new MovePhase(this.scene, pokemon, targets, move, false, queuedMove.ignorePP); - addPhase(playerPhase); - } - } else { - addPhase(new MovePhase(this.scene, pokemon, targets, move, false, queuedMove.ignorePP)); - } - break; - case Command.BALL: - this.scene.unshiftPhase(new AttemptCapturePhase(this.scene, turnCommand.targets![0] % 2, turnCommand.cursor!));//TODO: is the bang correct here? - break; - case Command.POKEMON: - pokemon.addTag(BattlerTagType.ESCAPING); - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, pokemon.getFieldIndex(), turnCommand.cursor!, true, turnCommand.args![0] as boolean, pokemon.isPlayer())); - break; - case Command.RUN: - let runningPokemon = pokemon; - if (this.scene.currentBattle.double) { - const playerActivePokemon = field.filter(pokemon => { - if (!!pokemon) { - return pokemon.isPlayer() && pokemon.isActive(); - } else { - return; - } - }); - // if only one pokemon is alive, use that one - if (playerActivePokemon.length > 1) { - // find which active pokemon has faster speed - const fasterPokemon = playerActivePokemon[0].getStat(Stat.SPD) > playerActivePokemon[1].getStat(Stat.SPD) ? playerActivePokemon[0] : playerActivePokemon[1]; - // check if either active pokemon has the ability "Run Away" - const hasRunAway = playerActivePokemon.find(p => p.hasAbility(Abilities.RUN_AWAY)); - runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; - } - } - this.scene.unshiftPhase(new AttemptRunPhase(this.scene, runningPokemon.getFieldIndex())); - break; - } - } - - - this.scene.pushPhase(new WeatherEffectPhase(this.scene)); - - for (const o of order) { - if (field[o].status && field[o].status.isPostTurn()) { - this.scene.pushPhase(new PostTurnStatusEffectPhase(this.scene, o)); - } - } - - this.scene.pushPhase(new BerryPhase(this.scene)); - this.scene.pushPhase(new TurnEndPhase(this.scene)); - - /** - * this.end() will call shiftPhase(), which dumps everything from PrependQueue (aka everything that is unshifted()) to the front - * of the queue and dequeues to start the next phase - * this is important since stuff like SwitchSummon, AttemptRun, AttemptCapture Phases break the "flow" and should take precedence - */ - this.end(); - } -} - -/** The phase after attacks where the pokemon eat berries */ -export class BerryPhase extends FieldPhase { - start() { - super.start(); - - this.executeForAll((pokemon) => { - const hasUsableBerry = !!this.scene.findModifier((m) => { - return m instanceof BerryModifier && m.shouldApply([pokemon]); - }, pokemon.isPlayer()); - - if (hasUsableBerry) { - const cancelled = new Utils.BooleanHolder(false); - pokemon.getOpponents().map((opp) => applyAbAttrs(PreventBerryUseAbAttr, opp, cancelled)); - - if (cancelled.value) { - pokemon.scene.queueMessage(i18next.t("abilityTriggers:preventBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); - } else { - this.scene.unshiftPhase( - new CommonAnimPhase(this.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM) - ); - - for (const berryModifier of this.scene.applyModifiers(BerryModifier, pokemon.isPlayer(), pokemon) as BerryModifier[]) { - if (berryModifier.consumed) { - if (!--berryModifier.stackCount) { - this.scene.removeModifier(berryModifier); - } else { - berryModifier.consumed = false; - } - } - this.scene.eventTarget.dispatchEvent(new BerryUsedEvent(berryModifier)); // Announce a berry was used - } - - this.scene.updateModifiers(pokemon.isPlayer()); - - applyAbAttrs(HealFromBerryUseAbAttr, pokemon, new Utils.BooleanHolder(false)); - } - } - }); - - this.end(); - } -} - -export class TurnEndPhase extends FieldPhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.currentBattle.incrementTurn(this.scene); - this.scene.eventTarget.dispatchEvent(new TurnEndEvent(this.scene.currentBattle.turn)); - - const handlePokemon = (pokemon: Pokemon) => { - pokemon.lapseTags(BattlerTagLapseType.TURN_END); - - if (pokemon.summonData.disabledMove && !--pokemon.summonData.disabledTurns) { - this.scene.pushPhase(new MessagePhase(this.scene, i18next.t("battle:notDisabled", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: allMoves[pokemon.summonData.disabledMove].name }))); - pokemon.summonData.disabledMove = Moves.NONE; - } - - this.scene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); - - if (this.scene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { - this.scene.unshiftPhase(new PokemonHealPhase(this.scene, pokemon.getBattlerIndex(), - Math.max(pokemon.getMaxHp() >> 4, 1), i18next.t("battle:turnEndHpRestore", { pokemonName: getPokemonNameWithAffix(pokemon) }), true)); - } - - if (!pokemon.isPlayer()) { - this.scene.applyModifiers(EnemyTurnHealModifier, false, pokemon); - this.scene.applyModifier(EnemyStatusEffectHealChanceModifier, false, pokemon); - } - - applyPostTurnAbAttrs(PostTurnAbAttr, pokemon); - - this.scene.applyModifiers(TurnStatusEffectModifier, pokemon.isPlayer(), pokemon); - - this.scene.applyModifiers(TurnHeldItemTransferModifier, pokemon.isPlayer(), pokemon); - - pokemon.battleSummonData.turnCount++; - }; - - this.executeForAll(handlePokemon); - - this.scene.arena.lapseTags(); - - if (this.scene.arena.weather && !this.scene.arena.weather.lapse()) { - this.scene.arena.trySetWeather(WeatherType.NONE, false); - } - - if (this.scene.arena.terrain && !this.scene.arena.terrain.lapse()) { - this.scene.arena.trySetTerrain(TerrainType.NONE, false); - } - - this.end(); - } -} - -export class BattleEndPhase extends BattlePhase { - start() { - super.start(); - - this.scene.currentBattle.addBattleScore(this.scene); - - this.scene.gameData.gameStats.battles++; - if (this.scene.currentBattle.trainer) { - this.scene.gameData.gameStats.trainersDefeated++; - } - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) { - this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; - } - - // Endless graceful end - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex >= 5850) { - this.scene.clearPhaseQueue(); - this.scene.unshiftPhase(new GameOverPhase(this.scene, true)); - } - - for (const pokemon of this.scene.getField()) { - if (pokemon) { - pokemon.resetBattleSummonData(); - } - } - - for (const pokemon of this.scene.getParty().filter(p => p.isAllowedInBattle())) { - applyPostBattleAbAttrs(PostBattleAbAttr, pokemon); - } - - if (this.scene.currentBattle.moneyScattered) { - this.scene.currentBattle.pickUpScatteredMoney(this.scene); - } - - this.scene.clearEnemyHeldItemModifiers(); - - const lapsingModifiers = this.scene.findModifiers(m => m instanceof LapsingPersistentModifier || m instanceof LapsingPokemonHeldItemModifier) as (LapsingPersistentModifier | LapsingPokemonHeldItemModifier)[]; - for (const m of lapsingModifiers) { - const args: any[] = []; - if (m instanceof LapsingPokemonHeldItemModifier) { - args.push(this.scene.getPokemonById(m.pokemonId)); - } - if (!m.lapse(args)) { - this.scene.removeModifier(m); - } - } - - this.scene.updateModifiers().then(() => this.end()); - } -} - -export class NewBattlePhase extends BattlePhase { - start() { - super.start(); - - this.scene.newBattle(); - - this.end(); - } -} - -export class CommonAnimPhase extends PokemonPhase { - private anim: CommonAnim | null; - private targetIndex: integer | undefined; - - constructor(scene: BattleScene, battlerIndex?: BattlerIndex, targetIndex?: BattlerIndex | undefined, anim?: CommonAnim) { - super(scene, battlerIndex); - - this.anim = anim!; // TODO: is this bang correct? - this.targetIndex = targetIndex; - } - - setAnimation(anim: CommonAnim) { - this.anim = anim; - } - - start() { - new CommonBattleAnim(this.anim, this.getPokemon(), this.targetIndex !== undefined ? (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField())[this.targetIndex] : this.getPokemon()).play(this.scene, () => { - this.end(); - }); - } -} - -export class MoveHeaderPhase extends BattlePhase { - public pokemon: Pokemon; - public move: PokemonMove; - - constructor(scene: BattleScene, pokemon: Pokemon, move: PokemonMove) { - super(scene); - - this.pokemon = pokemon; - this.move = move; - } - - canMove(): boolean { - return this.pokemon.isActive(true) && this.move.isUsable(this.pokemon); - } - - start() { - super.start(); - - if (this.canMove()) { - applyMoveAttrs(MoveHeaderAttr, this.pokemon, null, this.move.getMove()).then(() => this.end()); - } else { - this.end(); - } - } -} - -export class MovePhase extends BattlePhase { - public pokemon: Pokemon; - public move: PokemonMove; - public targets: BattlerIndex[]; - protected followUp: boolean; - protected ignorePp: boolean; - protected failed: boolean; - protected cancelled: boolean; - - constructor(scene: BattleScene, pokemon: Pokemon, targets: BattlerIndex[], move: PokemonMove, followUp?: boolean, ignorePp?: boolean) { - super(scene); - - this.pokemon = pokemon; - this.targets = targets; - this.move = move; - this.followUp = !!followUp; - this.ignorePp = !!ignorePp; - this.failed = false; - this.cancelled = false; - } - - canMove(): boolean { - return this.pokemon.isActive(true) && this.move.isUsable(this.pokemon, this.ignorePp) && !!this.targets.length; - } - - /**Signifies the current move should fail but still use PP */ - fail(): void { - this.failed = true; - } - - /**Signifies the current move should cancel and retain PP */ - cancel(): void { - this.cancelled = true; - } - - start() { - super.start(); - - console.log(Moves[this.move.moveId]); - - if (!this.canMove()) { - if (this.move.moveId && this.pokemon.summonData?.disabledMove === this.move.moveId) { - this.scene.queueMessage(`${this.move.getName()} is disabled!`); - } - if (this.pokemon.isActive(true) && this.move.ppUsed >= this.move.getMovePp()) { // if the move PP was reduced from Spite or otherwise, the move fails - this.fail(); - this.showMoveText(); - this.showFailedText(); - } - return this.end(); - } - - if (!this.followUp) { - if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null)) { - this.scene.arena.setIgnoreAbilities(); - } - } else { - this.pokemon.turnData.hitsLeft = 0; // TODO: is `0` correct? - this.pokemon.turnData.hitCount = 0; // TODO: is `0` correct? - } - - // Move redirection abilities (ie. Storm Drain) only support single target moves - const moveTarget = this.targets.length === 1 - ? new Utils.IntegerHolder(this.targets[0]) - : null; - if (moveTarget) { - const oldTarget = moveTarget.value; - this.scene.getField(true).filter(p => p !== this.pokemon).forEach(p => applyAbAttrs(RedirectMoveAbAttr, p, null, this.move.moveId, moveTarget)); - this.pokemon.getOpponents().forEach(p => { - const redirectTag = p.getTag(CenterOfAttentionTag) as CenterOfAttentionTag; - if (redirectTag && (!redirectTag.powder || (!this.pokemon.isOfType(Type.GRASS) && !this.pokemon.hasAbility(Abilities.OVERCOAT)))) { - moveTarget.value = p.getBattlerIndex(); - } - }); - //Check if this move is immune to being redirected, and restore its target to the intended target if it is. - const abilityRedirectImmune = this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr); - const moveRedirectImmune = this.move.getMove().getAttrs(BypassRedirectAttr).some(attr => attr.apply(this.pokemon, this.scene.getField(false)[oldTarget], this.move.getMove())); - if (abilityRedirectImmune || moveRedirectImmune) { - //If an ability prevented this move from being redirected, display its ability pop up. - if (abilityRedirectImmune && !moveRedirectImmune && oldTarget !== moveTarget.value) { - this.scene.unshiftPhase(new ShowAbilityPhase(this.scene, this.pokemon.getBattlerIndex(), this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr))); - } - moveTarget.value = oldTarget; - } - this.targets[0] = moveTarget.value; - } - - // Check for counterattack moves to switch target - if (this.targets.length === 1 && this.targets[0] === BattlerIndex.ATTACKER) { - if (this.pokemon.turnData.attacksReceived.length) { - const attack = this.pokemon.turnData.attacksReceived[0]; - this.targets[0] = attack.sourceBattlerIndex; - - // account for metal burst and comeuppance hitting remaining targets in double battles - // counterattack will redirect to remaining ally if original attacker faints - if (this.scene.currentBattle.double && this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER)) { - if (this.scene.getField()[this.targets[0]].hp === 0) { - const opposingField = this.pokemon.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField(); - //@ts-ignore - this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex(); //TODO: fix ts-ignore - } - } - } - if (this.targets[0] === BattlerIndex.ATTACKER) { - this.fail(); // Marks the move as failed for later in doMove - this.showMoveText(); - this.showFailedText(); - } - } - - const targets = this.scene.getField(true).filter(p => { - if (this.targets.indexOf(p.getBattlerIndex()) > -1) { - return true; - } - return false; - }); - - const doMove = () => { - this.pokemon.turnData.acted = true; // Record that the move was attempted, even if it fails - - this.pokemon.lapseTags(BattlerTagLapseType.PRE_MOVE); - - let ppUsed = 1; - // Filter all opponents to include only those this move is targeting - const targetedOpponents = this.pokemon.getOpponents().filter(o => this.targets.includes(o.getBattlerIndex())); - for (const opponent of targetedOpponents) { - if (this.move.ppUsed + ppUsed >= this.move.getMovePp()) { // If we're already at max PP usage, stop checking - break; - } - if (opponent.hasAbilityWithAttr(IncreasePpAbAttr)) { // Accounting for abilities like Pressure - ppUsed++; - } - } - - if (!this.followUp && this.canMove() && !this.cancelled) { - this.pokemon.lapseTags(BattlerTagLapseType.MOVE); - } - - const moveQueue = this.pokemon.getMoveQueue(); - if (this.cancelled || this.failed) { - if (this.failed) { - this.move.usePp(ppUsed); // Only use PP if the move failed - this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); - } - - // Record a failed move so Abilities like Truant don't trigger next turn and soft-lock - this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL }); - - this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); // Remove any tags from moves like Fly/Dive/etc. - moveQueue.shift(); // Remove the second turn of charge moves - return this.end(); - } - - this.scene.triggerPokemonFormChange(this.pokemon, SpeciesFormChangePreMoveTrigger); - - if (this.move.moveId) { - this.showMoveText(); - } - - // This should only happen when there are no valid targets left on the field - if ((moveQueue.length && moveQueue[0].move === Moves.NONE) || !targets.length) { - this.showFailedText(); - this.cancel(); - - // Record a failed move so Abilities like Truant don't trigger next turn and soft-lock - this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL }); - - this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); // Remove any tags from moves like Fly/Dive/etc. - - moveQueue.shift(); - return this.end(); - } - - if (!moveQueue.length || !moveQueue.shift()?.ignorePP) { // using .shift here clears out two turn moves once they've been used - this.move.usePp(ppUsed); - this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); - } - - if (!allMoves[this.move.moveId].hasAttr(CopyMoveAttr)) { - this.scene.currentBattle.lastMove = this.move.moveId; - } - - // 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()); - const 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.targets, this.move.getMove())) { - success = false; - if (failedText === null) { - failedText = getTerrainBlockMessage(targets[0], this.scene.arena.terrain?.terrainType!); // TODO: is this bang correct? - } - } - - /** - * Trigger pokemon type change before playing the move animation - * Will still change the user's type when using Roar, Whirlwind, Trick-or-Treat, and Forest's Curse, - * regardless of whether the move successfully executes or not. - */ - if (success || [Moves.ROAR, Moves.WHIRLWIND, Moves.TRICK_OR_TREAT, Moves.FORESTS_CURSE].includes(this.move.moveId)) { - applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); - } - - 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 }); - if (!cancelled.value) { - this.showFailedText(failedText); - } - } - // Checks if Dancer ability is triggered - if (this.move.getMove().hasFlag(MoveFlags.DANCE_MOVE) && !this.followUp) { - // Pokemon with Dancer can be on either side of the battle so we check in both cases - this.scene.getPlayerField().forEach(pokemon => { - applyPostMoveUsedAbAttrs(PostMoveUsedAbAttr, pokemon, this.move, this.pokemon, this.targets); - }); - this.scene.getEnemyField().forEach(pokemon => { - applyPostMoveUsedAbAttrs(PostMoveUsedAbAttr, pokemon, this.move, this.pokemon, this.targets); - }); - } - this.end(); - }; - - if (!this.followUp && this.pokemon.status && !this.pokemon.status.isPostTurn()) { - this.pokemon.status.incrementTurn(); - let activated = false; - let healed = false; - - switch (this.pokemon.status.effect) { - case StatusEffect.PARALYSIS: - if (!this.pokemon.randSeedInt(4)) { - activated = true; - this.cancelled = true; - } - break; - case StatusEffect.SLEEP: - applyMoveAttrs(BypassSleepAttr, this.pokemon, null, this.move.getMove()); - healed = this.pokemon.status.turnCount === this.pokemon.status.cureTurn; - activated = !healed && !this.pokemon.getTag(BattlerTagType.BYPASS_SLEEP); - this.cancelled = activated; - break; - case StatusEffect.FREEZE: - healed = !!this.move.getMove().findAttr(attr => attr instanceof HealStatusEffectAttr && attr.selfTarget && attr.isOfEffect(StatusEffect.FREEZE)) || !this.pokemon.randSeedInt(5); - activated = !healed; - this.cancelled = activated; - break; - } - - if (activated) { - this.scene.queueMessage(getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); - this.scene.unshiftPhase(new CommonAnimPhase(this.scene, this.pokemon.getBattlerIndex(), undefined, CommonAnim.POISON + (this.pokemon.status.effect - 1))); - doMove(); - } else { - if (healed) { - this.scene.queueMessage(getStatusEffectHealText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); - this.pokemon.resetStatus(); - this.pokemon.updateInfo(); - } - doMove(); - } - } else { - doMove(); - } - } - - getEffectPhase(): MoveEffectPhase { - return new MoveEffectPhase(this.scene, this.pokemon.getBattlerIndex(), this.targets, this.move); - } - - showMoveText(): void { - if (this.move.getMove().hasAttr(ChargeAttr)) { - const lastMove = this.pokemon.getLastXMoves() as TurnMove[]; - if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER) { - this.scene.queueMessage(i18next.t("battle:useMove", { - pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), - moveName: this.move.getName() - }), 500); - return; - } - } - - if (this.pokemon.getTag(BattlerTagType.RECHARGING || BattlerTagType.INTERRUPTED)) { - return; - } - - this.scene.queueMessage(i18next.t("battle:useMove", { - pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), - moveName: this.move.getName() - }), 500); - applyMoveAttrs(PreMoveMessageAttr, this.pokemon, this.pokemon.getOpponents().find(() => true)!, this.move.getMove()); //TODO: is the bang correct here? - } - - showFailedText(failedText: string | null = null): void { - this.scene.queueMessage(failedText || i18next.t("battle:attackFailed")); - } - - end() { - if (!this.followUp && this.canMove()) { - this.scene.unshiftPhase(new MoveEndPhase(this.scene, this.pokemon.getBattlerIndex())); - } - - super.end(); - } -} - -export class MoveEffectPhase extends PokemonPhase { - public move: PokemonMove; - protected targets: BattlerIndex[]; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, targets: BattlerIndex[], move: PokemonMove) { - super(scene, battlerIndex); - this.move = move; - /** - * In double battles, if the right Pokemon selects a spread move and the left Pokemon dies - * with no party members available to switch in, then the right Pokemon takes the index - * of the left Pokemon and gets hit unless this is checked. - */ - if (targets.includes(battlerIndex) && this.move.getMove().moveTarget === MoveTarget.ALL_NEAR_OTHERS) { - const i = targets.indexOf(battlerIndex); - targets.splice(i, i + 1); - } - this.targets = targets; - } - - start() { - super.start(); - - /** The Pokemon using this phase's invoked move */ - const user = this.getUserPokemon(); - /** All Pokemon targeted by this phase's invoked move */ - const targets = this.getTargets(); - - /** If the user was somehow removed from the field, end this phase */ - if (!user?.isOnField()) { - return super.end(); - } - - /** - * Does an effect from this move override other effects on this turn? - * e.g. Charging moves (Fly, etc.) on their first turn of use. - */ - const overridden = new Utils.BooleanHolder(false); - /** The {@linkcode Move} object from {@linkcode allMoves} invoked by this phase */ - const move = this.move.getMove(); - - // Assume single target for override - applyMoveAttrs(OverrideMoveEffectAttr, user, this.getTarget() ?? null, move, overridden, this.move.virtual).then(() => { - // If other effects were overriden, stop this phase before they can be applied - if (overridden.value) { - return this.end(); - } - - user.lapseTags(BattlerTagLapseType.MOVE_EFFECT); - - /** - * If this phase is for the first hit of the invoked move, - * resolve the move's total hit count. This block combines the - * effects of the move itself, Parental Bond, and Multi-Lens to do so. - */ - if (user.turnData.hitsLeft === undefined) { - const hitCount = new Utils.IntegerHolder(1); - // Assume single target for multi hit - applyMoveAttrs(MultiHitAttr, user, this.getTarget() ?? null, move, hitCount); - // If Parental Bond is applicable, double the hit count - applyPreAttackAbAttrs(AddSecondStrikeAbAttr, user, null, move, targets.length, hitCount, new Utils.IntegerHolder(0)); - // If Multi-Lens is applicable, multiply the hit count by 1 + the number of Multi-Lenses held by the user - if (move instanceof AttackMove && !move.hasAttr(FixedDamageAttr)) { - this.scene.applyModifiers(PokemonMultiHitModifier, user.isPlayer(), user, hitCount, new Utils.IntegerHolder(0)); - } - // Set the user's relevant turnData fields to reflect the final hit count - user.turnData.hitCount = hitCount.value; - user.turnData.hitsLeft = hitCount.value; - } - - /** - * Log to be entered into the user's move history once the move result is resolved. - * Note that `result` (a {@linkcode MoveResult}) logs whether the move was successfully - * used in the sense of "Does it have an effect on the user?". - */ - const moveHistoryEntry = { move: this.move.moveId, targets: this.targets, result: MoveResult.PENDING, virtual: this.move.virtual }; - - /** - * Stores results of hit checks of the invoked move against all targets, organized by battler index. - * @see {@linkcode hitCheck} - */ - const targetHitChecks = Object.fromEntries(targets.map(p => [p.getBattlerIndex(), this.hitCheck(p)])); - const hasActiveTargets = targets.some(t => t.isActive(true)); - /** - * If no targets are left for the move to hit (FAIL), or the invoked move is single-target - * (and not random target) and failed the hit check against its target (MISS), log the move - * as FAILed or MISSed (depending on the conditions above) and end this phase. - */ - if (!hasActiveTargets || (!move.hasAttr(VariableTargetAttr) && !move.isMultiTarget() && !targetHitChecks[this.targets[0]])) { - this.stopMultiHit(); - if (hasActiveTargets) { - this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: this.getTarget()? getPokemonNameWithAffix(this.getTarget()!) : "" })); - moveHistoryEntry.result = MoveResult.MISS; - applyMoveAttrs(MissEffectAttr, user, null, move); - } else { - this.scene.queueMessage(i18next.t("battle:attackFailed")); - moveHistoryEntry.result = MoveResult.FAIL; - } - user.pushMoveHistory(moveHistoryEntry); - return this.end(); - } - - /** All move effect attributes are chained together in this array to be applied asynchronously. */ - const applyAttrs: Promise[] = []; - - // Move animation only needs one target - new MoveAnim(move.id as Moves, user, this.getTarget()?.getBattlerIndex()!).play(this.scene, () => { // TODO: is the bang correct here? - /** Has the move successfully hit a target (for damage) yet? */ - let hasHit: boolean = false; - for (const target of targets) { - /** - * If the move missed a target, stop all future hits against that target - * and move on to the next target (if there is one). - */ - if (!targetHitChecks[target.getBattlerIndex()]) { - this.stopMultiHit(target); - this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); - if (moveHistoryEntry.result === MoveResult.PENDING) { - moveHistoryEntry.result = MoveResult.MISS; - } - user.pushMoveHistory(moveHistoryEntry); - applyMoveAttrs(MissEffectAttr, user, null, move); - continue; - } - - /** The {@linkcode ArenaTagSide} to which the target belongs */ - const targetSide = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; - /** Has the invoked move been cancelled by conditional protection (e.g Quick Guard)? */ - const hasConditionalProtectApplied = new Utils.BooleanHolder(false); - /** Does the applied conditional protection bypass Protect-ignoring effects? */ - const bypassIgnoreProtect = new Utils.BooleanHolder(false); - // If the move is not targeting a Pokemon on the user's side, try to apply conditional protection effects - if (!this.move.getMove().isAllyTarget()) { - this.scene.arena.applyTagsForSide(ConditionalProtectTag, targetSide, hasConditionalProtectApplied, user, target, move.id, bypassIgnoreProtect); - } - - /** Is the target protected by Protect, etc. or a relevant conditional protection effect? */ - const isProtected = (bypassIgnoreProtect.value || !this.move.getMove().checkFlag(MoveFlags.IGNORE_PROTECT, user, target)) - && (hasConditionalProtectApplied.value || target.findTags(t => t instanceof ProtectedTag).find(t => target.lapseTag(t.tagType))); - - /** Does this phase represent the invoked move's first strike? */ - const firstHit = (user.turnData.hitsLeft === user.turnData.hitCount); - - // Only log the move's result on the first strike - if (firstHit) { - user.pushMoveHistory(moveHistoryEntry); - } - - /** - * Since all fail/miss checks have applied, the move is considered successfully applied. - * It's worth noting that if the move has no effect or is protected against, this assignment - * is overwritten and the move is logged as a FAIL. - */ - moveHistoryEntry.result = MoveResult.SUCCESS; - - /** - * Stores the result of applying the invoked move to the target. - * If the target is protected, the result is always `NO_EFFECT`. - * Otherwise, the hit result is based on type effectiveness, immunities, - * and other factors that may negate the attack or status application. - * - * Internally, the call to {@linkcode Pokemon.apply} is where damage is calculated - * (for attack moves) and the target's HP is updated. However, this isn't - * made visible to the user until the resulting {@linkcode DamagePhase} - * is invoked. - */ - const hitResult = !isProtected ? target.apply(user, move) : HitResult.NO_EFFECT; - - /** Does {@linkcode hitResult} indicate that damage was dealt to the target? */ - const dealsDamage = [ - HitResult.EFFECTIVE, - HitResult.SUPER_EFFECTIVE, - HitResult.NOT_VERY_EFFECTIVE, - HitResult.ONE_HIT_KO - ].includes(hitResult); - - /** Is this target the first one hit by the move on its current strike? */ - const firstTarget = dealsDamage && !hasHit; - if (firstTarget) { - hasHit = true; - } - - /** - * If the move has no effect on the target (i.e. the target is protected or immune), - * change the logged move result to FAIL. - */ - if (hitResult === HitResult.NO_EFFECT) { - moveHistoryEntry.result = MoveResult.FAIL; - } - - /** Does this phase represent the invoked move's last strike? */ - const lastHit = (user.turnData.hitsLeft === 1 || !this.getTarget()?.isActive()); - - /** - * If the user can change forms by using the invoked move, - * it only changes forms after the move's last hit - * (see Relic Song's interaction with Parental Bond when used by Meloetta). - */ - if (lastHit) { - this.scene.triggerPokemonFormChange(user, SpeciesFormChangePostMoveTrigger); - } - - /** - * Create a Promise that applys *all* effects from the invoked move's MoveEffectAttrs. - * These are ordered by trigger type (see {@linkcode MoveEffectTrigger}), and each trigger - * type requires different conditions to be met with respect to the move's hit result. - */ - applyAttrs.push(new Promise(resolve => { - // Apply all effects with PRE_MOVE triggers (if the target isn't immune to the move) - applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === MoveEffectTrigger.PRE_APPLY && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit) && hitResult !== HitResult.NO_EFFECT, - user, target, move).then(() => { - // All other effects require the move to not have failed or have been cancelled to trigger - if (hitResult !== HitResult.FAIL) { - /** Are the move's effects tied to the first turn of a charge move? */ - const chargeEffect = !!move.getAttrs(ChargeAttr).find(ca => ca.usedChargeEffect(user, this.getTarget() ?? null, move)); - /** - * If the invoked move's effects are meant to trigger during the move's "charge turn," - * ignore all effects after this point. - * Otherwise, apply all self-targeted POST_APPLY effects. - */ - Utils.executeIf(!chargeEffect, () => applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === MoveEffectTrigger.POST_APPLY - && attr.selfTarget && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit), user, target, move)).then(() => { - // All effects past this point require the move to have hit the target - if (hitResult !== HitResult.NO_EFFECT) { - // Apply all non-self-targeted POST_APPLY effects - applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.POST_APPLY - && !(attr as MoveEffectAttr).selfTarget && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit), user, target, this.move.getMove()).then(() => { - /** - * If the move hit, and the target doesn't have Shield Dust, - * apply the chance to flinch the target gained from King's Rock - */ - if (dealsDamage && !target.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr)) { - const flinched = new Utils.BooleanHolder(false); - user.scene.applyModifiers(FlinchChanceModifier, user.isPlayer(), user, flinched); - if (flinched.value) { - target.addTag(BattlerTagType.FLINCHED, undefined, this.move.moveId, user.id); - } - } - // If the move was not protected against, apply all HIT effects - Utils.executeIf(!isProtected && !chargeEffect, () => applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.HIT - && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit) && (!attr.firstTargetOnly || firstTarget), user, target, this.move.getMove()).then(() => { - // Apply the target's post-defend ability effects (as long as the target is active or can otherwise apply them) - return Utils.executeIf(!target.isFainted() || target.canApplyAbility(), () => applyPostDefendAbAttrs(PostDefendAbAttr, target, user, this.move.getMove(), hitResult).then(() => { - // If the invoked move is an enemy attack, apply the enemy's status effect-inflicting tags and tokens - target.lapseTag(BattlerTagType.BEAK_BLAST_CHARGING); - if (move.category === MoveCategory.PHYSICAL && user.isPlayer() !== target.isPlayer()) { - target.lapseTag(BattlerTagType.SHELL_TRAP); - } - if (!user.isPlayer() && this.move.getMove() instanceof AttackMove) { - user.scene.applyShuffledModifiers(this.scene, EnemyAttackStatusEffectChanceModifier, false, target); - } - })).then(() => { - // Apply the user's post-attack ability effects - applyPostAttackAbAttrs(PostAttackAbAttr, user, target, this.move.getMove(), hitResult).then(() => { - /** - * If the invoked move is an attack, apply the user's chance to - * steal an item from the target granted by Grip Claw - */ - if (this.move.getMove() instanceof AttackMove) { - this.scene.applyModifiers(ContactHeldItemTransferChanceModifier, this.player, user, target); - } - resolve(); - }); - }); - }) - ).then(() => resolve()); - }); - } else { - applyMoveAttrs(NoEffectAttr, user, null, move).then(() => resolve()); - } - }); - } else { - resolve(); - } - }); - })); - } - // Apply the move's POST_TARGET effects on the move's last hit, after all targeted effects have resolved - const postTarget = (user.turnData.hitsLeft === 1 || !this.getTarget()?.isActive()) ? - applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === MoveEffectTrigger.POST_TARGET, user, null, move) : - null; - - if (!!postTarget) { - if (applyAttrs.length) { // If there is a pending asynchronous move effect, do this after - applyAttrs[applyAttrs.length - 1]?.then(() => postTarget); - } else { // Otherwise, push a new asynchronous move effect - applyAttrs.push(postTarget); - } - } - - // Wait for all move effects to finish applying, then end this phase - Promise.allSettled(applyAttrs).then(() => this.end()); - }); - }); - } - - end() { - const move = this.move.getMove(); - move.type = move.defaultType; - const user = this.getUserPokemon(); - /** - * If this phase isn't for the invoked move's last strike, - * unshift another MoveEffectPhase for the next strike. - * Otherwise, queue a message indicating the number of times the move has struck - * (if the move has struck more than once), then apply the heal from Shell Bell - * to the user. - */ - if (user) { - if (user.turnData.hitsLeft && --user.turnData.hitsLeft >= 1 && this.getTarget()?.isActive()) { - this.scene.unshiftPhase(this.getNewHitPhase()); - } else { - // Queue message for number of hits made by multi-move - // If multi-hit attack only hits once, still want to render a message - const hitsTotal = user.turnData.hitCount! - Math.max(user.turnData.hitsLeft!, 0); // TODO: are those bangs correct? - if (hitsTotal > 1 || (user.turnData.hitsLeft && user.turnData.hitsLeft > 0)) { - // If there are multiple hits, or if there are hits of the multi-hit move left - this.scene.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal })); - } - this.scene.applyModifiers(HitHealModifier, this.player, user); - } - } - - super.end(); - } - - /** - * Resolves whether this phase's invoked move hits or misses the given target - * @param target {@linkcode Pokemon} the Pokemon targeted by the invoked move - * @returns `true` if the move does not miss the target; `false` otherwise - */ - hitCheck(target: Pokemon): boolean { - // Moves targeting the user and entry hazards can't miss - if ([MoveTarget.USER, MoveTarget.ENEMY_SIDE].includes(this.move.getMove().moveTarget)) { - return true; - } - - const user = this.getUserPokemon()!; // TODO: is this bang correct? - - // Hit check only calculated on first hit for multi-hit moves unless flag is set to check all hits. - // However, if an ability with the MaxMultiHitAbAttr, namely Skill Link, is present, act as a normal - // multi-hit move and proceed with all hits - if (user.turnData.hitsLeft < user.turnData.hitCount) { - if (!this.move.getMove().hasFlag(MoveFlags.CHECK_ALL_HITS) || user.hasAbilityWithAttr(MaxMultiHitAbAttr)) { - return true; - } - } - - if (user.hasAbilityWithAttr(AlwaysHitAbAttr) || target.hasAbilityWithAttr(AlwaysHitAbAttr)) { - return true; - } - - // If the user should ignore accuracy on a target, check who the user targeted last turn and see if they match - if (user.getTag(BattlerTagType.IGNORE_ACCURACY) && (user.getLastXMoves().find(() => true)?.targets || []).indexOf(target.getBattlerIndex()) !== -1) { - return true; - } - - if (target.getTag(BattlerTagType.ALWAYS_GET_HIT)) { - return true; - } - - const semiInvulnerableTag = target.getTag(SemiInvulnerableTag); - if (semiInvulnerableTag && !this.move.getMove().getAttrs(HitsTagAttr).some(hta => hta.tagType === semiInvulnerableTag.tagType)) { - return false; - } - - const moveAccuracy = this.move.getMove().calculateBattleAccuracy(user!, target); // TODO: is the bang correct here? - - if (moveAccuracy === -1) { - return true; - } - - const accuracyMultiplier = user.getAccuracyMultiplier(target, this.move.getMove()); - const rand = user.randSeedInt(100, 1); - - return rand <= moveAccuracy * (accuracyMultiplier!); // TODO: is this bang correct? - } - - /** Returns the {@linkcode Pokemon} using this phase's invoked move */ - getUserPokemon(): Pokemon | undefined { - if (this.battlerIndex > BattlerIndex.ENEMY_2) { - return this.scene.getPokemonById(this.battlerIndex) ?? undefined; - } - return (this.player ? this.scene.getPlayerField() : this.scene.getEnemyField())[this.fieldIndex]; - } - - /** Returns an array of all {@linkcode Pokemon} targeted by this phase's invoked move */ - getTargets(): Pokemon[] { - return this.scene.getField(true).filter(p => this.targets.indexOf(p.getBattlerIndex()) > -1); - } - - /** Returns the first target of this phase's invoked move */ - getTarget(): Pokemon | undefined { - return this.getTargets()[0]; - } - - /** - * Removes the given {@linkcode Pokemon} from this phase's target list - * @param target {@linkcode Pokemon} the Pokemon to be removed - */ - removeTarget(target: Pokemon): void { - const targetIndex = this.targets.findIndex(ind => ind === target.getBattlerIndex()); - if (targetIndex !== -1) { - this.targets.splice(this.targets.findIndex(ind => ind === target.getBattlerIndex()), 1); - } - } - - /** - * Prevents subsequent strikes of this phase's invoked move from occurring - * @param target {@linkcode Pokemon} if defined, only stop subsequent - * strikes against this Pokemon - */ - stopMultiHit(target?: Pokemon): void { - /** If given a specific target, remove the target from subsequent strikes */ - if (target) { - this.removeTarget(target); - } - /** - * If no target specified, or the specified target was the last of this move's - * targets, completely cancel all subsequent strikes. - */ - if (!target || this.targets.length === 0 ) { - this.getUserPokemon()!.turnData.hitCount = 1; // TODO: is the bang correct here? - this.getUserPokemon()!.turnData.hitsLeft = 1; // TODO: is the bang correct here? - } - } - - /** Returns a new MoveEffectPhase with the same properties as this phase */ - getNewHitPhase() { - return new MoveEffectPhase(this.scene, this.battlerIndex, this.targets, this.move); - } -} - -export class MoveEndPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); - } - - start() { - super.start(); - - const pokemon = this.getPokemon(); - if (pokemon.isActive(true)) { - pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); - } - - this.scene.arena.setIgnoreAbilities(false); - - this.end(); - } -} - -export class MoveAnimTestPhase extends BattlePhase { - private moveQueue: Moves[]; - - constructor(scene: BattleScene, moveQueue?: Moves[]) { - super(scene); - - this.moveQueue = moveQueue || Utils.getEnumValues(Moves).slice(1); - } - - start() { - const moveQueue = this.moveQueue.slice(0); - this.playMoveAnim(moveQueue, true); - } - - playMoveAnim(moveQueue: Moves[], player: boolean) { - const moveId = player ? moveQueue[0] : moveQueue.shift(); - if (moveId === undefined) { - this.playMoveAnim(this.moveQueue.slice(0), true); - return; - } else if (player) { - console.log(Moves[moveId]); - } - - initMoveAnim(this.scene, moveId).then(() => { - loadMoveAnimAssets(this.scene, [moveId], true) - .then(() => { - new MoveAnim(moveId, player ? this.scene.getPlayerPokemon()! : this.scene.getEnemyPokemon()!, (player !== (allMoves[moveId] instanceof SelfStatusMove) ? this.scene.getEnemyPokemon()! : this.scene.getPlayerPokemon()!).getBattlerIndex()).play(this.scene, () => { // TODO: are the bangs correct here? - if (player) { - this.playMoveAnim(moveQueue, false); - } else { - this.playMoveAnim(moveQueue, true); - } - }); - }); - }); - } -} - -export class ShowAbilityPhase extends PokemonPhase { - private passive: boolean; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, passive: boolean = false) { - super(scene, battlerIndex); - - this.passive = passive; - } - - start() { - super.start(); - - const pokemon = this.getPokemon(); - - if (pokemon) { - this.scene.abilityBar.showAbility(pokemon, this.passive); - - if (pokemon?.battleData) { - pokemon.battleData.abilityRevealed = true; - } - } - - this.end(); - } -} - -export type StatChangeCallback = (target: Pokemon | null, changed: BattleStat[], relativeChanges: number[]) => void; - -export class StatChangePhase extends PokemonPhase { - private stats: BattleStat[]; - private selfTarget: boolean; - private levels: integer; - private showMessage: boolean; - private ignoreAbilities: boolean; - private canBeCopied: boolean; - private onChange: StatChangeCallback | null; - - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], levels: integer, showMessage: boolean = true, ignoreAbilities: boolean = false, canBeCopied: boolean = true, onChange: StatChangeCallback | null = null) { - super(scene, battlerIndex); - - this.selfTarget = selfTarget; - this.stats = stats; - this.levels = levels; - this.showMessage = showMessage; - this.ignoreAbilities = ignoreAbilities; - this.canBeCopied = canBeCopied; - this.onChange = onChange; - } - - start() { - const pokemon = this.getPokemon(); - - let random = false; - - if (this.stats.length === 1 && this.stats[0] === BattleStat.RAND) { - this.stats[0] = this.getRandomStat(); - random = true; - } - - this.aggregateStatChanges(random); - - if (!pokemon.isActive(true)) { - return this.end(); - } - - const filteredStats = this.stats.map(s => s !== BattleStat.RAND ? s : this.getRandomStat()).filter(stat => { - const cancelled = new Utils.BooleanHolder(false); - - if (!this.selfTarget && this.levels < 0) { - this.scene.arena.applyTagsForSide(MistTag, pokemon.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, cancelled); - } - - if (!cancelled.value && !this.selfTarget && this.levels < 0) { - applyPreStatChangeAbAttrs(ProtectStatAbAttr, this.getPokemon(), stat, cancelled); - } - - return !cancelled.value; - }); - - const levels = new Utils.IntegerHolder(this.levels); - - if (!this.ignoreAbilities) { - applyAbAttrs(StatChangeMultiplierAbAttr, pokemon, null, levels); - } - - const battleStats = this.getPokemon().summonData.battleStats; - const relLevels = filteredStats.map(stat => (levels.value >= 1 ? Math.min(battleStats![stat] + levels.value, 6) : Math.max(battleStats![stat] + levels.value, -6)) - battleStats![stat]); - - this.onChange && this.onChange(this.getPokemon(), filteredStats, relLevels); - - const end = () => { - if (this.showMessage) { - const messages = this.getStatChangeMessages(filteredStats, levels.value, relLevels); - for (const message of messages) { - this.scene.queueMessage(message); - } - } - - for (const stat of filteredStats) { - pokemon.summonData.battleStats[stat] = Math.max(Math.min(pokemon.summonData.battleStats[stat] + levels.value, 6), -6); - } - - if (levels.value > 0 && this.canBeCopied) { - for (const opponent of pokemon.getOpponents()) { - applyAbAttrs(StatChangeCopyAbAttr, opponent, null, this.stats, levels.value); - } - } - - applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget); - - // Look for any other stat change phases; if this is the last one, do White Herb check - const existingPhase = this.scene.findPhase(p => p instanceof StatChangePhase && p.battlerIndex === this.battlerIndex); - if (!(existingPhase instanceof StatChangePhase)) { - // Apply White Herb if needed - const whiteHerb = this.scene.applyModifier(PokemonResetNegativeStatStageModifier, this.player, pokemon) as PokemonResetNegativeStatStageModifier; - // If the White Herb was applied, consume it - if (whiteHerb) { - --whiteHerb.stackCount; - if (whiteHerb.stackCount <= 0) { - this.scene.removeModifier(whiteHerb); - } - this.scene.updateModifiers(this.player); - } - } - - pokemon.updateInfo(); - - handleTutorial(this.scene, Tutorial.Stat_Change).then(() => super.end()); - }; - - if (relLevels.filter(l => l).length && this.scene.moveAnimations) { - pokemon.enableMask(); - const pokemonMaskSprite = pokemon.maskSprite; - - const tileX = (this.player ? 106 : 236) * pokemon.getSpriteScale() * this.scene.field.scale; - const tileY = ((this.player ? 148 : 84) + (levels.value >= 1 ? 160 : 0)) * pokemon.getSpriteScale() * this.scene.field.scale; - const tileWidth = 156 * this.scene.field.scale * pokemon.getSpriteScale(); - const tileHeight = 316 * this.scene.field.scale * pokemon.getSpriteScale(); - - // On increase, show the red sprite located at ATK - // On decrease, show the blue sprite located at SPD - const spriteColor = levels.value >= 1 ? BattleStat[BattleStat.ATK].toLowerCase() : BattleStat[BattleStat.SPD].toLowerCase(); - const statSprite = this.scene.add.tileSprite(tileX, tileY, tileWidth, tileHeight, "battle_stats", spriteColor); - statSprite.setPipeline(this.scene.fieldSpritePipeline); - statSprite.setAlpha(0); - statSprite.setScale(6); - statSprite.setOrigin(0.5, 1); - - this.scene.playSound(`stat_${levels.value >= 1 ? "up" : "down"}`); - - statSprite.setMask(new Phaser.Display.Masks.BitmapMask(this.scene, pokemonMaskSprite ?? undefined)); - - this.scene.tweens.add({ - targets: statSprite, - duration: 250, - alpha: 0.8375, - onComplete: () => { - this.scene.tweens.add({ - targets: statSprite, - delay: 1000, - duration: 250, - alpha: 0 - }); - } - }); - - this.scene.tweens.add({ - targets: statSprite, - duration: 1500, - y: `${levels.value >= 1 ? "-" : "+"}=${160 * 6}` - }); - - this.scene.time.delayedCall(1750, () => { - pokemon.disableMask(); - end(); - }); - } else { - end(); - } - } - - getRandomStat(): BattleStat { - const allStats = Utils.getEnumValues(BattleStat); - return this.getPokemon() ? allStats[this.getPokemon()!.randSeedInt(BattleStat.SPD + 1)] : BattleStat.ATK; // TODO: return default ATK on random? idk... - } - - aggregateStatChanges(random: boolean = false): void { - const isAccEva = [BattleStat.ACC, BattleStat.EVA].some(s => this.stats.includes(s)); - let existingPhase: StatChangePhase; - if (this.stats.length === 1) { - while ((existingPhase = (this.scene.findPhase(p => p instanceof StatChangePhase && p.battlerIndex === this.battlerIndex && p.stats.length === 1 - && (p.stats[0] === this.stats[0] || (random && p.stats[0] === BattleStat.RAND)) - && p.selfTarget === this.selfTarget && p.showMessage === this.showMessage && p.ignoreAbilities === this.ignoreAbilities) as StatChangePhase))) { - if (existingPhase.stats[0] === BattleStat.RAND) { - existingPhase.stats[0] = this.getRandomStat(); - if (existingPhase.stats[0] !== this.stats[0]) { - continue; - } - } - this.levels += existingPhase.levels; - - if (!this.scene.tryRemovePhase(p => p === existingPhase)) { - break; - } - } - } - while ((existingPhase = (this.scene.findPhase(p => p instanceof StatChangePhase && p.battlerIndex === this.battlerIndex && p.selfTarget === this.selfTarget - && ([BattleStat.ACC, BattleStat.EVA].some(s => p.stats.includes(s)) === isAccEva) - && p.levels === this.levels && p.showMessage === this.showMessage && p.ignoreAbilities === this.ignoreAbilities) as StatChangePhase))) { - this.stats.push(...existingPhase.stats); - if (!this.scene.tryRemovePhase(p => p === existingPhase)) { - break; - } - } - } - - getStatChangeMessages(stats: BattleStat[], levels: integer, relLevels: integer[]): string[] { - const messages: string[] = []; - - const relLevelStatIndexes = {}; - for (let rl = 0; rl < relLevels.length; rl++) { - const relLevel = relLevels[rl]; - if (!relLevelStatIndexes[relLevel]) { - relLevelStatIndexes[relLevel] = []; - } - relLevelStatIndexes[relLevel].push(rl); - } - - Object.keys(relLevelStatIndexes).forEach(rl => { - const relLevelStats = stats.filter((_, i) => relLevelStatIndexes[rl].includes(i)); - let statsFragment = ""; - - if (relLevelStats.length > 1) { - statsFragment = relLevelStats.length >= 5 - ? i18next.t("battle:stats") - : `${relLevelStats.slice(0, -1).map(s => getBattleStatName(s)).join(", ")}${relLevelStats.length > 2 ? "," : ""} ${i18next.t("battle:statsAnd")} ${getBattleStatName(relLevelStats[relLevelStats.length - 1])}`; - messages.push(getBattleStatLevelChangeDescription(getPokemonNameWithAffix(this.getPokemon()), statsFragment, Math.abs(parseInt(rl)), levels >= 1,relLevelStats.length)); - } else { - statsFragment = getBattleStatName(relLevelStats[0]); - messages.push(getBattleStatLevelChangeDescription(getPokemonNameWithAffix(this.getPokemon()), statsFragment, Math.abs(parseInt(rl)), levels >= 1,relLevelStats.length)); - } - }); - - return messages; - } -} - -export class WeatherEffectPhase extends CommonAnimPhase { - public weather: Weather | null; - - constructor(scene: BattleScene) { - super(scene, undefined, undefined, CommonAnim.SUNNY + ((scene?.arena?.weather?.weatherType || WeatherType.NONE) - 1)); - this.weather = scene?.arena?.weather; - } - - start() { - // Update weather state with any changes that occurred during the turn - this.weather = this.scene?.arena?.weather; - - if (!this.weather) { - this.end(); - return; - } - - this.setAnimation(CommonAnim.SUNNY + (this.weather.weatherType - 1)); - - if (this.weather.isDamaging()) { - - const cancelled = new Utils.BooleanHolder(false); - - this.executeForAll((pokemon: Pokemon) => applyPreWeatherEffectAbAttrs(SuppressWeatherEffectAbAttr, pokemon, this.weather, cancelled)); - - if (!cancelled.value) { - const inflictDamage = (pokemon: Pokemon) => { - const cancelled = new Utils.BooleanHolder(false); - - applyPreWeatherEffectAbAttrs(PreWeatherDamageAbAttr, pokemon, this.weather , cancelled); - applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); - - if (cancelled.value) { - return; - } - - const damage = Math.ceil(pokemon.getMaxHp() / 16); - - this.scene.queueMessage(getWeatherDamageMessage(this.weather?.weatherType!, pokemon)!); // TODO: are those bangs correct? - pokemon.damageAndUpdate(damage, HitResult.EFFECTIVE, false, false, true); - }; - - this.executeForAll((pokemon: Pokemon) => { - const immune = !pokemon || !!pokemon.getTypes(true, true).filter(t => this.weather?.isTypeDamageImmune(t)).length; - if (!immune) { - inflictDamage(pokemon); - } - }); - } - } - - this.scene.ui.showText(getWeatherLapseMessage(this.weather.weatherType)!, null, () => { // TODO: is this bang correct? - this.executeForAll((pokemon: Pokemon) => applyPostWeatherLapseAbAttrs(PostWeatherLapseAbAttr, pokemon, this.weather)); - - super.start(); - }); - } -} - -export class ObtainStatusEffectPhase extends PokemonPhase { - private statusEffect: StatusEffect | undefined; - private cureTurn: integer | null; - private sourceText: string | null; - private sourcePokemon: Pokemon | null; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, statusEffect?: StatusEffect, cureTurn?: integer | null, sourceText?: string, sourcePokemon?: Pokemon) { - super(scene, battlerIndex); - - this.statusEffect = statusEffect; - this.cureTurn = cureTurn!; // TODO: is this bang correct? - this.sourceText = sourceText!; // TODO: is this bang correct? - this.sourcePokemon = sourcePokemon!; // For tracking which Pokemon caused the status effect // TODO: is this bang correct? - } - - start() { - const pokemon = this.getPokemon(); - if (!pokemon?.status) { - if (pokemon?.trySetStatus(this.statusEffect, false, this.sourcePokemon)) { - if (this.cureTurn) { - pokemon.status!.cureTurn = this.cureTurn; // TODO: is this bang correct? - } - pokemon.updateInfo(true); - new CommonBattleAnim(CommonAnim.POISON + (this.statusEffect! - 1), pokemon).play(this.scene, () => { - this.scene.queueMessage(getStatusEffectObtainText(this.statusEffect, getPokemonNameWithAffix(pokemon), this.sourceText ?? undefined)); - if (pokemon.status?.isPostTurn()) { - this.scene.pushPhase(new PostTurnStatusEffectPhase(this.scene, this.battlerIndex)); - } - this.end(); - }); - return; - } - } else if (pokemon.status.effect === this.statusEffect) { - this.scene.queueMessage(getStatusEffectOverlapText(this.statusEffect, getPokemonNameWithAffix(pokemon))); - } - this.end(); - } -} - -export class PostTurnStatusEffectPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); - } - - start() { - const pokemon = this.getPokemon(); - if (pokemon?.isActive(true) && pokemon.status && pokemon.status.isPostTurn()) { - pokemon.status.incrementTurn(); - const cancelled = new Utils.BooleanHolder(false); - applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); - applyAbAttrs(BlockStatusDamageAbAttr, pokemon, cancelled); - - if (!cancelled.value) { - this.scene.queueMessage(getStatusEffectActivationText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); - const damage = new Utils.NumberHolder(0); - switch (pokemon.status.effect) { - case StatusEffect.POISON: - damage.value = Math.max(pokemon.getMaxHp() >> 3, 1); - break; - case StatusEffect.TOXIC: - damage.value = Math.max(Math.floor((pokemon.getMaxHp() / 16) * pokemon.status.turnCount), 1); - break; - case StatusEffect.BURN: - damage.value = Math.max(pokemon.getMaxHp() >> 4, 1); - applyAbAttrs(ReduceBurnDamageAbAttr, pokemon, null, damage); - break; - } - if (damage.value) { - // Set preventEndure flag to avoid pokemon surviving thanks to focus band, sturdy, endure ... - this.scene.damageNumberHandler.add(this.getPokemon(), pokemon.damage(damage.value, false, true)); - pokemon.updateInfo(); - } - new CommonBattleAnim(CommonAnim.POISON + (pokemon.status.effect - 1), pokemon).play(this.scene, () => this.end()); - } else { - this.end(); - } - } else { - this.end(); - } - } - - override end() { - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { - this.scene.initFinalBossPhaseTwo(this.getPokemon()); - } else { - super.end(); - } - } -} - -export class MessagePhase extends Phase { - private text: string; - private callbackDelay: integer | null; - private prompt: boolean | null; - private promptDelay: integer | null; - - constructor(scene: BattleScene, text: string, callbackDelay?: integer | null, prompt?: boolean | null, promptDelay?: integer | null) { - super(scene); - - this.text = text; - this.callbackDelay = callbackDelay!; // TODO: is this bang correct? - this.prompt = prompt!; // TODO: is this bang correct? - this.promptDelay = promptDelay!; // TODO: is this bang correct? - } - - start() { - super.start(); - - if (this.text.indexOf("$") > -1) { - const pageIndex = this.text.indexOf("$"); - this.scene.unshiftPhase(new MessagePhase(this.scene, this.text.slice(pageIndex + 1), this.callbackDelay, this.prompt, this.promptDelay)); - this.text = this.text.slice(0, pageIndex).trim(); - } - - this.scene.ui.showText(this.text, null, () => this.end(), this.callbackDelay || (this.prompt ? 0 : 1500), this.prompt, this.promptDelay); - } - - end() { - if (this.scene.abilityBar.shown) { - this.scene.abilityBar.hide(); - } - - super.end(); - } -} - -export class DamagePhase extends PokemonPhase { - private amount: integer; - private damageResult: DamageResult; - private critical: boolean; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, amount: integer, damageResult?: DamageResult, critical: boolean = false) { - super(scene, battlerIndex); - - this.amount = amount; - this.damageResult = damageResult || HitResult.EFFECTIVE; - this.critical = critical; - } - - start() { - super.start(); - - if (this.damageResult === HitResult.ONE_HIT_KO) { - if (this.scene.moveAnimations) { - this.scene.toggleInvert(true); - } - this.scene.time.delayedCall(Utils.fixedInt(1000), () => { - this.scene.toggleInvert(false); - this.applyDamage(); - }); - return; - } - - this.applyDamage(); - } - - updateAmount(amount: integer): void { - this.amount = amount; - } - - applyDamage() { - switch (this.damageResult) { - case HitResult.EFFECTIVE: - this.scene.playSound("hit"); - break; - case HitResult.SUPER_EFFECTIVE: - case HitResult.ONE_HIT_KO: - this.scene.playSound("hit_strong"); - break; - case HitResult.NOT_VERY_EFFECTIVE: - this.scene.playSound("hit_weak"); - break; - } - - if (this.amount) { - this.scene.damageNumberHandler.add(this.getPokemon(), this.amount, this.damageResult, this.critical); - } - - if (this.damageResult !== HitResult.OTHER) { - const flashTimer = this.scene.time.addEvent({ - delay: 100, - repeat: 5, - startAt: 200, - callback: () => { - this.getPokemon().getSprite().setVisible(flashTimer.repeatCount % 2 === 0); - if (!flashTimer.repeatCount) { - this.getPokemon().updateInfo().then(() => this.end()); - } - } - }); - } else { - this.getPokemon().updateInfo().then(() => this.end()); - } - } - - override end() { - if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { - this.scene.initFinalBossPhaseTwo(this.getPokemon()); - } else { - super.end(); - } - } -} - -export class FaintPhase extends PokemonPhase { - private preventEndure: boolean; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, preventEndure?: boolean) { - super(scene, battlerIndex); - - this.preventEndure = preventEndure!; // TODO: is this bang correct? - } - - start() { - super.start(); - - if (!this.preventEndure) { - const instantReviveModifier = this.scene.applyModifier(PokemonInstantReviveModifier, this.player, this.getPokemon()) as PokemonInstantReviveModifier; - - if (instantReviveModifier) { - if (!--instantReviveModifier.stackCount) { - this.scene.removeModifier(instantReviveModifier); - } - this.scene.updateModifiers(this.player); - return this.end(); - } - } - - if (!this.tryOverrideForBattleSpec()) { - this.doFaint(); - } - } - - doFaint(): void { - const pokemon = this.getPokemon(); - - - // Track total times pokemon have been KO'd for supreme overlord/last respects - if (pokemon.isPlayer()) { - this.scene.currentBattle.playerFaints += 1; - } else { - this.scene.currentBattle.enemyFaints += 1; - } - - this.scene.queueMessage(i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, true); - - if (pokemon.turnData?.attacksReceived?.length) { - const lastAttack = pokemon.turnData.attacksReceived[0]; - applyPostFaintAbAttrs(PostFaintAbAttr, pokemon, this.scene.getPokemonById(lastAttack.sourceId)!, new PokemonMove(lastAttack.move).getMove(), lastAttack.result); // TODO: is this bang correct? - } - - const alivePlayField = this.scene.getField(true); - alivePlayField.forEach(p => applyPostKnockOutAbAttrs(PostKnockOutAbAttr, p, pokemon)); - if (pokemon.turnData?.attacksReceived?.length) { - const defeatSource = this.scene.getPokemonById(pokemon.turnData.attacksReceived[0].sourceId); - if (defeatSource?.isOnField()) { - applyPostVictoryAbAttrs(PostVictoryAbAttr, defeatSource); - const pvmove = allMoves[pokemon.turnData.attacksReceived[0].move]; - const pvattrs = pvmove.getAttrs(PostVictoryStatChangeAttr); - if (pvattrs.length) { - for (const pvattr of pvattrs) { - pvattr.applyPostVictory(defeatSource, defeatSource, pvmove); - } - } - } - } - - if (this.player) { - const nonFaintedLegalPartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()); - const nonFaintedPartyMemberCount = nonFaintedLegalPartyMembers.length; - if (!nonFaintedPartyMemberCount) { - this.scene.unshiftPhase(new GameOverPhase(this.scene)); - } else if (nonFaintedPartyMemberCount === 1 && this.scene.currentBattle.double) { - this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); - } else if (nonFaintedPartyMemberCount >= this.scene.currentBattle.getBattlerCount()) { - this.scene.pushPhase(new SwitchPhase(this.scene, this.fieldIndex, "faint", false)); - } - } else { - this.scene.unshiftPhase(new VictoryPhase(this.scene, this.battlerIndex)); - if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - const hasReservePartyMember = !!this.scene.getEnemyParty().filter(p => p.isActive() && !p.isOnField() && p.trainerSlot === (pokemon as EnemyPokemon).trainerSlot).length; - if (hasReservePartyMember) { - this.scene.pushPhase(new SwitchSummonPhase(this.scene, this.fieldIndex, -1, false, false, false)); - } - } - } - - // in double battles redirect potential moves off fainted pokemon - if (this.scene.currentBattle.double) { - const allyPokemon = pokemon.getAlly(); - this.scene.redirectPokemonMoves(pokemon, allyPokemon); - } - - pokemon.lapseTags(BattlerTagLapseType.FAINT); - this.scene.getField(true).filter(p => p !== pokemon).forEach(p => p.removeTagsBySourceId(pokemon.id)); - - pokemon.faintCry(() => { - if (pokemon instanceof PlayerPokemon) { - pokemon.addFriendship(-10); - } - pokemon.hideInfo(); - this.scene.playSound("faint"); - this.scene.tweens.add({ - targets: pokemon, - duration: 500, - y: pokemon.y + 150, - ease: "Sine.easeIn", - onComplete: () => { - pokemon.setVisible(false); - pokemon.y -= 150; - pokemon.trySetStatus(StatusEffect.FAINT); - if (pokemon.isPlayer()) { - this.scene.currentBattle.removeFaintedParticipant(pokemon as PlayerPokemon); - } else { - this.scene.addFaintedEnemyScore(pokemon as EnemyPokemon); - this.scene.currentBattle.addPostBattleLoot(pokemon as EnemyPokemon); - } - this.scene.field.remove(pokemon); - this.end(); - } - }); - }); - } - - tryOverrideForBattleSpec(): boolean { - switch (this.scene.currentBattle.battleSpec) { - case BattleSpec.FINAL_BOSS: - if (!this.player) { - const enemy = this.getPokemon(); - if (enemy.formIndex) { - this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].secondStageWin, enemy.species.name, null, () => this.doFaint()); - } else { - // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase - enemy.hp++; - this.scene.unshiftPhase(new DamagePhase(this.scene, enemy.getBattlerIndex(), 0, HitResult.OTHER)); - this.end(); - } - return true; - } - } - - return false; - } -} - -export class VictoryPhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); - } - - start() { - super.start(); - - this.scene.gameData.gameStats.pokemonDefeated++; - - const participantIds = this.scene.currentBattle.playerParticipantIds; - const party = this.scene.getParty(); - 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 nonFaintedPartyMembers = party.filter(p => p.hp); - const expPartyMembers = nonFaintedPartyMembers.filter(p => p.level < this.scene.getMaxExpLevel()); - const partyMemberExp: number[] = []; - - if (participantIds.size) { - let expValue = this.getPokemon().getExpValue(); - if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - expValue = Math.floor(expValue * 1.5); - } - for (const partyMember of nonFaintedPartyMembers) { - const pId = partyMember.id; - const participated = participantIds.has(pId); - if (participated) { - partyMember.addFriendship(2); - } - if (!expPartyMembers.includes(partyMember)) { - continue; - } - if (!participated && !expShareModifier) { - partyMemberExp.push(0); - continue; - } - let expMultiplier = 0; - if (participated) { - expMultiplier += (1 / participantIds.size); - if (participantIds.size > 1 && multipleParticipantExpBonusModifier) { - expMultiplier += multipleParticipantExpBonusModifier.getStackCount() * 0.2; - } - } else if (expShareModifier) { - expMultiplier += (expShareModifier.getStackCount() * 0.2) / participantIds.size; - } - if (partyMember.pokerus) { - expMultiplier *= 1.5; - } - if (Overrides.XP_MULTIPLIER_OVERRIDE !== null) { - expMultiplier = Overrides.XP_MULTIPLIER_OVERRIDE; - } - const pokemonExp = new Utils.NumberHolder(expValue * expMultiplier); - this.scene.applyModifiers(PokemonExpBoosterModifier, true, partyMember, pokemonExp); - partyMemberExp.push(Math.floor(pokemonExp.value)); - } - - if (expBalanceModifier) { - let totalLevel = 0; - let totalExp = 0; - expPartyMembers.forEach((expPartyMember, epm) => { - totalExp += partyMemberExp[epm]; - totalLevel += expPartyMember.level; - }); - - const medianLevel = Math.floor(totalLevel / expPartyMembers.length); - - const recipientExpPartyMemberIndexes: number[] = []; - expPartyMembers.forEach((expPartyMember, epm) => { - if (expPartyMember.level <= medianLevel) { - recipientExpPartyMemberIndexes.push(epm); - } - }); - - const splitExp = Math.floor(totalExp / recipientExpPartyMemberIndexes.length); - - expPartyMembers.forEach((_partyMember, pm) => { - partyMemberExp[pm] = Phaser.Math.Linear(partyMemberExp[pm], recipientExpPartyMemberIndexes.indexOf(pm) > -1 ? splitExp : 0, 0.2 * expBalanceModifier.getStackCount()); - }); - } - - for (let pm = 0; pm < expPartyMembers.length; pm++) { - const exp = partyMemberExp[pm]; - - if (exp) { - const partyMemberIndex = party.indexOf(expPartyMembers[pm]); - this.scene.unshiftPhase(expPartyMembers[pm].isOnField() ? new ExpPhase(this.scene, partyMemberIndex, exp) : new ShowPartyExpBarPhase(this.scene, partyMemberIndex, exp)); - } - } - } - - if (!this.scene.getEnemyParty().find(p => this.scene.currentBattle.battleType ? !p?.isFainted(true) : p.isOnField())) { - this.scene.pushPhase(new BattleEndPhase(this.scene)); - if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - this.scene.pushPhase(new TrainerVictoryPhase(this.scene)); - } - if (this.scene.gameMode.isEndless || !this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) { - this.scene.pushPhase(new EggLapsePhase(this.scene)); - if (this.scene.currentBattle.waveIndex % 10) { - this.scene.pushPhase(new SelectModifierPhase(this.scene)); - } else if (this.scene.gameMode.isDaily) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.EXP_CHARM)); - if (this.scene.currentBattle.waveIndex > 10 && !this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.GOLDEN_POKEBALL)); - } - } else { - const superExpWave = !this.scene.gameMode.isEndless ? (this.scene.offsetGym ? 0 : 20) : 10; - if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex === 10) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.EXP_SHARE)); - } - if (this.scene.currentBattle.waveIndex <= 750 && (this.scene.currentBattle.waveIndex <= 500 || (this.scene.currentBattle.waveIndex % 30) === superExpWave)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, (this.scene.currentBattle.waveIndex % 30) !== superExpWave || this.scene.currentBattle.waveIndex > 250 ? modifierTypes.EXP_CHARM : modifierTypes.SUPER_EXP_CHARM)); - } - if (this.scene.currentBattle.waveIndex <= 150 && !(this.scene.currentBattle.waveIndex % 50)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.GOLDEN_POKEBALL)); - } - if (this.scene.gameMode.isEndless && !(this.scene.currentBattle.waveIndex % 50)) { - this.scene.pushPhase(new ModifierRewardPhase(this.scene, !(this.scene.currentBattle.waveIndex % 250) ? modifierTypes.VOUCHER_PREMIUM : modifierTypes.VOUCHER_PLUS)); - this.scene.pushPhase(new AddEnemyBuffModifierPhase(this.scene)); - } - } - this.scene.pushPhase(new NewBattlePhase(this.scene)); - } else { - this.scene.currentBattle.battleType = BattleType.CLEAR; - this.scene.score += this.scene.gameMode.getClearScoreBonus(); - this.scene.updateScoreText(); - this.scene.pushPhase(new GameOverPhase(this.scene, true)); - } - } - - this.end(); - } -} - -export class TrainerVictoryPhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - this.scene.disableMenu = true; - - this.scene.playBgm(this.scene.currentBattle.trainer?.config.victoryBgm); - - this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer?.config.moneyMultiplier!)); // TODO: is this bang correct? - - const modifierRewardFuncs = this.scene.currentBattle.trainer?.config.modifierRewardFuncs!; // TODO: is this bang correct? - for (const modifierRewardFunc of modifierRewardFuncs) { - this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, modifierRewardFunc)); - } - - const trainerType = this.scene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? - if (vouchers.hasOwnProperty(TrainerType[trainerType])) { - if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer?.config.isBoss) { - 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("battle:trainerDefeated", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }), null, () => { - const victoryMessages = this.scene.currentBattle.trainer?.getVictoryMessages()!; // TODO: is this bang correct? - let message: string; - this.scene.executeWithSeedOffset(() => message = Utils.randSeedItem(victoryMessages), this.scene.currentBattle.waveIndex); - message = message!; // tell TS compiler it's defined now - - const showMessage = () => { - const originalFunc = showMessageOrEnd; - showMessageOrEnd = () => this.scene.ui.showDialogue(message, this.scene.currentBattle.trainer?.getName(), null, originalFunc); - - showMessageOrEnd(); - }; - let showMessageOrEnd = () => this.end(); - if (victoryMessages?.length) { - if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { - const originalFunc = showMessageOrEnd; - showMessageOrEnd = () => this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => originalFunc())); - this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(this.scene.currentBattle.trainer?.getKey()!, getCharVariantFromDialogue(victoryMessages[0])).then(() => showMessage())); // TODO: is this bang correct? - } else { - showMessage(); - } - } else { - showMessageOrEnd(); - } - }, null, true); - - this.showEnemyTrainer(); - } -} - -export class MoneyRewardPhase extends BattlePhase { - private moneyMultiplier: number; - - constructor(scene: BattleScene, moneyMultiplier: number) { - super(scene); - - this.moneyMultiplier = moneyMultiplier; - } - - start() { - const moneyAmount = new Utils.IntegerHolder(this.scene.getWaveMoneyAmount(this.moneyMultiplier)); - - this.scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - - if (this.scene.arena.getTag(ArenaTagType.HAPPY_HOUR)) { - moneyAmount.value *= 2; - } - - this.scene.addMoney(moneyAmount.value); - - const userLocale = navigator.language || "en-US"; - const formattedMoneyAmount = moneyAmount.value.toLocaleString(userLocale); - const message = i18next.t("battle:moneyWon", { moneyAmount: formattedMoneyAmount }); - - this.scene.ui.showText(message, null, () => this.end(), null, true); - } -} - -export class ModifierRewardPhase extends BattlePhase { - protected modifierType: ModifierType; - - constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { - super(scene); - - this.modifierType = getModifierType(modifierTypeFunc); - } - - start() { - super.start(); - - this.doReward().then(() => this.end()); - } - - doReward(): Promise { - return new Promise(resolve => { - const newModifier = this.modifierType.newModifier(); - this.scene.addModifier(newModifier).then(() => { - this.scene.playSound("item_fanfare"); - this.scene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => resolve(), null, true); - }); - }); - } -} - -export class GameOverModifierRewardPhase extends ModifierRewardPhase { - constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { - super(scene, modifierTypeFunc); - } - - doReward(): Promise { - return new Promise(resolve => { - const newModifier = this.modifierType.newModifier(); - this.scene.addModifier(newModifier).then(() => { - this.scene.playSound("level_up_fanfare"); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.fadeIn(250).then(() => { - this.scene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); - resolve(); - }, null, true, 1500); - }); - }); - }); - } -} - -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.playSound("level_up_fanfare"); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:beatModeFirstTime", { - speciesName: this.species.name, - gameMode: this.scene.gameMode.getName(), - newModifier: newModifier?.type.name - }), null, () => { - resolve(); - }, null, true, 1500); - }); - }); - } -} - -export class GameOverPhase extends BattlePhase { - private victory: boolean; - private firstRibbons: PokemonSpecies[] = []; - - constructor(scene: BattleScene, victory?: boolean) { - super(scene); - - this.victory = !!victory; - } - - start() { - super.start(); - - // Failsafe if players somehow skip floor 200 in classic mode - if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex > 200) { - this.victory = true; - } - - if (this.victory && this.scene.gameMode.isEndless) { - this.scene.ui.showDialogue(i18next.t("PGMmiscDialogue:ending_endless"), i18next.t("PGMmiscDialogue:ending_name"), 0, () => this.handleGameOver()); - } else if (this.victory || !this.scene.enableRetries) { - this.handleGameOver(); - } else { - this.scene.ui.showText(i18next.t("battle:retryBattle"), null, () => { - this.scene.ui.setMode(Mode.CONFIRM, () => { - this.scene.ui.fadeOut(1250).then(() => { - this.scene.reset(); - this.scene.clearPhaseQueue(); - this.scene.gameData.loadSession(this.scene, this.scene.sessionSlotId).then(() => { - this.scene.pushPhase(new EncounterPhase(this.scene, true)); - - const availablePartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()).length; - - this.scene.pushPhase(new SummonPhase(this.scene, 0)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.pushPhase(new SummonPhase(this.scene, 1)); - } - if (this.scene.currentBattle.waveIndex > 1 && this.scene.currentBattle.battleType !== BattleType.TRAINER) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); - if (this.scene.currentBattle.double && availablePartyMembers > 1) { - this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); - } - } - - this.scene.ui.fadeIn(1250); - this.end(); - }); - }); - }, () => this.handleGameOver(), false, 0, 0, 1000); - }); - } - } - - handleGameOver(): void { - const doGameOver = (newClear: boolean) => { - this.scene.disableMenu = true; - this.scene.time.delayedCall(1000, () => { - let firstClear = false; - if (this.victory && newClear) { - if (this.scene.gameMode.isClassic) { - firstClear = this.scene.validateAchv(achvs.CLASSIC_VICTORY); - this.scene.validateAchv(achvs.UNEVOLVED_CLASSIC_VICTORY); - this.scene.gameData.gameStats.sessionsWon++; - for (const 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 && newClear) { - this.scene.gameData.gameStats.dailyRunSessionsWon++; - } - } - const fadeDuration = this.victory ? 10000 : 5000; - this.scene.fadeOutBgm(fadeDuration, true); - const activeBattlers = this.scene.getField().filter(p => p?.isActive(true)); - activeBattlers.map(p => p.hideInfo()); - this.scene.ui.fadeOut(fadeDuration).then(() => { - activeBattlers.map(a => a.setVisible(false)); - this.scene.setFieldScale(1, true); - this.scene.clearPhaseQueue(); - this.scene.ui.clearText(); - - if (this.victory && this.scene.gameMode.isChallenge) { - this.scene.gameMode.challenges.forEach(c => this.scene.validateAchvs(ChallengeAchv, c)); - } - - const clear = (endCardPhase?: EndCardPhase) => { - if (newClear) { - this.handleUnlocks(); - } - if (this.victory && newClear) { - for (const species of this.firstRibbons) { - this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species)); - } - if (!firstClear) { - this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); - } - } - this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); - this.end(); - }; - - if (this.victory && this.scene.gameMode.isClassic) { - const message = miscDialogue.ending[this.scene.gameData.gender === PlayerGender.FEMALE ? 0 : 1]; - - if (!this.scene.ui.shouldSkipDialogue(message)) { - this.scene.ui.fadeIn(500).then(() => { - this.scene.charSprite.showCharacter(`rival_${this.scene.gameData.gender === PlayerGender.FEMALE ? "m" : "f"}`, getCharVariantFromDialogue(miscDialogue.ending[this.scene.gameData.gender === PlayerGender.FEMALE ? 0 : 1])).then(() => { - this.scene.ui.showDialogue(message, this.scene.gameData.gender === PlayerGender.FEMALE ? trainerConfigs[TrainerType.RIVAL].name : trainerConfigs[TrainerType.RIVAL].nameFemale, null, () => { - this.scene.ui.fadeOut(500).then(() => { - this.scene.charSprite.hide().then(() => { - const endCardPhase = new EndCardPhase(this.scene); - this.scene.unshiftPhase(endCardPhase); - clear(endCardPhase); - }); - }); - }); - }); - }); - } else { - const endCardPhase = new EndCardPhase(this.scene); - this.scene.unshiftPhase(endCardPhase); - clear(endCardPhase); - } - } else { - clear(); - } - }); - }); - }; - - /* Added a local check to see if the game is running offline on victory - If Online, execute apiFetch as intended - If Offline, execute offlineNewClear(), a localStorage implementation of newClear daily run checks */ - if (this.victory) { - if (!Utils.isLocal) { - Utils.apiFetch(`savedata/session/newclear?slot=${this.scene.sessionSlotId}&clientSessionId=${clientSessionId}`, true) - .then(response => response.json()) - .then(newClear => doGameOver(newClear)); - } else { - this.scene.gameData.offlineNewClear(this.scene).then(result => { - doGameOver(result); - }); - } - } else { - doGameOver(false); - } - } - - handleUnlocks(): void { - if (this.victory && this.scene.gameMode.isClassic) { - if (!this.scene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.ENDLESS_MODE)); - } - if (this.scene.getParty().filter(p => p.fusionSpecies).length && !this.scene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE]) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.SPLICED_ENDLESS_MODE)); - } - if (!this.scene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE]) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.MINI_BLACK_HOLE)); - } - if (!this.scene.gameData.unlocks[Unlockables.EVIOLITE] && this.scene.getParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)) { - this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.EVIOLITE)); - } - } - } - - 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 EndCardPhase extends Phase { - public endCard: Phaser.GameObjects.Image; - public text: Phaser.GameObjects.Text; - - constructor(scene: BattleScene) { - super(scene); - } - - start(): void { - super.start(); - - this.scene.ui.getMessageHandler().bg.setVisible(false); - this.scene.ui.getMessageHandler().nameBoxContainer.setVisible(false); - - this.endCard = this.scene.add.image(0, 0, `end_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}`); - this.endCard.setOrigin(0); - this.endCard.setScale(0.5); - this.scene.field.add(this.endCard); - - this.text = addTextObject(this.scene, this.scene.game.canvas.width / 12, (this.scene.game.canvas.height / 6) - 16, i18next.t("battle:congratulations"), TextStyle.SUMMARY, { fontSize: "128px" }); - this.text.setOrigin(0.5); - this.scene.field.add(this.text); - - this.scene.ui.clearText(); - - this.scene.ui.fadeIn(1000).then(() => { - - this.scene.ui.showText("", null, () => { - this.scene.ui.getMessageHandler().bg.setVisible(true); - this.end(); - }, null, true); - }); - } -} - -export class UnlockPhase extends Phase { - private unlockable: Unlockables; - - constructor(scene: BattleScene, unlockable: Unlockables) { - super(scene); - - this.unlockable = unlockable; - } - - start(): void { - this.scene.time.delayedCall(2000, () => { - this.scene.gameData.unlocks[this.unlockable] = true; - this.scene.playSound("level_up_fanfare"); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t("battle:unlockedSomething", { unlockedThing: getUnlockableName(this.unlockable) }), null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); - this.end(); - }, null, true, 1500); - }); - } -} - -export class PostGameOverPhase extends Phase { - private endCardPhase: EndCardPhase | null; - - constructor(scene: BattleScene, endCardPhase?: EndCardPhase) { - super(scene); - - this.endCardPhase = endCardPhase!; // TODO: is this bang correct? - } - - start() { - super.start(); - - const saveAndReset = () => { - this.scene.gameData.saveAll(this.scene, true, true, true).then(success => { - if (!success) { - return this.scene.reset(true); - } - this.scene.gameData.tryClearSession(this.scene, this.scene.sessionSlotId).then((success: boolean | [boolean, boolean]) => { - if (!success[0]) { - return this.scene.reset(true); - } - this.scene.reset(); - this.scene.unshiftPhase(new TitlePhase(this.scene)); - this.end(); - }); - }); - }; - - if (this.endCardPhase) { - this.scene.ui.fadeOut(500).then(() => { - this.scene.ui.getMessageHandler().bg.setVisible(true); - - this.endCardPhase?.endCard.destroy(); - this.endCardPhase?.text.destroy(); - saveAndReset(); - }); - } else { - saveAndReset(); - } - } -} - -/** - * Opens the party selector UI and transitions into a {@linkcode SwitchSummonPhase} - * for the player (if a switch would be valid for the current battle state). - */ -export class SwitchPhase extends BattlePhase { - protected fieldIndex: integer; - private switchReason: "faint" | "moveEffect" | "switchMode"; - private doReturn: boolean; - - /** - * Creates a new SwitchPhase - * @param scene {@linkcode BattleScene} Current battle scene - * @param fieldIndex Field index to switch out - * @param switchReason Indicates why this switch is occurring. The valid options are - * `'faint'` (party member fainted), `'moveEffect'` (uturn, baton pass, dragon - * tail, etc), and `'switchMode'` (start-of-battle optional switch). This - * helps the phase determine both if the switch should be cancellable by the - * user, as well as determine if the party UI should be shown at all. - * @param doReturn Indicates if this switch should call back the pokemon at - * the {@linkcode fieldIndex} (true), or if the mon has already been recalled - * (false). - */ - constructor(scene: BattleScene, fieldIndex: integer, switchReason: "faint" | "moveEffect" | "switchMode", doReturn: boolean) { - super(scene); - - this.fieldIndex = fieldIndex; - this.switchReason = switchReason; - this.doReturn = doReturn; - } - - start() { - super.start(); - - const isForcedSwitch = this.switchReason !== "switchMode"; - - // Skip forced switch if impossible (no remaining party members that aren't in battle) - if (isForcedSwitch && !this.scene.getParty().filter(p => p.isAllowedInBattle() && !p.isActive(true)).length) { - return super.end(); - } - - // Skip if the fainted party member has been revived already. see also; battle.test.ts - if (this.switchReason === "faint" && !this.scene.getParty()[this.fieldIndex].isFainted()) { - return super.end(); - } - - // Check if there is any space still in field - const numActiveBattlers = this.scene.getPlayerField().filter(p => p.isAllowedInBattle() && p.isActive(true)).length; - const willReturnModifer = (this.doReturn ? 1 : 0); // need to subtract this if doReturn is true, because the pokemon in the given index hasn't left the field yet. (used for volt switch + pursuit, etc) - if (isForcedSwitch && numActiveBattlers - willReturnModifer >= this.scene.currentBattle.getBattlerCount()) { - return super.end(); - } - - // Override field index to 0 in case of double battle where 2/3 remaining legal party members fainted at once - const fieldIndex = this.scene.currentBattle.getBattlerCount() === 1 || this.scene.getParty().filter(p => p.isAllowedInBattle()).length > 1 ? this.fieldIndex : 0; - - this.scene.ui.setMode(Mode.PARTY, isForcedSwitch ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, fieldIndex, (slotIndex: integer, option: PartyOption) => { - if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) { - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, fieldIndex, slotIndex, this.doReturn, option === PartyOption.PASS_BATON)); - } - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); - }, PartyUiHandler.FilterNonFainted); - } -} - -export class ExpPhase extends PlayerPartyMemberPokemonPhase { - private expValue: number; - - constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { - super(scene, partyMemberIndex); - - this.expValue = expValue; - } - - start() { - super.start(); - - const pokemon = this.getPokemon(); - const exp = new Utils.NumberHolder(this.expValue); - this.scene.applyModifiers(ExpBoosterModifier, true, exp); - exp.value = Math.floor(exp.value); - this.scene.ui.showText(i18next.t("battle:expGain", { pokemonName: getPokemonNameWithAffix(pokemon), exp: exp.value }), null, () => { - const lastLevel = pokemon.level; - pokemon.addExp(exp.value); - const newLevel = pokemon.level; - if (newLevel > lastLevel) { - this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, lastLevel, newLevel)); - } - pokemon.updateInfo().then(() => this.end()); - }, null, true); - } -} - -export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { - private expValue: number; - - constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { - super(scene, partyMemberIndex); - - this.expValue = expValue; - } - - start() { - super.start(); - - const pokemon = this.getPokemon(); - const exp = new Utils.NumberHolder(this.expValue); - this.scene.applyModifiers(ExpBoosterModifier, true, exp); - exp.value = Math.floor(exp.value); - - const lastLevel = pokemon.level; - pokemon.addExp(exp.value); - const newLevel = pokemon.level; - if (newLevel > lastLevel) { - this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, lastLevel, newLevel)); - } - this.scene.unshiftPhase(new HidePartyExpBarPhase(this.scene)); - pokemon.updateInfo(); - - if (this.scene.expParty === ExpNotification.SKIP) { - this.end(); - } else if (this.scene.expParty === ExpNotification.ONLY_LEVEL_UP) { - if (newLevel > lastLevel) { // this means if we level up - // instead of displaying the exp gain in the small frame, we display the new level - // we use the same method for mode 0 & 1, by giving a parameter saying to display the exp or the level - this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, this.scene.expParty === ExpNotification.ONLY_LEVEL_UP, newLevel).then(() => { - setTimeout(() => this.end(), 800 / Math.pow(2, this.scene.expGainsSpeed)); - }); - } else { - this.end(); - } - } else if (this.scene.expGainsSpeed < 3) { - this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, false, newLevel).then(() => { - setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); - }); - } else { - this.end(); - } - - } -} - -export class HidePartyExpBarPhase extends BattlePhase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.partyExpBar.hide().then(() => this.end()); - } -} - -export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { - private lastLevel: integer; - private level: integer; - - constructor(scene: BattleScene, partyMemberIndex: integer, lastLevel: integer, level: integer) { - super(scene, partyMemberIndex); - - this.lastLevel = lastLevel; - this.level = level; - this.scene = scene; - } - - start() { - super.start(); - - if (this.level > this.scene.gameData.gameStats.highestLevel) { - this.scene.gameData.gameStats.highestLevel = this.level; - } - - this.scene.validateAchvs(LevelAchv, new Utils.IntegerHolder(this.level)); - - const pokemon = this.getPokemon(); - const prevStats = pokemon.stats.slice(0); - pokemon.calculateStats(); - pokemon.updateInfo(); - if (this.scene.expParty === ExpNotification.DEFAULT) { - this.scene.playSound("level_up_fanfare"); - this.scene.ui.showText(i18next.t("battle:levelUp", { pokemonName: getPokemonNameWithAffix(this.getPokemon()), level: this.level }), null, () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()), null, true); - } else if (this.scene.expParty === ExpNotification.SKIP) { - this.end(); - } else { - // we still want to display the stats if activated - this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()); - } - if (this.lastLevel < 100) { // this feels like an unnecessary optimization - const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); - for (const lm of levelMoves) { - this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, lm[1])); - } - } - if (!pokemon.pauseEvolutions) { - const evolution = pokemon.getEvolution(); - if (evolution) { - this.scene.unshiftPhase(new EvolutionPhase(this.scene, pokemon as PlayerPokemon, evolution, this.lastLevel)); - } - } - } -} - -export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { - private moveId: Moves; - - constructor(scene: BattleScene, partyMemberIndex: integer, moveId: Moves) { - super(scene, partyMemberIndex); - - this.moveId = moveId; - } - - start() { - super.start(); - - const pokemon = this.getPokemon(); - const move = allMoves[this.moveId]; - - const existingMoveIndex = pokemon.getMoveset().findIndex(m => m?.moveId === move.id); - - if (existingMoveIndex > -1) { - return this.end(); - } - - const emptyMoveIndex = pokemon.getMoveset().length < 4 - ? pokemon.getMoveset().length - : pokemon.getMoveset().findIndex(m => m === null); - - const messageMode = this.scene.ui.getHandler() instanceof EvolutionSceneHandler - ? Mode.EVOLUTION_SCENE - : Mode.MESSAGE; - - if (emptyMoveIndex > -1) { - pokemon.setMove(emptyMoveIndex, this.moveId); - initMoveAnim(this.scene, this.moveId).then(() => { - loadMoveAnimAssets(this.scene, [this.moveId], true) - .then(() => { - this.scene.ui.setMode(messageMode).then(() => { - this.scene.playSound("level_up_fanfare"); - this.scene.ui.showText(i18next.t("battle:learnMove", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), null, () => { - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true); - this.end(); - }, messageMode === Mode.EVOLUTION_SCENE ? 1000 : null, true); - }); - }); - }); - } else { - this.scene.ui.setMode(messageMode).then(() => { - this.scene.ui.showText(i18next.t("battle:learnMovePrompt", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), null, () => { - this.scene.ui.showText(i18next.t("battle:learnMoveLimitReached", { pokemonName: getPokemonNameWithAffix(pokemon) }), 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("battle:learnMoveStopTeaching", { moveName: move.name }), null, () => { - this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { - this.scene.ui.setMode(messageMode); - this.scene.ui.showText(i18next.t("battle:learnMoveNotLearned", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), null, () => this.end(), null, true); - }, () => { - this.scene.ui.setMode(messageMode); - this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, this.moveId)); - this.end(); - }); - }); - }); - }; - this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { - this.scene.ui.setMode(messageMode); - 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(); - return; - } - this.scene.ui.setMode(messageMode).then(() => { - this.scene.ui.showText(i18next.t("battle:countdownPoof"), null, () => { - this.scene.ui.showText(i18next.t("battle:learnMoveForgetSuccess", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: pokemon.moveset[moveIndex]!.getName() }), null, () => { // TODO: is the bang correct? - this.scene.ui.showText(i18next.t("battle:learnMoveAnd"), null, () => { - pokemon.setMove(moveIndex, Moves.NONE); - this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, this.moveId)); - this.end(); - }, null, true); - }, null, true); - }, null, true); - }); - }); - }, null, true); - }, noHandler); - }); - }, null, true); - }, null, true); - }); - } - } -} - -export class PokemonHealPhase extends CommonAnimPhase { - private hpHealed: integer; - private message: string | null; - private showFullHpMessage: boolean; - private skipAnim: boolean; - private revive: boolean; - private healStatus: boolean; - private preventFullHeal: boolean; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false) { - super(scene, battlerIndex, undefined, CommonAnim.HEALTH_UP); - - this.hpHealed = hpHealed; - this.message = message; - this.showFullHpMessage = showFullHpMessage; - this.skipAnim = skipAnim; - this.revive = revive; - this.healStatus = healStatus; - this.preventFullHeal = preventFullHeal; - } - - start() { - if (!this.skipAnim && (this.revive || this.getPokemon().hp) && !this.getPokemon().isFullHp()) { - super.start(); - } else { - this.end(); - } - } - - end() { - const pokemon = this.getPokemon(); - - if (!pokemon.isOnField() || (!this.revive && !pokemon.isActive())) { - super.end(); - return; - } - - const hasMessage = !!this.message; - const healOrDamage = (!pokemon.isFullHp() || this.hpHealed < 0); - let lastStatusEffect = StatusEffect.NONE; - - if (healOrDamage) { - const hpRestoreMultiplier = new Utils.IntegerHolder(1); - if (!this.revive) { - this.scene.applyModifiers(HealingBoosterModifier, this.player, hpRestoreMultiplier); - } - const healAmount = new Utils.NumberHolder(Math.floor(this.hpHealed * hpRestoreMultiplier.value)); - if (healAmount.value < 0) { - pokemon.damageAndUpdate(healAmount.value * -1, HitResult.HEAL as DamageResult); - healAmount.value = 0; - } - // Prevent healing to full if specified (in case of healing tokens so Sturdy doesn't cause a softlock) - if (this.preventFullHeal && pokemon.hp + healAmount.value >= pokemon.getMaxHp()) { - healAmount.value = (pokemon.getMaxHp() - pokemon.hp) - 1; - } - healAmount.value = pokemon.heal(healAmount.value); - if (healAmount.value) { - this.scene.damageNumberHandler.add(pokemon, healAmount.value, HitResult.HEAL); - } - if (pokemon.isPlayer()) { - this.scene.validateAchvs(HealAchv, healAmount); - if (healAmount.value > this.scene.gameData.gameStats.highestHeal) { - this.scene.gameData.gameStats.highestHeal = healAmount.value; - } - } - if (this.healStatus && !this.revive && pokemon.status) { - lastStatusEffect = pokemon.status.effect; - pokemon.resetStatus(); - } - pokemon.updateInfo().then(() => super.end()); - } else if (this.healStatus && !this.revive && pokemon.status) { - lastStatusEffect = pokemon.status.effect; - pokemon.resetStatus(); - pokemon.updateInfo().then(() => super.end()); - } else if (this.showFullHpMessage) { - this.message = i18next.t("battle:hpIsFull", { pokemonName: getPokemonNameWithAffix(pokemon) }); - } - - if (this.message) { - this.scene.queueMessage(this.message); - } - - if (this.healStatus && lastStatusEffect && !hasMessage) { - this.scene.queueMessage(getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon))); - } - - if (!healOrDamage && !lastStatusEffect) { - super.end(); - } - } -} - -export class AttemptCapturePhase extends PokemonPhase { - private pokeballType: PokeballType; - private pokeball: Phaser.GameObjects.Sprite; - private originalY: number; - - constructor(scene: BattleScene, targetIndex: integer, pokeballType: PokeballType) { - super(scene, BattlerIndex.ENEMY + targetIndex); - - this.pokeballType = pokeballType; - } - - start() { - super.start(); - - const pokemon = this.getPokemon() as EnemyPokemon; - - if (!pokemon?.hp) { - return this.end(); - } - - this.scene.pokeballCounts[this.pokeballType]--; - - this.originalY = pokemon.y; - - const _3m = 3 * pokemon.getMaxHp(); - const _2h = 2 * pokemon.hp; - const catchRate = pokemon.species.catchRate; - const pokeballMultiplier = getPokeballCatchMultiplier(this.pokeballType); - const statusMultiplier = pokemon.status ? getStatusEffectCatchRateMultiplier(pokemon.status.effect) : 1; - const x = Math.round((((_3m - _2h) * catchRate * pokeballMultiplier) / _3m) * statusMultiplier); - const y = Math.round(65536 / Math.sqrt(Math.sqrt(255 / x))); - const fpOffset = pokemon.getFieldPositionOffset(); - - const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType); - this.pokeball = this.scene.addFieldSprite(16, 80, "pb", pokeballAtlasKey); - this.pokeball.setOrigin(0.5, 0.625); - this.scene.field.add(this.pokeball); - - this.scene.playSound("pb_throw"); - this.scene.time.delayedCall(300, () => { - this.scene.field.moveBelow(this.pokeball as Phaser.GameObjects.GameObject, pokemon); - }); - - this.scene.tweens.add({ - targets: this.pokeball, - x: { value: 236 + fpOffset[0], ease: "Linear" }, - y: { value: 16 + fpOffset[1], ease: "Cubic.easeOut" }, - duration: 500, - onComplete: () => { - this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); - this.scene.playSound("pb_rel"); - pokemon.tint(getPokeballTintColor(this.pokeballType)); - - addPokeballOpenParticles(this.scene, this.pokeball.x, this.pokeball.y, this.pokeballType); - - this.scene.tweens.add({ - targets: pokemon, - duration: 500, - ease: "Sine.easeIn", - scale: 0.25, - y: 20, - onComplete: () => { - this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - pokemon.setVisible(false); - this.scene.playSound("pb_catch"); - this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}`)); - - const doShake = () => { - let shakeCount = 0; - const pbX = this.pokeball.x; - const shakeCounter = this.scene.tweens.addCounter({ - from: 0, - to: 1, - repeat: 4, - yoyo: true, - ease: "Cubic.easeOut", - duration: 250, - repeatDelay: 500, - onUpdate: t => { - if (shakeCount && shakeCount < 4) { - const value = t.getValue(); - const directionMultiplier = shakeCount % 2 === 1 ? 1 : -1; - this.pokeball.setX(pbX + value * 4 * directionMultiplier); - this.pokeball.setAngle(value * 27.5 * directionMultiplier); - } - }, - onRepeat: () => { - if (!pokemon.species.isObtainable()) { - shakeCounter.stop(); - this.failCatch(shakeCount); - } else if (shakeCount++ < 3) { - if (pokeballMultiplier === -1 || pokemon.randSeedInt(65536) < y) { - this.scene.playSound("pb_move"); - } else { - shakeCounter.stop(); - this.failCatch(shakeCount); - } - } else { - this.scene.playSound("pb_lock"); - addPokeballCaptureStars(this.scene, this.pokeball); - - const pbTint = this.scene.add.sprite(this.pokeball.x, this.pokeball.y, "pb", "pb"); - pbTint.setOrigin(this.pokeball.originX, this.pokeball.originY); - pbTint.setTintFill(0); - pbTint.setAlpha(0); - this.scene.field.add(pbTint); - this.scene.tweens.add({ - targets: pbTint, - alpha: 0.375, - duration: 200, - easing: "Sine.easeOut", - onComplete: () => { - this.scene.tweens.add({ - targets: pbTint, - alpha: 0, - duration: 200, - easing: "Sine.easeIn", - onComplete: () => pbTint.destroy() - }); - } - }); - } - }, - onComplete: () => { - this.catch(); - } - }); - }; - - this.scene.time.delayedCall(250, () => doPokeballBounceAnim(this.scene, this.pokeball, 16, 72, 350, doShake)); - } - }); - } - }); - } - - failCatch(shakeCount: integer) { - const pokemon = this.getPokemon(); - - this.scene.playSound("pb_rel"); - pokemon.setY(this.originalY); - if (pokemon.status?.effect !== StatusEffect.SLEEP) { - pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); - } - pokemon.tint(getPokeballTintColor(this.pokeballType)); - pokemon.setVisible(true); - pokemon.untint(250, "Sine.easeOut"); - - const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType); - this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); - this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); - - this.scene.tweens.add({ - targets: pokemon, - duration: 250, - ease: "Sine.easeOut", - scale: 1 - }); - - this.scene.currentBattle.lastUsedPokeball = this.pokeballType; - this.removePb(); - this.end(); - } - - catch() { - const pokemon = this.getPokemon() as EnemyPokemon; - - const speciesForm = !pokemon.fusionSpecies ? pokemon.getSpeciesForm() : pokemon.getFusionSpeciesForm(); - - if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1) { - this.scene.validateAchv(achvs.HIDDEN_ABILITY); - } - - 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) { - this.scene.validateAchv(achvs.CATCH_MYTHICAL); - } - - this.scene.pokemonInfoContainer.show(pokemon, true); - - this.scene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); - - this.scene.ui.showText(i18next.t("battle:pokemonCaught", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { - const end = () => { - this.scene.unshiftPhase(new VictoryPhase(this.scene, this.battlerIndex)); - this.scene.pokemonInfoContainer.hide(); - this.removePb(); - this.end(); - }; - const removePokemon = () => { - this.scene.addFaintedEnemyScore(pokemon); - this.scene.getPlayerField().filter(p => p.isActive(true)).forEach(playerPokemon => playerPokemon.removeTagsBySourceId(pokemon.id)); - pokemon.hp = 0; - pokemon.trySetStatus(StatusEffect.FAINT); - this.scene.clearEnemyHeldItemModifiers(); - this.scene.field.remove(pokemon, true); - }; - const addToParty = () => { - const newPokemon = pokemon.addToParty(this.pokeballType); - const modifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier, false); - if (this.scene.getParty().filter(p => p.isShiny()).length === 6) { - this.scene.validateAchv(achvs.SHINY_PARTY); - } - Promise.all(modifiers.map(m => this.scene.addModifier(m, true))).then(() => { - this.scene.updateModifiers(true); - removePokemon(); - if (newPokemon) { - newPokemon.loadAssets().then(end); - } else { - end(); - } - }); - }; - Promise.all([pokemon.hideInfo(), this.scene.gameData.setPokemonCaught(pokemon)]).then(() => { - if (this.scene.getParty().length === 6) { - const promptRelease = () => { - this.scene.ui.showText(i18next.t("battle:partyFull", { pokemonName: pokemon.getNameToRender() }), null, () => { - this.scene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); - this.scene.ui.setMode(Mode.CONFIRM, () => { - const newPokemon = this.scene.addPlayerPokemon(pokemon.species, pokemon.level, pokemon.abilityIndex, pokemon.formIndex, pokemon.gender, pokemon.shiny, pokemon.variant, pokemon.ivs, pokemon.nature, pokemon); - this.scene.ui.setMode(Mode.SUMMARY, newPokemon, 0, SummaryUiMode.DEFAULT, () => { - this.scene.ui.setMode(Mode.MESSAGE).then(() => { - promptRelease(); - }); - }, false); - }, () => { - this.scene.ui.setMode(Mode.PARTY, PartyUiMode.RELEASE, this.fieldIndex, (slotIndex: integer, _option: PartyOption) => { - this.scene.ui.setMode(Mode.MESSAGE).then(() => { - if (slotIndex < 6) { - addToParty(); - } else { - promptRelease(); - } - }); - }); - }, () => { - this.scene.ui.setMode(Mode.MESSAGE).then(() => { - removePokemon(); - end(); - }); - }, "fullParty"); - }); - }; - promptRelease(); - } else { - addToParty(); - } - }); - }, 0, true); - } - - removePb() { - this.scene.tweens.add({ - targets: this.pokeball, - duration: 250, - delay: 250, - ease: "Sine.easeIn", - alpha: 0, - onComplete: () => this.pokeball.destroy() - }); - } -} - -export class AttemptRunPhase extends PokemonPhase { - constructor(scene: BattleScene, fieldIndex: integer) { - super(scene, fieldIndex); - } - - start() { - super.start(); - - const playerPokemon = this.getPokemon(); - const enemyField = this.scene.getEnemyField(); - - const enemySpeed = enemyField.reduce((total: integer, enemyPokemon: Pokemon) => total + enemyPokemon.getStat(Stat.SPD), 0) / enemyField.length; - - const escapeChance = new Utils.IntegerHolder((((playerPokemon.getStat(Stat.SPD) * 128) / enemySpeed) + (30 * this.scene.currentBattle.escapeAttempts++)) % 256); - applyAbAttrs(RunSuccessAbAttr, playerPokemon, null, escapeChance); - - if (playerPokemon.randSeedInt(256) < escapeChance.value) { - this.scene.playSound("flee"); - this.scene.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); - - this.scene.tweens.add({ - targets: [this.scene.arenaEnemy, enemyField].flat(), - alpha: 0, - duration: 250, - ease: "Sine.easeIn", - onComplete: () => enemyField.forEach(enemyPokemon => enemyPokemon.destroy()) - }); - - this.scene.clearEnemyHeldItemModifiers(); - - enemyField.forEach(enemyPokemon => { - enemyPokemon.hideInfo().then(() => enemyPokemon.destroy()); - enemyPokemon.hp = 0; - enemyPokemon.trySetStatus(StatusEffect.FAINT); - }); - - this.scene.pushPhase(new BattleEndPhase(this.scene)); - this.scene.pushPhase(new NewBattlePhase(this.scene)); - } else { - this.scene.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); - } - - this.end(); - } -} - -export class SelectModifierPhase extends BattlePhase { - private rerollCount: integer; - private modifierTiers: ModifierTier[]; - - constructor(scene: BattleScene, rerollCount: integer = 0, modifierTiers?: ModifierTier[]) { - super(scene); - - this.rerollCount = rerollCount; - this.modifierTiers = modifierTiers!; // TODO: is this bang correct? - } - - start() { - super.start(); - - if (!this.rerollCount) { - this.updateSeed(); - } else { - this.scene.reroll = false; - } - - const party = this.scene.getParty(); - regenerateModifierPoolThresholds(party, this.getPoolType(), this.rerollCount); - const modifierCount = new Utils.IntegerHolder(3); - if (this.isPlayer()) { - this.scene.applyModifiers(ExtraModifierModifier, true, modifierCount); - } - const typeOptions: ModifierTypeOption[] = this.getModifierTypeOptions(modifierCount.value); - - const modifierSelectCallback = (rowCursor: integer, cursor: integer) => { - if (rowCursor < 0 || cursor < 0) { - 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); - super.end(); - }, () => this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers))); - }); - return false; - } - let modifierType: ModifierType; - let cost: integer; - switch (rowCursor) { - case 0: - switch (cursor) { - case 0: - const rerollCost = this.getRerollCost(typeOptions, this.scene.lockModifierTiers); - if (this.scene.money < rerollCost) { - this.scene.ui.playError(); - return false; - } else { - this.scene.reroll = true; - this.scene.unshiftPhase(new SelectModifierPhase(this.scene, this.rerollCount + 1, typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[])); - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); - if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - this.scene.money -= rerollCost; - this.scene.updateMoneyText(); - this.scene.animateMoneyChanged(false); - } - this.scene.playSound("buy"); - } - break; - case 1: - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, itemQuantity: integer, toSlotIndex: integer) => { - if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) { - const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier - && m.isTransferrable && m.pokemonId === party[fromSlotIndex].id) as PokemonHeldItemModifier[]; - const itemModifier = itemModifiers[itemIndex]; - this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, itemQuantity); - } else { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - } - }, PartyUiHandler.FilterItemMaxStacks); - break; - case 2: - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.CHECK, -1, () => { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - }); - break; - case 3: - this.scene.lockModifierTiers = !this.scene.lockModifierTiers; - const uiHandler = this.scene.ui.getHandler() as ModifierSelectUiHandler; - uiHandler.setRerollCost(this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - uiHandler.updateLockRaritiesText(); - uiHandler.updateRerollCostText(); - return false; - } - return true; - case 1: - if (typeOptions[cursor].type) { - modifierType = typeOptions[cursor].type; - } - break; - default: - const shopOptions = getPlayerShopModifierTypeOptionsForWave(this.scene.currentBattle.waveIndex, this.scene.getWaveMoneyAmount(1)); - const shopOption = shopOptions[rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT]; - if (shopOption.type) { - modifierType = shopOption.type; - } - cost = shopOption.cost; - break; - } - - if (cost! && (this.scene.money < cost) && !Overrides.WAIVE_ROLL_FEE_OVERRIDE) { // TODO: is the bang on cost correct? - this.scene.ui.playError(); - return false; - } - - const applyModifier = (modifier: Modifier, playSound: boolean = false) => { - const result = this.scene.addModifier(modifier, false, playSound); - if (cost) { - result.then(success => { - if (success) { - if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - this.scene.money -= cost; - this.scene.updateMoneyText(); - this.scene.animateMoneyChanged(false); - } - this.scene.playSound("buy"); - (this.scene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); - } else { - this.scene.ui.playError(); - } - }); - } else { - const doEnd = () => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE); - super.end(); - }; - if (result instanceof Promise) { - result.then(() => doEnd()); - } else { - doEnd(); - } - } - }; - - if (modifierType! instanceof PokemonModifierType) { //TODO: is the bang correct? - if (modifierType instanceof FusePokemonModifierType) { - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.SPLICE, -1, (fromSlotIndex: integer, spliceSlotIndex: integer) => { - if (spliceSlotIndex !== undefined && fromSlotIndex < 6 && spliceSlotIndex < 6 && fromSlotIndex !== spliceSlotIndex) { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { - const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct? - applyModifier(modifier, true); - }); - } else { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - } - }, modifierType.selectFilter); - } else { - const pokemonModifierType = modifierType as PokemonModifierType; - const isMoveModifier = modifierType instanceof PokemonMoveModifierType; - const isTmModifier = modifierType instanceof TmModifierType; - const isRememberMoveModifier = modifierType instanceof RememberMoveModifierType; - const isPpRestoreModifier = (modifierType instanceof PokemonPpRestoreModifierType || modifierType instanceof PokemonPpUpModifierType); - const partyUiMode = isMoveModifier ? PartyUiMode.MOVE_MODIFIER - : isTmModifier ? PartyUiMode.TM_MODIFIER - : isRememberMoveModifier ? PartyUiMode.REMEMBER_MOVE_MODIFIER - : PartyUiMode.MODIFIER; - const tmMoveId = isTmModifier - ? (modifierType as TmModifierType).moveId - : undefined; - this.scene.ui.setModeWithoutClear(Mode.PARTY, partyUiMode, -1, (slotIndex: integer, option: PartyOption) => { - if (slotIndex < 6) { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { - const modifier = !isMoveModifier - ? !isRememberMoveModifier - ? modifierType.newModifier(party[slotIndex]) - : modifierType.newModifier(party[slotIndex], option as integer) - : modifierType.newModifier(party[slotIndex], option - PartyOption.MOVE_1); - applyModifier(modifier!, true); // TODO: is the bang correct? - }); - } 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, isPpRestoreModifier); - } - } else { - applyModifier(modifierType!.newModifier()!); // TODO: is the bang correct? - } - - return !cost!;// TODO: is the bang correct? - }; - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - } - - updateSeed(): void { - this.scene.resetSeed(); - } - - isPlayer(): boolean { - return true; - } - - getRerollCost(typeOptions: ModifierTypeOption[], lockRarities: boolean): integer { - let baseValue = 0; - if (Overrides.WAIVE_ROLL_FEE_OVERRIDE) { - return baseValue; - } else if (lockRarities) { - const tierValues = [50, 125, 300, 750, 2000]; - for (const opt of typeOptions) { - baseValue += opt.type?.tier ? tierValues[opt.type.tier] : 0; - } - } else { - baseValue = 250; - } - return Math.min(Math.ceil(this.scene.currentBattle.waveIndex / 10) * baseValue * Math.pow(2, this.rerollCount), Number.MAX_SAFE_INTEGER); - } - - getPoolType(): ModifierPoolType { - return ModifierPoolType.PLAYER; - } - - getModifierTypeOptions(modifierCount: integer): ModifierTypeOption[] { - return getPlayerModifierTypeOptions(modifierCount, this.scene.getParty(), this.scene.lockModifierTiers ? this.modifierTiers : undefined); - } - - addModifier(modifier: Modifier): Promise { - return this.scene.addModifier(modifier, false, true); - } -} - -export class EggLapsePhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - const eggsToHatch: Egg[] = this.scene.gameData.eggs.filter((egg: Egg) => { - return Overrides.EGG_IMMEDIATE_HATCH_OVERRIDE ? true : --egg.hatchWaves < 1; - }); - - let eggCount: integer = eggsToHatch.length; - - if (eggCount) { - this.scene.queueMessage(i18next.t("battle:eggHatching")); - - for (const egg of eggsToHatch) { - this.scene.unshiftPhase(new EggHatchPhase(this.scene, egg, eggCount)); - if (eggCount > 0) { - eggCount--; - } - } - - } - this.end(); - } -} - -export class AddEnemyBuffModifierPhase extends Phase { - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - const waveIndex = this.scene.currentBattle.waveIndex; - const tier = !(waveIndex % 1000) ? ModifierTier.ULTRA : !(waveIndex % 250) ? ModifierTier.GREAT : ModifierTier.COMMON; - - regenerateModifierPoolThresholds(this.scene.getEnemyParty(), ModifierPoolType.ENEMY_BUFF); - - const count = Math.ceil(waveIndex / 250); - for (let i = 0; i < count; i++) { - this.scene.addEnemyModifier(getEnemyBuffModifierForWave(tier, this.scene.findModifiers(m => m instanceof EnemyPersistentModifier, false), this.scene), true, true); - } - this.scene.updateModifiers(false, true).then(() => this.end()); - } -} - -/** - * Cures the party of all non-volatile status conditions, shows a message - * @param {BattleScene} scene The current scene - * @param {Pokemon} user The user of the move that cures the party - * @param {string} message The message that should be displayed - * @param {Abilities} abilityCondition Pokemon with this ability will not be affected ie. Soundproof - */ -export class PartyStatusCurePhase extends BattlePhase { - private user: Pokemon; - private message: string; - private abilityCondition: Abilities; - - constructor(scene: BattleScene, user: Pokemon, message: string, abilityCondition: Abilities) { - super(scene); - - this.user = user; - this.message = message; - this.abilityCondition = abilityCondition; - } - - start() { - super.start(); - for (const pokemon of this.scene.getParty()) { - if (!pokemon.isOnField() || pokemon === this.user) { - pokemon.resetStatus(false); - pokemon.updateInfo(true); - } else { - if (!pokemon.hasAbility(this.abilityCondition)) { - pokemon.resetStatus(); - pokemon.updateInfo(true); - } else { - // Manually show ability bar, since we're not hooked into the targeting system - pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.id, pokemon.getPassiveAbility()?.id === this.abilityCondition)); - } - } - } - if (this.message) { - this.scene.queueMessage(this.message); - } - this.end(); - } -} - -export class PartyHealPhase extends BattlePhase { - private resumeBgm: boolean; - - constructor(scene: BattleScene, resumeBgm: boolean) { - super(scene); - - this.resumeBgm = resumeBgm; - } - - start() { - super.start(); - - const bgmPlaying = this.scene.isBgmPlaying(); - if (bgmPlaying) { - this.scene.fadeOutBgm(1000, false); - } - this.scene.ui.fadeOut(1000).then(() => { - for (const pokemon of this.scene.getParty()) { - pokemon.hp = pokemon.getMaxHp(); - pokemon.resetStatus(); - for (const move of pokemon.moveset) { - move!.ppUsed = 0; // TODO: is this bang correct? - } - pokemon.updateInfo(true); - } - const healSong = this.scene.playSoundWithoutBgm("heal"); - this.scene.time.delayedCall(Utils.fixedInt(healSong.totalDuration * 1000), () => { - healSong.destroy(); - if (this.resumeBgm && bgmPlaying) { - this.scene.playBgm(); - } - this.scene.ui.fadeIn(500).then(() => this.end()); - }); - }); - } -} - -export class ShinySparklePhase extends PokemonPhase { - constructor(scene: BattleScene, battlerIndex: BattlerIndex) { - super(scene, battlerIndex); - } - - start() { - super.start(); - - this.getPokemon().sparkle(); - this.scene.time.delayedCall(1000, () => this.end()); - } -} - -export class ScanIvsPhase extends PokemonPhase { - private shownIvs: integer; - - constructor(scene: BattleScene, battlerIndex: BattlerIndex, shownIvs: integer) { - super(scene, battlerIndex); - - this.shownIvs = shownIvs; - } - - start() { - super.start(); - - if (!this.shownIvs) { - return this.end(); - } - - const pokemon = this.getPokemon(); - - let enemyIvs: number[] = []; - let statsContainer: Phaser.GameObjects.Sprite[] = []; - let statsContainerLabels: Phaser.GameObjects.Sprite[] = []; - const enemyField = this.scene.getEnemyField(); - const uiTheme = (this.scene as BattleScene).uiTheme; // Assuming uiTheme is accessible - for (let e = 0; e < enemyField.length; e++) { - enemyIvs = enemyField[e].ivs; - const currentIvs = this.scene.gameData.dexData[enemyField[e].species.getRootSpeciesId()].ivs; // we are using getRootSpeciesId() here because we want to check against the baby form, not the mid form if it exists - const ivsToShow = this.scene.ui.getMessageHandler().getTopIvs(enemyIvs, this.shownIvs); - statsContainer = enemyField[e].getBattleInfo().getStatsValueContainer().list as Phaser.GameObjects.Sprite[]; - statsContainerLabels = statsContainer.filter(m => m.name.indexOf("icon_stat_label") >= 0); - for (let s = 0; s < statsContainerLabels.length; s++) { - const ivStat = Stat[statsContainerLabels[s].frame.name]; - if (enemyIvs[ivStat] > currentIvs[ivStat] && ivsToShow.indexOf(Number(ivStat)) >= 0) { - const hexColour = enemyIvs[ivStat] === 31 ? getTextColor(TextStyle.PERFECT_IV, false, uiTheme) : getTextColor(TextStyle.SUMMARY_GREEN, false, uiTheme); - const hexTextColour = Phaser.Display.Color.HexStringToColor(hexColour).color; - statsContainerLabels[s].setTint(hexTextColour); - } - statsContainerLabels[s].setVisible(true); - } - } - - if (!this.scene.hideIvs) { - this.scene.ui.showText(i18next.t("battle:ivScannerUseQuestion", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { - this.scene.ui.setMode(Mode.CONFIRM, () => { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); - new CommonBattleAnim(CommonAnim.LOCK_ON, pokemon, pokemon).play(this.scene, () => { - this.scene.ui.getMessageHandler().promptIvs(pokemon.id, pokemon.ivs, this.shownIvs).then(() => this.end()); - }); - }, () => { - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.clearText(); - this.end(); - }); - }); - } else { - this.end(); - } - } -} - -export class TrainerMessageTestPhase extends BattlePhase { - private trainerTypes: TrainerType[]; - - constructor(scene: BattleScene, ...trainerTypes: TrainerType[]) { - super(scene); - - this.trainerTypes = trainerTypes; - } - - start() { - super.start(); - - const testMessages: string[] = []; - - for (const t of Object.keys(trainerConfigs)) { - const type = parseInt(t); - if (this.trainerTypes.length && !this.trainerTypes.find(tt => tt === type as TrainerType)) { - continue; - } - const config = trainerConfigs[type]; - [config.encounterMessages, config.femaleEncounterMessages, config.victoryMessages, config.femaleVictoryMessages, config.defeatMessages, config.femaleDefeatMessages] - .map(messages => { - if (messages?.length) { - testMessages.push(...messages); - } - }); - } - - for (const message of testMessages) { - this.scene.pushPhase(new TestMessagePhase(this.scene, message)); - } - - this.end(); - } -} - -export class TestMessagePhase extends MessagePhase { - constructor(scene: BattleScene, message: string) { - super(scene, message, null, true); - } -} diff --git a/src/phases/add-enemy-buff-modifier-phase.ts b/src/phases/add-enemy-buff-modifier-phase.ts new file mode 100644 index 00000000000..a9936eb765d --- /dev/null +++ b/src/phases/add-enemy-buff-modifier-phase.ts @@ -0,0 +1,26 @@ +import BattleScene from "#app/battle-scene.js"; +import { ModifierTier } from "#app/modifier/modifier-tier.js"; +import { regenerateModifierPoolThresholds, ModifierPoolType, getEnemyBuffModifierForWave } from "#app/modifier/modifier-type.js"; +import { EnemyPersistentModifier } from "#app/modifier/modifier.js"; +import { Phase } from "#app/phase.js"; + +export class AddEnemyBuffModifierPhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + const waveIndex = this.scene.currentBattle.waveIndex; + const tier = !(waveIndex % 1000) ? ModifierTier.ULTRA : !(waveIndex % 250) ? ModifierTier.GREAT : ModifierTier.COMMON; + + regenerateModifierPoolThresholds(this.scene.getEnemyParty(), ModifierPoolType.ENEMY_BUFF); + + const count = Math.ceil(waveIndex / 250); + for (let i = 0; i < count; i++) { + this.scene.addEnemyModifier(getEnemyBuffModifierForWave(tier, this.scene.findModifiers(m => m instanceof EnemyPersistentModifier, false), this.scene), true, true); + } + this.scene.updateModifiers(false, true).then(() => this.end()); + } +} diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts new file mode 100644 index 00000000000..3c165a25157 --- /dev/null +++ b/src/phases/attempt-capture-phase.ts @@ -0,0 +1,288 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { getPokeballCatchMultiplier, getPokeballAtlasKey, getPokeballTintColor, doPokeballBounceAnim } from "#app/data/pokeball.js"; +import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect.js"; +import { PokeballType } from "#app/enums/pokeball.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import { addPokeballOpenParticles, addPokeballCaptureStars } from "#app/field/anims.js"; +import { EnemyPokemon } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { PokemonHeldItemModifier } from "#app/modifier/modifier.js"; +import { achvs } from "#app/system/achv.js"; +import { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler.js"; +import { SummaryUiMode } from "#app/ui/summary-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { PokemonPhase } from "./pokemon-phase"; +import { VictoryPhase } from "./victory-phase"; + +export class AttemptCapturePhase extends PokemonPhase { + private pokeballType: PokeballType; + private pokeball: Phaser.GameObjects.Sprite; + private originalY: number; + + constructor(scene: BattleScene, targetIndex: integer, pokeballType: PokeballType) { + super(scene, BattlerIndex.ENEMY + targetIndex); + + this.pokeballType = pokeballType; + } + + start() { + super.start(); + + const pokemon = this.getPokemon() as EnemyPokemon; + + if (!pokemon?.hp) { + return this.end(); + } + + this.scene.pokeballCounts[this.pokeballType]--; + + this.originalY = pokemon.y; + + const _3m = 3 * pokemon.getMaxHp(); + const _2h = 2 * pokemon.hp; + const catchRate = pokemon.species.catchRate; + const pokeballMultiplier = getPokeballCatchMultiplier(this.pokeballType); + const statusMultiplier = pokemon.status ? getStatusEffectCatchRateMultiplier(pokemon.status.effect) : 1; + const x = Math.round((((_3m - _2h) * catchRate * pokeballMultiplier) / _3m) * statusMultiplier); + const y = Math.round(65536 / Math.sqrt(Math.sqrt(255 / x))); + const fpOffset = pokemon.getFieldPositionOffset(); + + const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType); + this.pokeball = this.scene.addFieldSprite(16, 80, "pb", pokeballAtlasKey); + this.pokeball.setOrigin(0.5, 0.625); + this.scene.field.add(this.pokeball); + + this.scene.playSound("pb_throw"); + this.scene.time.delayedCall(300, () => { + this.scene.field.moveBelow(this.pokeball as Phaser.GameObjects.GameObject, pokemon); + }); + + this.scene.tweens.add({ + targets: this.pokeball, + x: { value: 236 + fpOffset[0], ease: "Linear" }, + y: { value: 16 + fpOffset[1], ease: "Cubic.easeOut" }, + duration: 500, + onComplete: () => { + this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); + this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); + this.scene.playSound("pb_rel"); + pokemon.tint(getPokeballTintColor(this.pokeballType)); + + addPokeballOpenParticles(this.scene, this.pokeball.x, this.pokeball.y, this.pokeballType); + + this.scene.tweens.add({ + targets: pokemon, + duration: 500, + ease: "Sine.easeIn", + scale: 0.25, + y: 20, + onComplete: () => { + this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); + pokemon.setVisible(false); + this.scene.playSound("pb_catch"); + this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}`)); + + const doShake = () => { + let shakeCount = 0; + const pbX = this.pokeball.x; + const shakeCounter = this.scene.tweens.addCounter({ + from: 0, + to: 1, + repeat: 4, + yoyo: true, + ease: "Cubic.easeOut", + duration: 250, + repeatDelay: 500, + onUpdate: t => { + if (shakeCount && shakeCount < 4) { + const value = t.getValue(); + const directionMultiplier = shakeCount % 2 === 1 ? 1 : -1; + this.pokeball.setX(pbX + value * 4 * directionMultiplier); + this.pokeball.setAngle(value * 27.5 * directionMultiplier); + } + }, + onRepeat: () => { + if (!pokemon.species.isObtainable()) { + shakeCounter.stop(); + this.failCatch(shakeCount); + } else if (shakeCount++ < 3) { + if (pokeballMultiplier === -1 || pokemon.randSeedInt(65536) < y) { + this.scene.playSound("pb_move"); + } else { + shakeCounter.stop(); + this.failCatch(shakeCount); + } + } else { + this.scene.playSound("pb_lock"); + addPokeballCaptureStars(this.scene, this.pokeball); + + const pbTint = this.scene.add.sprite(this.pokeball.x, this.pokeball.y, "pb", "pb"); + pbTint.setOrigin(this.pokeball.originX, this.pokeball.originY); + pbTint.setTintFill(0); + pbTint.setAlpha(0); + this.scene.field.add(pbTint); + this.scene.tweens.add({ + targets: pbTint, + alpha: 0.375, + duration: 200, + easing: "Sine.easeOut", + onComplete: () => { + this.scene.tweens.add({ + targets: pbTint, + alpha: 0, + duration: 200, + easing: "Sine.easeIn", + onComplete: () => pbTint.destroy() + }); + } + }); + } + }, + onComplete: () => { + this.catch(); + } + }); + }; + + this.scene.time.delayedCall(250, () => doPokeballBounceAnim(this.scene, this.pokeball, 16, 72, 350, doShake)); + } + }); + } + }); + } + + failCatch(shakeCount: integer) { + const pokemon = this.getPokemon(); + + this.scene.playSound("pb_rel"); + pokemon.setY(this.originalY); + if (pokemon.status?.effect !== StatusEffect.SLEEP) { + pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); + } + pokemon.tint(getPokeballTintColor(this.pokeballType)); + pokemon.setVisible(true); + pokemon.untint(250, "Sine.easeOut"); + + const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType); + this.pokeball.setTexture("pb", `${pokeballAtlasKey}_opening`); + this.scene.time.delayedCall(17, () => this.pokeball.setTexture("pb", `${pokeballAtlasKey}_open`)); + + this.scene.tweens.add({ + targets: pokemon, + duration: 250, + ease: "Sine.easeOut", + scale: 1 + }); + + this.scene.currentBattle.lastUsedPokeball = this.pokeballType; + this.removePb(); + this.end(); + } + + catch() { + const pokemon = this.getPokemon() as EnemyPokemon; + + const speciesForm = !pokemon.fusionSpecies ? pokemon.getSpeciesForm() : pokemon.getFusionSpeciesForm(); + + if (speciesForm.abilityHidden && (pokemon.fusionSpecies ? pokemon.fusionAbilityIndex : pokemon.abilityIndex) === speciesForm.getAbilityCount() - 1) { + this.scene.validateAchv(achvs.HIDDEN_ABILITY); + } + + 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) { + this.scene.validateAchv(achvs.CATCH_MYTHICAL); + } + + this.scene.pokemonInfoContainer.show(pokemon, true); + + this.scene.gameData.updateSpeciesDexIvs(pokemon.species.getRootSpeciesId(true), pokemon.ivs); + + this.scene.ui.showText(i18next.t("battle:pokemonCaught", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { + const end = () => { + this.scene.unshiftPhase(new VictoryPhase(this.scene, this.battlerIndex)); + this.scene.pokemonInfoContainer.hide(); + this.removePb(); + this.end(); + }; + const removePokemon = () => { + this.scene.addFaintedEnemyScore(pokemon); + this.scene.getPlayerField().filter(p => p.isActive(true)).forEach(playerPokemon => playerPokemon.removeTagsBySourceId(pokemon.id)); + pokemon.hp = 0; + pokemon.trySetStatus(StatusEffect.FAINT); + this.scene.clearEnemyHeldItemModifiers(); + this.scene.field.remove(pokemon, true); + }; + const addToParty = () => { + const newPokemon = pokemon.addToParty(this.pokeballType); + const modifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier, false); + if (this.scene.getParty().filter(p => p.isShiny()).length === 6) { + this.scene.validateAchv(achvs.SHINY_PARTY); + } + Promise.all(modifiers.map(m => this.scene.addModifier(m, true))).then(() => { + this.scene.updateModifiers(true); + removePokemon(); + if (newPokemon) { + newPokemon.loadAssets().then(end); + } else { + end(); + } + }); + }; + Promise.all([pokemon.hideInfo(), this.scene.gameData.setPokemonCaught(pokemon)]).then(() => { + if (this.scene.getParty().length === 6) { + const promptRelease = () => { + this.scene.ui.showText(i18next.t("battle:partyFull", { pokemonName: pokemon.getNameToRender() }), null, () => { + this.scene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); + this.scene.ui.setMode(Mode.CONFIRM, () => { + const newPokemon = this.scene.addPlayerPokemon(pokemon.species, pokemon.level, pokemon.abilityIndex, pokemon.formIndex, pokemon.gender, pokemon.shiny, pokemon.variant, pokemon.ivs, pokemon.nature, pokemon); + this.scene.ui.setMode(Mode.SUMMARY, newPokemon, 0, SummaryUiMode.DEFAULT, () => { + this.scene.ui.setMode(Mode.MESSAGE).then(() => { + promptRelease(); + }); + }, false); + }, () => { + this.scene.ui.setMode(Mode.PARTY, PartyUiMode.RELEASE, this.fieldIndex, (slotIndex: integer, _option: PartyOption) => { + this.scene.ui.setMode(Mode.MESSAGE).then(() => { + if (slotIndex < 6) { + addToParty(); + } else { + promptRelease(); + } + }); + }); + }, () => { + this.scene.ui.setMode(Mode.MESSAGE).then(() => { + removePokemon(); + end(); + }); + }, "fullParty"); + }); + }; + promptRelease(); + } else { + addToParty(); + } + }); + }, 0, true); + } + + removePb() { + this.scene.tweens.add({ + targets: this.pokeball, + duration: 250, + delay: 250, + ease: "Sine.easeIn", + alpha: 0, + onComplete: () => this.pokeball.destroy() + }); + } +} diff --git a/src/phases/attempt-run-phase.ts b/src/phases/attempt-run-phase.ts new file mode 100644 index 00000000000..9781ca6d360 --- /dev/null +++ b/src/phases/attempt-run-phase.ts @@ -0,0 +1,56 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyAbAttrs, RunSuccessAbAttr } from "#app/data/ability.js"; +import { Stat } from "#app/enums/stat.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import Pokemon from "#app/field/pokemon.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { BattleEndPhase } from "./battle-end-phase"; +import { NewBattlePhase } from "./new-battle-phase"; +import { PokemonPhase } from "./pokemon-phase"; + +export class AttemptRunPhase extends PokemonPhase { + constructor(scene: BattleScene, fieldIndex: integer) { + super(scene, fieldIndex); + } + + start() { + super.start(); + + const playerPokemon = this.getPokemon(); + const enemyField = this.scene.getEnemyField(); + + const enemySpeed = enemyField.reduce((total: integer, enemyPokemon: Pokemon) => total + enemyPokemon.getStat(Stat.SPD), 0) / enemyField.length; + + const escapeChance = new Utils.IntegerHolder((((playerPokemon.getStat(Stat.SPD) * 128) / enemySpeed) + (30 * this.scene.currentBattle.escapeAttempts++)) % 256); + applyAbAttrs(RunSuccessAbAttr, playerPokemon, null, escapeChance); + + if (playerPokemon.randSeedInt(256) < escapeChance.value) { + this.scene.playSound("flee"); + this.scene.queueMessage(i18next.t("battle:runAwaySuccess"), null, true, 500); + + this.scene.tweens.add({ + targets: [this.scene.arenaEnemy, enemyField].flat(), + alpha: 0, + duration: 250, + ease: "Sine.easeIn", + onComplete: () => enemyField.forEach(enemyPokemon => enemyPokemon.destroy()) + }); + + this.scene.clearEnemyHeldItemModifiers(); + + enemyField.forEach(enemyPokemon => { + enemyPokemon.hideInfo().then(() => enemyPokemon.destroy()); + enemyPokemon.hp = 0; + enemyPokemon.trySetStatus(StatusEffect.FAINT); + }); + + this.scene.pushPhase(new BattleEndPhase(this.scene)); + this.scene.pushPhase(new NewBattlePhase(this.scene)); + } else { + this.scene.queueMessage(i18next.t("battle:runAwayCannotEscape"), null, true, 500); + } + + this.end(); + } +} diff --git a/src/phases/battle-end-phase.ts b/src/phases/battle-end-phase.ts new file mode 100644 index 00000000000..a9999370cdd --- /dev/null +++ b/src/phases/battle-end-phase.ts @@ -0,0 +1,55 @@ +import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/ability.js"; +import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier.js"; +import { BattlePhase } from "./battle-phase"; +import { GameOverPhase } from "./game-over-phase"; + +export class BattleEndPhase extends BattlePhase { + start() { + super.start(); + + this.scene.currentBattle.addBattleScore(this.scene); + + this.scene.gameData.gameStats.battles++; + if (this.scene.currentBattle.trainer) { + this.scene.gameData.gameStats.trainersDefeated++; + } + if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) { + this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; + } + + // Endless graceful end + if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex >= 5850) { + this.scene.clearPhaseQueue(); + this.scene.unshiftPhase(new GameOverPhase(this.scene, true)); + } + + for (const pokemon of this.scene.getField()) { + if (pokemon) { + pokemon.resetBattleSummonData(); + } + } + + for (const pokemon of this.scene.getParty().filter(p => p.isAllowedInBattle())) { + applyPostBattleAbAttrs(PostBattleAbAttr, pokemon); + } + + if (this.scene.currentBattle.moneyScattered) { + this.scene.currentBattle.pickUpScatteredMoney(this.scene); + } + + this.scene.clearEnemyHeldItemModifiers(); + + const lapsingModifiers = this.scene.findModifiers(m => m instanceof LapsingPersistentModifier || m instanceof LapsingPokemonHeldItemModifier) as (LapsingPersistentModifier | LapsingPokemonHeldItemModifier)[]; + for (const m of lapsingModifiers) { + const args: any[] = []; + if (m instanceof LapsingPokemonHeldItemModifier) { + args.push(this.scene.getPokemonById(m.pokemonId)); + } + if (!m.lapse(args)) { + this.scene.removeModifier(m); + } + } + + this.scene.updateModifiers().then(() => this.end()); + } +} diff --git a/src/phases/battle-phase.ts b/src/phases/battle-phase.ts new file mode 100644 index 00000000000..3e7e0e28596 --- /dev/null +++ b/src/phases/battle-phase.ts @@ -0,0 +1,47 @@ +import BattleScene from "#app/battle-scene.js"; +import { TrainerSlot } from "#app/data/trainer-config.js"; +import { Phase } from "#app/phase.js"; + +export class BattlePhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + showEnemyTrainer(trainerSlot: TrainerSlot = TrainerSlot.NONE): void { + const sprites = this.scene.currentBattle.trainer?.getSprites()!; // TODO: is this bang correct? + const tintSprites = this.scene.currentBattle.trainer?.getTintSprites()!; // TODO: is this bang correct? + for (let i = 0; i < sprites.length; i++) { + const visible = !trainerSlot || !i === (trainerSlot === TrainerSlot.TRAINER) || sprites.length < 2; + [sprites[i], tintSprites[i]].map(sprite => { + if (visible) { + sprite.x = trainerSlot || sprites.length < 2 ? 0 : i ? 16 : -16; + } + sprite.setVisible(visible); + sprite.clearTint(); + }); + sprites[i].setVisible(visible); + tintSprites[i].setVisible(visible); + sprites[i].clearTint(); + tintSprites[i].clearTint(); + } + this.scene.tweens.add({ + targets: this.scene.currentBattle.trainer, + x: "-=16", + y: "+=16", + alpha: 1, + ease: "Sine.easeInOut", + duration: 750 + }); + } + + hideEnemyTrainer(): void { + this.scene.tweens.add({ + targets: this.scene.currentBattle.trainer, + x: "+=16", + y: "-=16", + alpha: 0, + ease: "Sine.easeInOut", + duration: 750 + }); + } +} diff --git a/src/phases/berry-phase.ts b/src/phases/berry-phase.ts new file mode 100644 index 00000000000..504fb6ec163 --- /dev/null +++ b/src/phases/berry-phase.ts @@ -0,0 +1,52 @@ +import { applyAbAttrs, PreventBerryUseAbAttr, HealFromBerryUseAbAttr } from "#app/data/ability.js"; +import { CommonAnim } from "#app/data/battle-anims.js"; +import { BerryUsedEvent } from "#app/events/battle-scene.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { BerryModifier } from "#app/modifier/modifier.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { FieldPhase } from "./field-phase"; +import { CommonAnimPhase } from "./common-anim-phase"; + +/** The phase after attacks where the pokemon eat berries */ +export class BerryPhase extends FieldPhase { + start() { + super.start(); + + this.executeForAll((pokemon) => { + const hasUsableBerry = !!this.scene.findModifier((m) => { + return m instanceof BerryModifier && m.shouldApply([pokemon]); + }, pokemon.isPlayer()); + + if (hasUsableBerry) { + const cancelled = new Utils.BooleanHolder(false); + pokemon.getOpponents().map((opp) => applyAbAttrs(PreventBerryUseAbAttr, opp, cancelled)); + + if (cancelled.value) { + pokemon.scene.queueMessage(i18next.t("abilityTriggers:preventBerryUse", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) })); + } else { + this.scene.unshiftPhase( + new CommonAnimPhase(this.scene, pokemon.getBattlerIndex(), pokemon.getBattlerIndex(), CommonAnim.USE_ITEM) + ); + + for (const berryModifier of this.scene.applyModifiers(BerryModifier, pokemon.isPlayer(), pokemon) as BerryModifier[]) { + if (berryModifier.consumed) { + if (!--berryModifier.stackCount) { + this.scene.removeModifier(berryModifier); + } else { + berryModifier.consumed = false; + } + } + this.scene.eventTarget.dispatchEvent(new BerryUsedEvent(berryModifier)); // Announce a berry was used + } + + this.scene.updateModifiers(pokemon.isPlayer()); + + applyAbAttrs(HealFromBerryUseAbAttr, pokemon, new Utils.BooleanHolder(false)); + } + } + }); + + this.end(); + } +} diff --git a/src/phases/check-switch-phase.ts b/src/phases/check-switch-phase.ts new file mode 100644 index 00000000000..f95258ae2cd --- /dev/null +++ b/src/phases/check-switch-phase.ts @@ -0,0 +1,61 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattleStyle } from "#app/enums/battle-style.js"; +import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { BattlePhase } from "./battle-phase"; +import { PostSummonPhase } from "./post-summon-phase"; +import { SummonMissingPhase } from "./summon-missing-phase"; +import { SwitchPhase } from "./switch-phase"; + +export class CheckSwitchPhase extends BattlePhase { + protected fieldIndex: integer; + protected useName: boolean; + + constructor(scene: BattleScene, fieldIndex: integer, useName: boolean) { + super(scene); + + this.fieldIndex = fieldIndex; + this.useName = useName; + } + + start() { + super.start(); + + const pokemon = this.scene.getPlayerField()[this.fieldIndex]; + + if (this.scene.battleStyle === BattleStyle.SET) { + super.end(); + return; + } + + if (this.scene.field.getAll().indexOf(pokemon) === -1) { + this.scene.unshiftPhase(new SummonMissingPhase(this.scene, this.fieldIndex)); + super.end(); + return; + } + + if (!this.scene.getParty().slice(1).filter(p => p.isActive()).length) { + super.end(); + return; + } + + if (pokemon.getTag(BattlerTagType.FRENZY)) { + super.end(); + return; + } + + this.scene.ui.showText(i18next.t("battle:switchQuestion", { pokemonName: this.useName ? getPokemonNameWithAffix(pokemon) : 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); + this.scene.unshiftPhase(new SwitchPhase(this.scene, this.fieldIndex, "switchMode", true)); + this.end(); + }, () => { + this.scene.ui.setMode(Mode.MESSAGE); + this.end(); + }); + }); + } +} diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts new file mode 100644 index 00000000000..5d466e5d3b6 --- /dev/null +++ b/src/phases/command-phase.ts @@ -0,0 +1,288 @@ +import BattleScene from "#app/battle-scene.js"; +import { TurnCommand, BattleType } from "#app/battle.js"; +import { applyCheckTrappedAbAttrs, CheckTrappedAbAttr } from "#app/data/ability.js"; +import { TrappedTag, EncoreTag } from "#app/data/battler-tags.js"; +import { MoveTargetSet, getMoveTargets } from "#app/data/move.js"; +import { speciesStarters } from "#app/data/pokemon-species.js"; +import { Type } from "#app/data/type.js"; +import { Abilities } from "#app/enums/abilities.js"; +import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { Biome } from "#app/enums/biome.js"; +import { Moves } from "#app/enums/moves.js"; +import { PokeballType } from "#app/enums/pokeball.js"; +import { FieldPosition, PlayerPokemon } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { Command } from "#app/ui/command-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { FieldPhase } from "./field-phase"; +import { SelectTargetPhase } from "./select-target-phase"; + +export class CommandPhase extends FieldPhase { + protected fieldIndex: integer; + + constructor(scene: BattleScene, fieldIndex: integer) { + super(scene); + + this.fieldIndex = fieldIndex; + } + + start() { + super.start(); + + if (this.fieldIndex) { + // If we somehow are attempting to check the right pokemon but there's only one pokemon out + // Switch back to the center pokemon. This can happen rarely in double battles with mid turn switching + if (this.scene.getPlayerField().filter(p => p.isActive()).length === 1) { + this.fieldIndex = FieldPosition.CENTER; + } else { + const allyCommand = this.scene.currentBattle.turnCommands[this.fieldIndex - 1]; + if (allyCommand?.command === Command.BALL || allyCommand?.command === Command.RUN) { + this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: allyCommand?.command, skip: true }; + } + } + } + + if (this.scene.currentBattle.turnCommands[this.fieldIndex]?.skip) { + return this.end(); + } + + const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; + + const moveQueue = playerPokemon.getMoveQueue(); + + while (moveQueue.length && moveQueue[0] + && moveQueue[0].move && (!playerPokemon.getMoveset().find(m => m?.moveId === moveQueue[0].move) + || !playerPokemon.getMoveset()[playerPokemon.getMoveset().findIndex(m => m?.moveId === moveQueue[0].move)]!.isUsable(playerPokemon, moveQueue[0].ignorePP))) { // TODO: is the bang correct? + moveQueue.shift(); + } + + if (moveQueue.length) { + const queuedMove = moveQueue[0]; + if (!queuedMove.move) { + this.handleCommand(Command.FIGHT, -1, false); + } else { + const moveIndex = playerPokemon.getMoveset().findIndex(m => m?.moveId === queuedMove.move); + if (moveIndex > -1 && playerPokemon.getMoveset()[moveIndex]!.isUsable(playerPokemon, queuedMove.ignorePP)) { // TODO: is the bang correct? + this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, { targets: queuedMove.targets, multiple: queuedMove.targets.length > 1 }); + } else { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + } + } + } else { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + } + } + + handleCommand(command: Command, cursor: integer, ...args: any[]): boolean { + const playerPokemon = this.scene.getPlayerField()[this.fieldIndex]; + const enemyField = this.scene.getEnemyField(); + let success: boolean; + + 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)) { + const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor]!.moveId : Moves.NONE : Moves.STRUGGLE; // TODO: is the bang correct? + 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) { + turnCommand.targets = [this.fieldIndex]; + } + console.log(moveTargets, getPokemonNameWithAffix(playerPokemon)); + if (moveTargets.targets.length > 1 && moveTargets.multiple) { + this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); + } + if (moveTargets.targets.length <= 1 || moveTargets.multiple) { + turnCommand.move!.targets = moveTargets.targets; //TODO: is the bang correct here? + } else if (playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1) { + turnCommand.move!.targets = playerPokemon.getMoveQueue()[0].targets; //TODO: is the bang correct here? + } 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) { + const move = playerPokemon.getMoveset()[cursor]!; //TODO: is this bang correct? + 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: + const notInDex = (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); + if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || this.scene.gameMode.isFreshStartChallenge() || notInDex )) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t("battle:noPokeballForce"), null, () => { + this.scene.ui.showText("", 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("battle:noPokeballTrainer"), null, () => { + this.scene.ui.showText("", 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else { + const targets = this.scene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); + if (targets.length > 1) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t("battle:noPokeballMulti"), null, () => { + this.scene.ui.showText("", 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 && !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("battle:noPokeballStrong"), null, () => { + this.scene.ui.showText("", 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else { + this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; + this.scene.currentBattle.turnCommands[this.fieldIndex]!.targets = targets; + if (this.fieldIndex) { + this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; + } + success = true; + } + } + } + break; + case Command.POKEMON: + case Command.RUN: + const isSwitch = command === Command.POKEMON; + 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("battle:noEscapeForce"), null, () => { + this.scene.ui.showText("", 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("battle:noEscapeTrainer"), null, () => { + this.scene.ui.showText("", 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else { + const trapTag = playerPokemon.findTag(t => t instanceof TrappedTag) as TrappedTag; + const trapped = new Utils.BooleanHolder(false); + const batonPass = isSwitch && args[0] as boolean; + const trappedAbMessages: string[] = []; + if (!batonPass) { + enemyField.forEach(enemyPokemon => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, enemyPokemon, trapped, playerPokemon, true, trappedAbMessages)); + } + if (batonPass || (!trapTag && !trapped.value)) { + this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch + ? { command: Command.POKEMON, cursor: cursor, args: args } + : { command: Command.RUN }; + success = true; + if (!isSwitch && this.fieldIndex) { + this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; + } + } else if (trapTag) { + if (trapTag.sourceMove === Moves.INGRAIN && trapTag.sourceId && this.scene.getPokemonById(trapTag.sourceId)?.isOfType(Type.GHOST)) { + success = true; + this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch + ? { command: Command.POKEMON, cursor: cursor, args: args } + : { command: Command.RUN }; + break; + } + if (!isSwitch) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + } + this.scene.ui.showText( + i18next.t("battle:noEscapePokemon", { + pokemonName: trapTag.sourceId && this.scene.getPokemonById(trapTag.sourceId) ? getPokemonNameWithAffix(this.scene.getPokemonById(trapTag.sourceId)!) : "", + moveName: trapTag.getMoveName(), + escapeVerb: isSwitch ? i18next.t("battle:escapeVerbSwitch") : i18next.t("battle:escapeVerbFlee") + }), + null, + () => { + this.scene.ui.showText("", 0); + if (!isSwitch) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + } + }, null, true); + } else if (trapped.value && trappedAbMessages.length > 0) { + if (!isSwitch) { + this.scene.ui.setMode(Mode.MESSAGE); + } + this.scene.ui.showText(trappedAbMessages[0], null, () => { + this.scene.ui.showText("", 0); + if (!isSwitch) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + } + }, null, true); + } + } + break; + } + + if (success!) { // TODO: is the bang correct? + this.end(); + } + + return success!; // TODO: is the bang correct? + } + + cancel() { + if (this.fieldIndex) { + this.scene.unshiftPhase(new CommandPhase(this.scene, 0)); + this.scene.unshiftPhase(new CommandPhase(this.scene, 1)); + this.end(); + } + } + + checkFightOverride(): boolean { + const pokemon = this.getPokemon(); + + const encoreTag = pokemon.getTag(EncoreTag) as EncoreTag; + + if (!encoreTag) { + return false; + } + + const moveIndex = pokemon.getMoveset().findIndex(m => m?.moveId === encoreTag.moveId); + + if (moveIndex === -1 || !pokemon.getMoveset()[moveIndex]!.isUsable(pokemon)) { // TODO: is this bang correct? + return false; + } + + this.handleCommand(Command.FIGHT, moveIndex, false); + + return true; + } + + getFieldIndex(): integer { + return this.fieldIndex; + } + + getPokemon(): PlayerPokemon { + return this.scene.getPlayerField()[this.fieldIndex]; + } + + end() { + this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + } +} diff --git a/src/phases/common-anim-phase.ts b/src/phases/common-anim-phase.ts new file mode 100644 index 00000000000..d3663abe3b6 --- /dev/null +++ b/src/phases/common-anim-phase.ts @@ -0,0 +1,26 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { CommonAnim, CommonBattleAnim } from "#app/data/battle-anims.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class CommonAnimPhase extends PokemonPhase { + private anim: CommonAnim | null; + private targetIndex: integer | undefined; + + constructor(scene: BattleScene, battlerIndex?: BattlerIndex, targetIndex?: BattlerIndex | undefined, anim?: CommonAnim) { + super(scene, battlerIndex); + + this.anim = anim!; // TODO: is this bang correct? + this.targetIndex = targetIndex; + } + + setAnimation(anim: CommonAnim) { + this.anim = anim; + } + + start() { + new CommonBattleAnim(this.anim, this.getPokemon(), this.targetIndex !== undefined ? (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField())[this.targetIndex] : this.getPokemon()).play(this.scene, () => { + this.end(); + }); + } +} diff --git a/src/phases/damage-phase.ts b/src/phases/damage-phase.ts new file mode 100644 index 00000000000..9f63ce35cf2 --- /dev/null +++ b/src/phases/damage-phase.ts @@ -0,0 +1,84 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { BattleSpec } from "#app/enums/battle-spec.js"; +import { DamageResult, HitResult } from "#app/field/pokemon.js"; +import * as Utils from "#app/utils.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class DamagePhase extends PokemonPhase { + private amount: integer; + private damageResult: DamageResult; + private critical: boolean; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, amount: integer, damageResult?: DamageResult, critical: boolean = false) { + super(scene, battlerIndex); + + this.amount = amount; + this.damageResult = damageResult || HitResult.EFFECTIVE; + this.critical = critical; + } + + start() { + super.start(); + + if (this.damageResult === HitResult.ONE_HIT_KO) { + if (this.scene.moveAnimations) { + this.scene.toggleInvert(true); + } + this.scene.time.delayedCall(Utils.fixedInt(1000), () => { + this.scene.toggleInvert(false); + this.applyDamage(); + }); + return; + } + + this.applyDamage(); + } + + updateAmount(amount: integer): void { + this.amount = amount; + } + + applyDamage() { + switch (this.damageResult) { + case HitResult.EFFECTIVE: + this.scene.playSound("hit"); + break; + case HitResult.SUPER_EFFECTIVE: + case HitResult.ONE_HIT_KO: + this.scene.playSound("hit_strong"); + break; + case HitResult.NOT_VERY_EFFECTIVE: + this.scene.playSound("hit_weak"); + break; + } + + if (this.amount) { + this.scene.damageNumberHandler.add(this.getPokemon(), this.amount, this.damageResult, this.critical); + } + + if (this.damageResult !== HitResult.OTHER) { + const flashTimer = this.scene.time.addEvent({ + delay: 100, + repeat: 5, + startAt: 200, + callback: () => { + this.getPokemon().getSprite().setVisible(flashTimer.repeatCount % 2 === 0); + if (!flashTimer.repeatCount) { + this.getPokemon().updateInfo().then(() => this.end()); + } + } + }); + } else { + this.getPokemon().updateInfo().then(() => this.end()); + } + } + + override end() { + if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + this.scene.initFinalBossPhaseTwo(this.getPokemon()); + } else { + super.end(); + } + } +} diff --git a/src/egg-hatch-phase.ts b/src/phases/egg-hatch-phase.ts similarity index 95% rename from src/egg-hatch-phase.ts rename to src/phases/egg-hatch-phase.ts index 73c88cbde37..6f3f0b37905 100644 --- a/src/egg-hatch-phase.ts +++ b/src/phases/egg-hatch-phase.ts @@ -1,18 +1,17 @@ -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; +import BattleScene, { AnySound } from "#app/battle-scene.js"; +import { Egg, EGG_SEED } from "#app/data/egg.js"; +import { EggCountChangedEvent } from "#app/events/egg.js"; +import { PlayerPokemon } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { Phase } from "#app/phase.js"; +import { achvs } from "#app/system/achv.js"; +import EggCounterContainer from "#app/ui/egg-counter-container.js"; +import EggHatchSceneHandler from "#app/ui/egg-hatch-scene-handler.js"; +import PokemonInfoContainer from "#app/ui/pokemon-info-container.js"; +import { Mode } from "#app/ui/ui.js"; import i18next from "i18next"; -import { Phase } from "./phase"; -import BattleScene, { AnySound } from "./battle-scene"; -import * as Utils from "./utils"; -import { Mode } from "./ui/ui"; -import { EGG_SEED, Egg } from "./data/egg"; -import EggHatchSceneHandler from "./ui/egg-hatch-scene-handler"; -import { PlayerPokemon } from "./field/pokemon"; -import { achvs } from "./system/achv"; -import PokemonInfoContainer from "./ui/pokemon-info-container"; -import EggCounterContainer from "./ui/egg-counter-container"; -import { EggCountChangedEvent } from "./events/egg"; -import { getPokemonNameWithAffix } from "./messages"; - +import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; +import * as Utils from "#app/utils.js"; /** * Class that represents egg hatching */ diff --git a/src/phases/egg-lapse-phase.ts b/src/phases/egg-lapse-phase.ts new file mode 100644 index 00000000000..50d7106f229 --- /dev/null +++ b/src/phases/egg-lapse-phase.ts @@ -0,0 +1,35 @@ +import BattleScene from "#app/battle-scene.js"; +import { Egg } from "#app/data/egg.js"; +import { Phase } from "#app/phase.js"; +import i18next from "i18next"; +import Overrides from "#app/overrides"; +import { EggHatchPhase } from "./egg-hatch-phase"; + +export class EggLapsePhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + const eggsToHatch: Egg[] = this.scene.gameData.eggs.filter((egg: Egg) => { + return Overrides.EGG_IMMEDIATE_HATCH_OVERRIDE ? true : --egg.hatchWaves < 1; + }); + + let eggCount: integer = eggsToHatch.length; + + if (eggCount) { + this.scene.queueMessage(i18next.t("battle:eggHatching")); + + for (const egg of eggsToHatch) { + this.scene.unshiftPhase(new EggHatchPhase(this.scene, egg, eggCount)); + if (eggCount > 0) { + eggCount--; + } + } + + } + this.end(); + } +} diff --git a/src/phases/encounter-phase.ts b/src/phases/encounter-phase.ts new file mode 100644 index 00000000000..739bb1d93f1 --- /dev/null +++ b/src/phases/encounter-phase.ts @@ -0,0 +1,379 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattleType, BattlerIndex } from "#app/battle.js"; +import { applyAbAttrs, SyncEncounterNatureAbAttr } from "#app/data/ability.js"; +import { getCharVariantFromDialogue } from "#app/data/dialogue.js"; +import { TrainerSlot } from "#app/data/trainer-config.js"; +import { getRandomWeatherType } from "#app/data/weather.js"; +import { BattleSpec } from "#app/enums/battle-spec.js"; +import { PlayerGender } from "#app/enums/player-gender.js"; +import { Species } from "#app/enums/species.js"; +import { EncounterPhaseEvent } from "#app/events/battle-scene.js"; +import Pokemon, { FieldPosition } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { regenerateModifierPoolThresholds, ModifierPoolType } from "#app/modifier/modifier-type.js"; +import { IvScannerModifier, TurnHeldItemTransferModifier } from "#app/modifier/modifier.js"; +import { achvs } from "#app/system/achv.js"; +import { handleTutorial, Tutorial } from "#app/tutorial.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { BattlePhase } from "./battle-phase"; +import * as Utils from "#app/utils.js"; +import { CheckSwitchPhase } from "./check-switch-phase"; +import { GameOverPhase } from "./game-over-phase"; +import { PostSummonPhase } from "./post-summon-phase"; +import { ReturnPhase } from "./return-phase"; +import { ScanIvsPhase } from "./scan-ivs-phase"; +import { ShinySparklePhase } from "./shiny-sparkle-phase"; +import { SummonPhase } from "./summon-phase"; +import { ToggleDoublePositionPhase } from "./toggle-double-position-phase"; + +export class EncounterPhase extends BattlePhase { + private loaded: boolean; + + constructor(scene: BattleScene, loaded?: boolean) { + super(scene); + + this.loaded = !!loaded; + } + + start() { + super.start(); + + this.scene.updateGameInfo(); + + this.scene.initSession(); + + this.scene.eventTarget.dispatchEvent(new EncounterPhaseEvent()); + + // Failsafe if players somehow skip floor 200 in classic mode + if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex > 200) { + this.scene.unshiftPhase(new GameOverPhase(this.scene)); + } + + const loadEnemyAssets: Promise[] = []; + + const battle = this.scene.currentBattle; + + let totalBst = 0; + + battle.enemyLevels?.forEach((level, e) => { + if (!this.loaded) { + if (battle.battleType === BattleType.TRAINER) { + battle.enemyParty[e] = battle.trainer?.genPartyMember(e)!; // TODO:: is the bang correct here? + } else { + const enemySpecies = this.scene.randomSpecies(battle.waveIndex, level, true); + battle.enemyParty[e] = this.scene.addEnemyPokemon(enemySpecies, level, TrainerSlot.NONE, !!this.scene.getEncounterBossSegments(battle.waveIndex, level, enemySpecies)); + if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + battle.enemyParty[e].ivs = new Array(6).fill(31); + } + this.scene.getParty().slice(0, !battle.double ? 1 : 2).reverse().forEach(playerPokemon => { + applyAbAttrs(SyncEncounterNatureAbAttr, playerPokemon, null, battle.enemyParty[e]); + }); + } + } + const enemyPokemon = this.scene.getEnemyParty()[e]; + if (e < (battle.double ? 2 : 1)) { + enemyPokemon.setX(-66 + enemyPokemon.getFieldPositionOffset()[0]); + enemyPokemon.resetSummonData(); + } + + if (!this.loaded) { + this.scene.gameData.setPokemonSeen(enemyPokemon, true, battle.battleType === BattleType.TRAINER); + } + + if (enemyPokemon.species.speciesId === Species.ETERNATUS) { + if (this.scene.gameMode.isClassic && (battle.battleSpec === BattleSpec.FINAL_BOSS || this.scene.gameMode.isWaveFinal(battle.waveIndex))) { + if (battle.battleSpec !== BattleSpec.FINAL_BOSS) { + enemyPokemon.formIndex = 1; + enemyPokemon.updateScale(); + } + enemyPokemon.setBoss(); + } else if (!(battle.waveIndex % 1000)) { + enemyPokemon.formIndex = 1; + enemyPokemon.updateScale(); + const bossMBH = this.scene.findModifier(m => m instanceof TurnHeldItemTransferModifier && m.pokemonId === enemyPokemon.id, false) as TurnHeldItemTransferModifier; + this.scene.removeModifier(bossMBH!); + bossMBH?.setTransferrableFalse(); + this.scene.addEnemyModifier(bossMBH!); + } + } + + totalBst += enemyPokemon.getSpeciesForm().baseTotal; + + loadEnemyAssets.push(enemyPokemon.loadAssets()); + + console.log(getPokemonNameWithAffix(enemyPokemon), enemyPokemon.species.speciesId, enemyPokemon.stats); + }); + + if (this.scene.getParty().filter(p => p.isShiny()).length === 6) { + this.scene.validateAchv(achvs.SHINY_PARTY); + } + + if (battle.battleType === BattleType.TRAINER) { + loadEnemyAssets.push(battle.trainer?.loadAssets().then(() => battle.trainer?.initSprite())!); // TODO: is this bang correct? + } else { + // This block only applies for double battles to init the boss segments (idk why it's split up like this) + if (battle.enemyParty.filter(p => p.isBoss()).length > 1) { + for (const enemyPokemon of battle.enemyParty) { + // If the enemy pokemon is a boss and wasn't populated from data source, then set it up + if (enemyPokemon.isBoss() && !enemyPokemon.isPopulatedFromDataSource) { + enemyPokemon.setBoss(true, Math.ceil(enemyPokemon.bossSegments * (enemyPokemon.getSpeciesForm().baseTotal / totalBst))); + enemyPokemon.initBattleInfo(); + } + } + } + } + + Promise.all(loadEnemyAssets).then(() => { + battle.enemyParty.forEach((enemyPokemon, e) => { + if (e < (battle.double ? 2 : 1)) { + if (battle.battleType === BattleType.WILD) { + this.scene.field.add(enemyPokemon); + battle.seenEnemyPartyMemberIds.add(enemyPokemon.id); + const playerPokemon = this.scene.getPlayerPokemon(); + if (playerPokemon?.visible) { + this.scene.field.moveBelow(enemyPokemon as Pokemon, playerPokemon); + } + enemyPokemon.tint(0, 0.5); + } else if (battle.battleType === BattleType.TRAINER) { + enemyPokemon.setVisible(false); + this.scene.currentBattle.trainer?.tint(0, 0.5); + } + if (battle.double) { + enemyPokemon.setFieldPosition(e ? FieldPosition.RIGHT : FieldPosition.LEFT); + } + } + }); + + if (!this.loaded) { + regenerateModifierPoolThresholds(this.scene.getEnemyField(), battle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD); + this.scene.generateEnemyModifiers(); + } + + this.scene.ui.setMode(Mode.MESSAGE).then(() => { + if (!this.loaded) { + //@ts-ignore + this.scene.gameData.saveAll(this.scene, true, battle.waveIndex % 10 === 1 || this.scene.lastSavePlayTime >= 300).then(success => { // TODO: get rid of ts-ignore + this.scene.disableMenu = false; + if (!success) { + return this.scene.reset(true); + } + this.doEncounter(); + }); + } else { + this.doEncounter(); + } + }); + }); + } + + doEncounter() { + this.scene.playBgm(undefined, true); + this.scene.updateModifiers(false); + this.scene.setFieldScale(1); + + /*if (startingWave > 10) { + for (let m = 0; m < Math.min(Math.floor(startingWave / 10), 99); m++) + this.scene.addModifier(getPlayerModifierTypeOptionsForWave((m + 1) * 10, 1, this.scene.getParty())[0].type.newModifier(), true); + this.scene.updateModifiers(true); + }*/ + + for (const pokemon of this.scene.getParty()) { + if (pokemon) { + pokemon.resetBattleData(); + } + } + + if (!this.loaded) { + this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); + } + + const enemyField = this.scene.getEnemyField(); + this.scene.tweens.add({ + targets: [this.scene.arenaEnemy, this.scene.currentBattle.trainer, enemyField, this.scene.arenaPlayer, this.scene.trainer].flat(), + x: (_target, _key, value, fieldIndex: integer) => fieldIndex < 2 + (enemyField.length) ? value + 300 : value - 300, + duration: 2000, + onComplete: () => { + if (!this.tryOverrideForBattleSpec()) { + this.doEncounterCommon(); + } + } + }); + } + + getEncounterMessage(): string { + const enemyField = this.scene.getEnemyField(); + + if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + return i18next.t("battle:bossAppeared", { bossName: getPokemonNameWithAffix(enemyField[0])}); + } + + if (this.scene.currentBattle.battleType === BattleType.TRAINER) { + if (this.scene.currentBattle.double) { + return i18next.t("battle:trainerAppearedDouble", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); + + } else { + return i18next.t("battle:trainerAppeared", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }); + } + } + + return enemyField.length === 1 + ? i18next.t("battle:singleWildAppeared", { pokemonName: enemyField[0].getNameToRender() }) + : i18next.t("battle:multiWildAppeared", { pokemonName1: enemyField[0].getNameToRender(), pokemonName2: enemyField[1].getNameToRender() }); + } + + doEncounterCommon(showEncounterMessage: boolean = true) { + const enemyField = this.scene.getEnemyField(); + + if (this.scene.currentBattle.battleType === BattleType.WILD) { + enemyField.forEach(enemyPokemon => { + enemyPokemon.untint(100, "Sine.easeOut"); + enemyPokemon.cry(); + enemyPokemon.showInfo(); + if (enemyPokemon.isShiny()) { + this.scene.validateAchv(achvs.SEE_SHINY); + } + }); + this.scene.updateFieldScale(); + if (showEncounterMessage) { + this.scene.ui.showText(this.getEncounterMessage(), null, () => this.end(), 1500); + } else { + this.end(); + } + } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { + const trainer = this.scene.currentBattle.trainer; + trainer?.untint(100, "Sine.easeOut"); + trainer?.playAnim(); + + const doSummon = () => { + this.scene.currentBattle.started = true; + this.scene.playBgm(undefined); + this.scene.pbTray.showPbTray(this.scene.getParty()); + this.scene.pbTrayEnemy.showPbTray(this.scene.getEnemyParty()); + const doTrainerSummon = () => { + this.hideEnemyTrainer(); + const availablePartyMembers = this.scene.getEnemyParty().filter(p => !p.isFainted()).length; + this.scene.unshiftPhase(new SummonPhase(this.scene, 0, false)); + if (this.scene.currentBattle.double && availablePartyMembers > 1) { + this.scene.unshiftPhase(new SummonPhase(this.scene, 1, false)); + } + this.end(); + }; + if (showEncounterMessage) { + this.scene.ui.showText(this.getEncounterMessage(), null, doTrainerSummon, 1500, true); + } else { + doTrainerSummon(); + } + }; + + const encounterMessages = this.scene.currentBattle.trainer?.getEncounterMessages(); + + if (!encounterMessages?.length) { + doSummon(); + } else { + let message: string; + this.scene.executeWithSeedOffset(() => message = Utils.randSeedItem(encounterMessages), this.scene.currentBattle.waveIndex); + message = message!; // tell TS compiler it's defined now + const showDialogueAndSummon = () => { + this.scene.ui.showDialogue(message, trainer?.getName(TrainerSlot.NONE, true), null, () => { + this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => doSummon())); + }); + }; + if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { + this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(trainer?.getKey()!, getCharVariantFromDialogue(encounterMessages[0])).then(() => showDialogueAndSummon())); // TODO: is this bang correct? + } else { + showDialogueAndSummon(); + } + } + } + } + + end() { + const enemyField = this.scene.getEnemyField(); + + enemyField.forEach((enemyPokemon, e) => { + if (enemyPokemon.isShiny()) { + this.scene.unshiftPhase(new ShinySparklePhase(this.scene, BattlerIndex.ENEMY + e)); + } + }); + + if (this.scene.currentBattle.battleType !== BattleType.TRAINER) { + enemyField.map(p => this.scene.pushConditionalPhase(new PostSummonPhase(this.scene, p.getBattlerIndex()), () => { + // if there is not a player party, we can't continue + if (!this.scene.getParty()?.length) { + return false; + } + // how many player pokemon are on the field ? + const pokemonsOnFieldCount = this.scene.getParty().filter(p => p.isOnField()).length; + // if it's a 2vs1, there will never be a 2nd pokemon on our field even + const requiredPokemonsOnField = Math.min(this.scene.getParty().filter((p) => !p.isFainted()).length, 2); + // if it's a double, there should be 2, otherwise 1 + if (this.scene.currentBattle.double) { + return pokemonsOnFieldCount === requiredPokemonsOnField; + } + return pokemonsOnFieldCount === 1; + })); + const ivScannerModifier = this.scene.findModifier(m => m instanceof IvScannerModifier); + if (ivScannerModifier) { + enemyField.map(p => this.scene.pushPhase(new ScanIvsPhase(this.scene, p.getBattlerIndex(), Math.min(ivScannerModifier.getStackCount() * 2, 6)))); + } + } + + if (!this.loaded) { + const availablePartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()); + + if (!availablePartyMembers[0].isOnField()) { + this.scene.pushPhase(new SummonPhase(this.scene, 0)); + } + + if (this.scene.currentBattle.double) { + if (availablePartyMembers.length > 1) { + this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, true)); + if (!availablePartyMembers[1].isOnField()) { + this.scene.pushPhase(new SummonPhase(this.scene, 1)); + } + } + } else { + if (availablePartyMembers.length > 1 && availablePartyMembers[1].isOnField()) { + this.scene.pushPhase(new ReturnPhase(this.scene, 1)); + } + this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, false)); + } + + if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { + const minPartySize = this.scene.currentBattle.double ? 2 : 1; + if (availablePartyMembers.length > minPartySize) { + this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); + if (this.scene.currentBattle.double) { + this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); + } + } + } + } + handleTutorial(this.scene, Tutorial.Access_Menu).then(() => super.end()); + } + + tryOverrideForBattleSpec(): boolean { + switch (this.scene.currentBattle.battleSpec) { + case BattleSpec.FINAL_BOSS: + const enemy = this.scene.getEnemyPokemon(); + this.scene.ui.showText(this.getEncounterMessage(), null, () => { + const count = 5643853 + this.scene.gameData.gameStats.classicSessionsPlayed; + //The two lines below check if English ordinals (1st, 2nd, 3rd, Xth) are used and determine which one to use. + //Otherwise, it defaults to an empty string. + //As of 08-07-24: Spanish and Italian default to the English translations + const ordinalUse = ["en", "es", "it"]; + const currentLanguage = i18next.resolvedLanguage ?? "en"; + const ordinalIndex = (ordinalUse.includes(currentLanguage)) ? ["st", "nd", "rd"][((count + 90) % 100 - 10) % 10 - 1] ?? "th" : ""; + const cycleCount = count.toLocaleString() + ordinalIndex; + const encounterDialogue = i18next.t(`${(this.scene.gameData.gender === PlayerGender.FEMALE) ? "PGF" : "PGM"}battleSpecDialogue:encounter`, {cycleCount: cycleCount}); + this.scene.ui.showDialogue(encounterDialogue, enemy?.species.name, null, () => { + this.doEncounterCommon(false); + }); + }, 1500, true); + return true; + } + + return false; + } +} diff --git a/src/phases/end-card-phase.ts b/src/phases/end-card-phase.ts new file mode 100644 index 00000000000..0b70664b993 --- /dev/null +++ b/src/phases/end-card-phase.ts @@ -0,0 +1,40 @@ +import BattleScene from "#app/battle-scene.js"; +import { PlayerGender } from "#app/enums/player-gender.js"; +import { Phase } from "#app/phase.js"; +import { addTextObject, TextStyle } from "#app/ui/text.js"; +import i18next from "i18next"; + +export class EndCardPhase extends Phase { + public endCard: Phaser.GameObjects.Image; + public text: Phaser.GameObjects.Text; + + constructor(scene: BattleScene) { + super(scene); + } + + start(): void { + super.start(); + + this.scene.ui.getMessageHandler().bg.setVisible(false); + this.scene.ui.getMessageHandler().nameBoxContainer.setVisible(false); + + this.endCard = this.scene.add.image(0, 0, `end_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}`); + this.endCard.setOrigin(0); + this.endCard.setScale(0.5); + this.scene.field.add(this.endCard); + + this.text = addTextObject(this.scene, this.scene.game.canvas.width / 12, (this.scene.game.canvas.height / 6) - 16, i18next.t("battle:congratulations"), TextStyle.SUMMARY, { fontSize: "128px" }); + this.text.setOrigin(0.5); + this.scene.field.add(this.text); + + this.scene.ui.clearText(); + + this.scene.ui.fadeIn(1000).then(() => { + + this.scene.ui.showText("", null, () => { + this.scene.ui.getMessageHandler().bg.setVisible(true); + this.end(); + }, null, true); + }); + } +} diff --git a/src/phases/end-evolution-phase.ts b/src/phases/end-evolution-phase.ts new file mode 100644 index 00000000000..2a6d492a425 --- /dev/null +++ b/src/phases/end-evolution-phase.ts @@ -0,0 +1,16 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { Mode } from "#app/ui/ui.js"; + +export class EndEvolutionPhase extends Phase { + + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end()); + } +} diff --git a/src/phases/enemy-command-phase.ts b/src/phases/enemy-command-phase.ts new file mode 100644 index 00000000000..d7f553681c2 --- /dev/null +++ b/src/phases/enemy-command-phase.ts @@ -0,0 +1,86 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyCheckTrappedAbAttrs, CheckTrappedAbAttr } from "#app/data/ability.js"; +import { TrappedTag } from "#app/data/battler-tags.js"; +import { Command } from "#app/ui/command-ui-handler.js"; +import * as Utils from "#app/utils.js"; +import { FieldPhase } from "./field-phase"; + +/** + * Phase for determining an enemy AI's action for the next turn. + * During this phase, the enemy decides whether to switch (if it has a trainer) + * or to use a move from its moveset. + * + * For more information on how the Enemy AI works, see docs/enemy-ai.md + * @see {@linkcode Pokemon.getMatchupScore} + * @see {@linkcode EnemyPokemon.getNextMove} + */ +export class EnemyCommandPhase extends FieldPhase { + protected fieldIndex: integer; + + constructor(scene: BattleScene, fieldIndex: integer) { + super(scene); + + this.fieldIndex = fieldIndex; + } + + start() { + super.start(); + + const enemyPokemon = this.scene.getEnemyField()[this.fieldIndex]; + + const battle = this.scene.currentBattle; + + const trainer = battle.trainer; + + /** + * If the enemy has a trainer, decide whether or not the enemy should switch + * to another member in its party. + * + * This block compares the active enemy Pokemon's {@linkcode Pokemon.getMatchupScore | matchup score} + * against the active player Pokemon with the enemy party's other non-fainted Pokemon. If a party + * member's matchup score is 3x the active enemy's score (or 2x for "boss" trainers), + * the enemy will switch to that Pokemon. + */ + if (trainer && !enemyPokemon.getMoveQueue().length) { + const opponents = enemyPokemon.getOpponents(); + + const trapTag = enemyPokemon.findTag(t => t instanceof TrappedTag) as TrappedTag; + const trapped = new Utils.BooleanHolder(false); + opponents.forEach(playerPokemon => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, playerPokemon, trapped, enemyPokemon, true, [])); + if (!trapTag && !trapped.value) { + const partyMemberScores = trainer.getPartyMemberMatchupScores(enemyPokemon.trainerSlot, true); + + if (partyMemberScores.length) { + const matchupScores = opponents.map(opp => enemyPokemon.getMatchupScore(opp)); + const matchupScore = matchupScores.reduce((total, score) => total += score, 0) / matchupScores.length; + + const sortedPartyMemberScores = trainer.getSortedPartyMemberMatchupScores(partyMemberScores); + + const switchMultiplier = 1 - (battle.enemySwitchCounter ? Math.pow(0.1, (1 / battle.enemySwitchCounter)) : 0); + + if (sortedPartyMemberScores[0][1] * switchMultiplier >= matchupScore * (trainer.config.isBoss ? 2 : 3)) { + const index = trainer.getNextSummonIndex(enemyPokemon.trainerSlot, partyMemberScores); + + battle.turnCommands[this.fieldIndex + BattlerIndex.ENEMY] = + { command: Command.POKEMON, cursor: index, args: [false] }; + + battle.enemySwitchCounter++; + + return this.end(); + } + } + } + } + + /** Select a move to use (and a target to use it against, if applicable) */ + const nextMove = enemyPokemon.getNextMove(); + + this.scene.currentBattle.turnCommands[this.fieldIndex + BattlerIndex.ENEMY] = + { command: Command.FIGHT, move: nextMove }; + + this.scene.currentBattle.enemySwitchCounter = Math.max(this.scene.currentBattle.enemySwitchCounter - 1, 0); + + this.end(); + } +} diff --git a/src/phases/enemy-party-member-pokemon-phase.ts b/src/phases/enemy-party-member-pokemon-phase.ts new file mode 100644 index 00000000000..10af0913f93 --- /dev/null +++ b/src/phases/enemy-party-member-pokemon-phase.ts @@ -0,0 +1,13 @@ +import BattleScene from "#app/battle-scene.js"; +import { EnemyPokemon } from "#app/field/pokemon.js"; +import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; + +export abstract class EnemyPartyMemberPokemonPhase extends PartyMemberPokemonPhase { + constructor(scene: BattleScene, partyMemberIndex: integer) { + super(scene, partyMemberIndex, false); + } + + getEnemyPokemon(): EnemyPokemon { + return super.getPokemon() as EnemyPokemon; + } +} diff --git a/src/evolution-phase.ts b/src/phases/evolution-phase.ts similarity index 96% rename from src/evolution-phase.ts rename to src/phases/evolution-phase.ts index 7b50a6368f6..398450ec693 100644 --- a/src/evolution-phase.ts +++ b/src/phases/evolution-phase.ts @@ -1,16 +1,17 @@ import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { Phase } from "./phase"; -import BattleScene from "./battle-scene"; -import { SpeciesFormEvolution } from "./data/pokemon-evolutions"; -import EvolutionSceneHandler from "./ui/evolution-scene-handler"; -import * as Utils from "./utils"; -import { Mode } from "./ui/ui"; -import { LearnMovePhase } from "./phases"; -import { cos, sin } from "./field/anims"; -import { PlayerPokemon } from "./field/pokemon"; -import { getTypeRgb } from "./data/type"; +import { Phase } from "../phase"; +import BattleScene from "../battle-scene"; +import { SpeciesFormEvolution } from "../data/pokemon-evolutions"; +import EvolutionSceneHandler from "../ui/evolution-scene-handler"; +import * as Utils from "../utils"; +import { Mode } from "../ui/ui"; +import { cos, sin } from "../field/anims"; +import { PlayerPokemon } from "../field/pokemon"; +import { getTypeRgb } from "../data/type"; import i18next from "i18next"; -import { getPokemonNameWithAffix } from "./messages"; +import { getPokemonNameWithAffix } from "../messages"; +import { LearnMovePhase } from "./learn-move-phase"; +import { EndEvolutionPhase } from "./end-evolution-phase"; export class EvolutionPhase extends Phase { protected pokemon: PlayerPokemon; @@ -530,16 +531,3 @@ export class EvolutionPhase extends Phase { updateParticle(); } } - -export class EndEvolutionPhase extends Phase { - - constructor(scene: BattleScene) { - super(scene); - } - - start() { - super.start(); - - this.scene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end()); - } -} diff --git a/src/phases/exp-phase.ts b/src/phases/exp-phase.ts new file mode 100644 index 00000000000..9c2ba95d550 --- /dev/null +++ b/src/phases/exp-phase.ts @@ -0,0 +1,35 @@ +import BattleScene from "#app/battle-scene.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { ExpBoosterModifier } from "#app/modifier/modifier.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; +import { LevelUpPhase } from "./level-up-phase"; + +export class ExpPhase extends PlayerPartyMemberPokemonPhase { + private expValue: number; + + constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { + super(scene, partyMemberIndex); + + this.expValue = expValue; + } + + start() { + super.start(); + + const pokemon = this.getPokemon(); + const exp = new Utils.NumberHolder(this.expValue); + this.scene.applyModifiers(ExpBoosterModifier, true, exp); + exp.value = Math.floor(exp.value); + this.scene.ui.showText(i18next.t("battle:expGain", { pokemonName: getPokemonNameWithAffix(pokemon), exp: exp.value }), null, () => { + const lastLevel = pokemon.level; + pokemon.addExp(exp.value); + const newLevel = pokemon.level; + if (newLevel > lastLevel) { + this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, lastLevel, newLevel)); + } + pokemon.updateInfo().then(() => this.end()); + }, null, true); + } +} diff --git a/src/phases/faint-phase.ts b/src/phases/faint-phase.ts new file mode 100644 index 00000000000..f5a9061906e --- /dev/null +++ b/src/phases/faint-phase.ts @@ -0,0 +1,171 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex, BattleType } from "#app/battle.js"; +import { applyPostFaintAbAttrs, PostFaintAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr } from "#app/data/ability.js"; +import { BattlerTagLapseType } from "#app/data/battler-tags.js"; +import { battleSpecDialogue } from "#app/data/dialogue.js"; +import { allMoves, PostVictoryStatChangeAttr } from "#app/data/move.js"; +import { BattleSpec } from "#app/enums/battle-spec.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import { PokemonMove, EnemyPokemon, PlayerPokemon, HitResult } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { PokemonInstantReviveModifier } from "#app/modifier/modifier.js"; +import i18next from "i18next"; +import { DamagePhase } from "./damage-phase"; +import { PokemonPhase } from "./pokemon-phase"; +import { SwitchSummonPhase } from "./switch-summon-phase"; +import { ToggleDoublePositionPhase } from "./toggle-double-position-phase"; +import { GameOverPhase } from "./game-over-phase"; +import { SwitchPhase } from "./switch-phase"; +import { VictoryPhase } from "./victory-phase"; + +export class FaintPhase extends PokemonPhase { + private preventEndure: boolean; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, preventEndure?: boolean) { + super(scene, battlerIndex); + + this.preventEndure = preventEndure!; // TODO: is this bang correct? + } + + start() { + super.start(); + + if (!this.preventEndure) { + const instantReviveModifier = this.scene.applyModifier(PokemonInstantReviveModifier, this.player, this.getPokemon()) as PokemonInstantReviveModifier; + + if (instantReviveModifier) { + if (!--instantReviveModifier.stackCount) { + this.scene.removeModifier(instantReviveModifier); + } + this.scene.updateModifiers(this.player); + return this.end(); + } + } + + if (!this.tryOverrideForBattleSpec()) { + this.doFaint(); + } + } + + doFaint(): void { + const pokemon = this.getPokemon(); + + + // Track total times pokemon have been KO'd for supreme overlord/last respects + if (pokemon.isPlayer()) { + this.scene.currentBattle.playerFaints += 1; + } else { + this.scene.currentBattle.enemyFaints += 1; + } + + this.scene.queueMessage(i18next.t("battle:fainted", { pokemonNameWithAffix: getPokemonNameWithAffix(pokemon) }), null, true); + + if (pokemon.turnData?.attacksReceived?.length) { + const lastAttack = pokemon.turnData.attacksReceived[0]; + applyPostFaintAbAttrs(PostFaintAbAttr, pokemon, this.scene.getPokemonById(lastAttack.sourceId)!, new PokemonMove(lastAttack.move).getMove(), lastAttack.result); // TODO: is this bang correct? + } + + const alivePlayField = this.scene.getField(true); + alivePlayField.forEach(p => applyPostKnockOutAbAttrs(PostKnockOutAbAttr, p, pokemon)); + if (pokemon.turnData?.attacksReceived?.length) { + const defeatSource = this.scene.getPokemonById(pokemon.turnData.attacksReceived[0].sourceId); + if (defeatSource?.isOnField()) { + applyPostVictoryAbAttrs(PostVictoryAbAttr, defeatSource); + const pvmove = allMoves[pokemon.turnData.attacksReceived[0].move]; + const pvattrs = pvmove.getAttrs(PostVictoryStatChangeAttr); + if (pvattrs.length) { + for (const pvattr of pvattrs) { + pvattr.applyPostVictory(defeatSource, defeatSource, pvmove); + } + } + } + } + + if (this.player) { + /** The total number of Pokemon in the player's party that can legally fight */ + const legalPlayerPokemon = this.scene.getParty().filter(p => p.isAllowedInBattle()); + /** The total number of legal player Pokemon that aren't currently on the field */ + const legalPlayerPartyPokemon = legalPlayerPokemon.filter(p => !p.isActive(true)); + if (!legalPlayerPokemon.length) { + /** If the player doesn't have any legal Pokemon, end the game */ + this.scene.unshiftPhase(new GameOverPhase(this.scene)); + } else if (this.scene.currentBattle.double && legalPlayerPokemon.length === 1 && legalPlayerPartyPokemon.length === 0) { + /** + * If the player has exactly one Pokemon in total at this point in a double battle, and that Pokemon + * is already on the field, unshift a phase that moves that Pokemon to center position. + */ + this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + } else if (legalPlayerPartyPokemon.length > 0) { + /** + * If previous conditions weren't met, and the player has at least 1 legal Pokemon off the field, + * push a phase that prompts the player to summon a Pokemon from their party. + */ + this.scene.pushPhase(new SwitchPhase(this.scene, this.fieldIndex, "faint", false)); + } + } else { + this.scene.unshiftPhase(new VictoryPhase(this.scene, this.battlerIndex)); + if (this.scene.currentBattle.battleType === BattleType.TRAINER) { + const hasReservePartyMember = !!this.scene.getEnemyParty().filter(p => p.isActive() && !p.isOnField() && p.trainerSlot === (pokemon as EnemyPokemon).trainerSlot).length; + if (hasReservePartyMember) { + this.scene.pushPhase(new SwitchSummonPhase(this.scene, this.fieldIndex, -1, false, false, false)); + } + } + } + + // in double battles redirect potential moves off fainted pokemon + if (this.scene.currentBattle.double) { + const allyPokemon = pokemon.getAlly(); + this.scene.redirectPokemonMoves(pokemon, allyPokemon); + } + + pokemon.lapseTags(BattlerTagLapseType.FAINT); + this.scene.getField(true).filter(p => p !== pokemon).forEach(p => p.removeTagsBySourceId(pokemon.id)); + + pokemon.faintCry(() => { + if (pokemon instanceof PlayerPokemon) { + pokemon.addFriendship(-10); + } + pokemon.hideInfo(); + this.scene.playSound("faint"); + this.scene.tweens.add({ + targets: pokemon, + duration: 500, + y: pokemon.y + 150, + ease: "Sine.easeIn", + onComplete: () => { + pokemon.setVisible(false); + pokemon.y -= 150; + pokemon.trySetStatus(StatusEffect.FAINT); + if (pokemon.isPlayer()) { + this.scene.currentBattle.removeFaintedParticipant(pokemon as PlayerPokemon); + } else { + this.scene.addFaintedEnemyScore(pokemon as EnemyPokemon); + this.scene.currentBattle.addPostBattleLoot(pokemon as EnemyPokemon); + } + this.scene.field.remove(pokemon); + this.end(); + } + }); + }); + } + + tryOverrideForBattleSpec(): boolean { + switch (this.scene.currentBattle.battleSpec) { + case BattleSpec.FINAL_BOSS: + if (!this.player) { + const enemy = this.getPokemon(); + if (enemy.formIndex) { + this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].secondStageWin, enemy.species.name, null, () => this.doFaint()); + } else { + // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase + enemy.hp++; + this.scene.unshiftPhase(new DamagePhase(this.scene, enemy.getBattlerIndex(), 0, HitResult.OTHER)); + this.end(); + } + return true; + } + } + + return false; + } +} diff --git a/src/phases/field-phase.ts b/src/phases/field-phase.ts new file mode 100644 index 00000000000..a9622271f14 --- /dev/null +++ b/src/phases/field-phase.ts @@ -0,0 +1,44 @@ +import { BattlerIndex } from "#app/battle.js"; +import { TrickRoomTag } from "#app/data/arena-tag.js"; +import { Stat } from "#app/enums/stat.js"; +import Pokemon from "#app/field/pokemon.js"; +import { BattlePhase } from "./battle-phase"; +import * as Utils from "#app/utils.js"; + +type PokemonFunc = (pokemon: Pokemon) => void; + +export abstract class FieldPhase extends BattlePhase { + getOrder(): BattlerIndex[] { + const playerField = this.scene.getPlayerField().filter(p => p.isActive()) as Pokemon[]; + const enemyField = this.scene.getEnemyField().filter(p => p.isActive()) as Pokemon[]; + + // We shuffle the list before sorting so speed ties produce random results + let orderedTargets: Pokemon[] = playerField.concat(enemyField); + // We seed it with the current turn to prevent an inconsistency where it + // was varying based on how long since you last reloaded + this.scene.executeWithSeedOffset(() => { + orderedTargets = Utils.randSeedShuffle(orderedTargets); + }, this.scene.currentBattle.turn, this.scene.waveSeed); + + orderedTargets.sort((a: Pokemon, b: Pokemon) => { + const aSpeed = a?.getBattleStat(Stat.SPD) || 0; + const bSpeed = b?.getBattleStat(Stat.SPD) || 0; + + return bSpeed - aSpeed; + }); + + const speedReversed = new Utils.BooleanHolder(false); + this.scene.arena.applyTags(TrickRoomTag, speedReversed); + + if (speedReversed.value) { + orderedTargets = orderedTargets.reverse(); + } + + return orderedTargets.map(t => t.getFieldIndex() + (!t.isPlayer() ? BattlerIndex.ENEMY : 0)); + } + + executeForAll(func: PokemonFunc): void { + const field = this.scene.getField(true).filter(p => p.summonData); + field.forEach(pokemon => func(pokemon)); + } +} diff --git a/src/form-change-phase.ts b/src/phases/form-change-phase.ts similarity index 57% rename from src/form-change-phase.ts rename to src/phases/form-change-phase.ts index 5acbc4fb77c..88e0dd00ce1 100644 --- a/src/form-change-phase.ts +++ b/src/phases/form-change-phase.ts @@ -1,17 +1,14 @@ -import BattleScene from "./battle-scene"; -import * as Utils from "./utils"; -import { SpeciesFormKey } from "./data/pokemon-species"; -import { achvs } from "./system/achv"; -import { SpeciesFormChange, getSpeciesFormChangeMessage } from "./data/pokemon-forms"; -import { EndEvolutionPhase, EvolutionPhase } from "./evolution-phase"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "./field/pokemon"; -import { Mode } from "./ui/ui"; -import PartyUiHandler from "./ui/party-ui-handler"; -import { BattleSpec } from "#enums/battle-spec"; -import { BattlePhase, MovePhase, PokemonHealPhase } from "./phases"; -import { getTypeRgb } from "./data/type"; -import { getPokemonNameWithAffix } from "./messages"; -import { SemiInvulnerableTag } from "./data/battler-tags"; +import BattleScene from "../battle-scene"; +import * as Utils from "../utils"; +import { SpeciesFormKey } from "../data/pokemon-species"; +import { achvs } from "../system/achv"; +import { SpeciesFormChange, getSpeciesFormChangeMessage } from "../data/pokemon-forms"; +import { PlayerPokemon } from "../field/pokemon"; +import { Mode } from "../ui/ui"; +import PartyUiHandler from "../ui/party-ui-handler"; +import { getPokemonNameWithAffix } from "../messages"; +import { EndEvolutionPhase } from "./end-evolution-phase"; +import { EvolutionPhase } from "./evolution-phase"; export class FormChangePhase extends EvolutionPhase { private formChange: SpeciesFormChange; @@ -175,126 +172,3 @@ export class FormChangePhase extends EvolutionPhase { } } } - -export class QuietFormChangePhase extends BattlePhase { - protected pokemon: Pokemon; - protected formChange: SpeciesFormChange; - - constructor(scene: BattleScene, pokemon: Pokemon, formChange: SpeciesFormChange) { - super(scene); - this.pokemon = pokemon; - this.formChange = formChange; - } - - start(): void { - super.start(); - - if (this.pokemon.formIndex === this.pokemon.species.forms.findIndex(f => f.formKey === this.formChange.formKey)) { - return this.end(); - } - - const preName = getPokemonNameWithAffix(this.pokemon); - - if (!this.pokemon.isOnField() || this.pokemon.getTag(SemiInvulnerableTag)) { - this.pokemon.changeForm(this.formChange).then(() => { - this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); - }); - return; - } - - const getPokemonSprite = () => { - const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, "pkmn__sub"); - sprite.setOrigin(0.5, 1); - sprite.play(this.pokemon.getBattleSpriteKey()).stop(); - sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); - [ "spriteColors", "fusionSpriteColors" ].map(k => { - if (this.pokemon.summonData?.speciesForm) { - k += "Base"; - } - sprite.pipelineData[k] = this.pokemon.getSprite().pipelineData[k]; - }); - this.scene.field.add(sprite); - return sprite; - }; - - const [ pokemonTintSprite, pokemonFormTintSprite ] = [ getPokemonSprite(), getPokemonSprite() ]; - - this.pokemon.getSprite().on("animationupdate", (_anim, frame) => { - if (frame.textureKey === pokemonTintSprite.texture.key) { - pokemonTintSprite.setFrame(frame.textureFrame); - } else { - pokemonFormTintSprite.setFrame(frame.textureFrame); - } - }); - - pokemonTintSprite.setAlpha(0); - pokemonTintSprite.setTintFill(0xFFFFFF); - pokemonFormTintSprite.setVisible(false); - pokemonFormTintSprite.setTintFill(0xFFFFFF); - - this.scene.playSound("PRSFX- Transform"); - - this.scene.tweens.add({ - targets: pokemonTintSprite, - alpha: 1, - duration: 1000, - ease: "Cubic.easeIn", - onComplete: () => { - this.pokemon.setVisible(false); - this.pokemon.changeForm(this.formChange).then(() => { - pokemonFormTintSprite.setScale(0.01); - pokemonFormTintSprite.play(this.pokemon.getBattleSpriteKey()).stop(); - pokemonFormTintSprite.setVisible(true); - this.scene.tweens.add({ - targets: pokemonTintSprite, - delay: 250, - scale: 0.01, - ease: "Cubic.easeInOut", - duration: 500, - onComplete: () => pokemonTintSprite.destroy() - }); - this.scene.tweens.add({ - targets: pokemonFormTintSprite, - delay: 250, - scale: this.pokemon.getSpriteScale(), - ease: "Cubic.easeInOut", - duration: 500, - onComplete: () => { - this.pokemon.setVisible(true); - this.scene.tweens.add({ - targets: pokemonFormTintSprite, - delay: 250, - alpha: 0, - ease: "Cubic.easeOut", - duration: 1000, - onComplete: () => { - pokemonTintSprite.setVisible(false); - this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); - } - }); - } - }); - }); - } - }); - } - - end(): void { - if (this.pokemon.scene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon instanceof EnemyPokemon) { - this.scene.playBgm(); - this.scene.unshiftPhase(new PokemonHealPhase(this.scene, this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true)); - this.pokemon.findAndRemoveTags(() => true); - this.pokemon.bossSegments = 5; - this.pokemon.bossSegmentIndex = 4; - this.pokemon.initBattleInfo(); - this.pokemon.cry(); - - const movePhase = this.scene.findPhase(p => p instanceof MovePhase && p.pokemon === this.pokemon) as MovePhase; - if (movePhase) { - movePhase.cancel(); - } - } - - super.end(); - } -} diff --git a/src/phases/game-over-modifier-reward-phase.ts b/src/phases/game-over-modifier-reward-phase.ts new file mode 100644 index 00000000000..e2f4d134cba --- /dev/null +++ b/src/phases/game-over-modifier-reward-phase.ts @@ -0,0 +1,27 @@ +import BattleScene from "#app/battle-scene.js"; +import { ModifierTypeFunc } from "#app/modifier/modifier-type.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { ModifierRewardPhase } from "./modifier-reward-phase"; + +export class GameOverModifierRewardPhase extends ModifierRewardPhase { + constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { + super(scene, modifierTypeFunc); + } + + doReward(): Promise { + return new Promise(resolve => { + const newModifier = this.modifierType.newModifier(); + this.scene.addModifier(newModifier).then(() => { + this.scene.playSound("level_up_fanfare"); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.fadeIn(250).then(() => { + this.scene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => { + this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + resolve(); + }, null, true, 1500); + }); + }); + }); + } +} diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts new file mode 100644 index 00000000000..4beed489f29 --- /dev/null +++ b/src/phases/game-over-phase.ts @@ -0,0 +1,203 @@ +import { clientSessionId } from "#app/account.js"; +import BattleScene from "#app/battle-scene.js"; +import { BattleType } from "#app/battle.js"; +import { miscDialogue, getCharVariantFromDialogue } from "#app/data/dialogue.js"; +import { pokemonEvolutions } from "#app/data/pokemon-evolutions.js"; +import PokemonSpecies, { getPokemonSpecies } from "#app/data/pokemon-species.js"; +import { trainerConfigs } from "#app/data/trainer-config.js"; +import { PlayerGender } from "#app/enums/player-gender.js"; +import { TrainerType } from "#app/enums/trainer-type.js"; +import Pokemon from "#app/field/pokemon.js"; +import { modifierTypes } from "#app/modifier/modifier-type.js"; +import { achvs, ChallengeAchv } from "#app/system/achv.js"; +import { Unlockables } from "#app/system/unlockables.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; +import { CheckSwitchPhase } from "./check-switch-phase"; +import { EncounterPhase } from "./encounter-phase"; +import { GameOverModifierRewardPhase } from "./game-over-modifier-reward-phase"; +import { RibbonModifierRewardPhase } from "./ribbon-modifier-reward-phase"; +import { SummonPhase } from "./summon-phase"; +import { EndCardPhase } from "./end-card-phase"; +import { PostGameOverPhase } from "./post-game-over-phase"; +import { UnlockPhase } from "./unlock-phase"; + +export class GameOverPhase extends BattlePhase { + private victory: boolean; + private firstRibbons: PokemonSpecies[] = []; + + constructor(scene: BattleScene, victory?: boolean) { + super(scene); + + this.victory = !!victory; + } + + start() { + super.start(); + + // Failsafe if players somehow skip floor 200 in classic mode + if (this.scene.gameMode.isClassic && this.scene.currentBattle.waveIndex > 200) { + this.victory = true; + } + + if (this.victory && this.scene.gameMode.isEndless) { + this.scene.ui.showDialogue(i18next.t("PGMmiscDialogue:ending_endless"), i18next.t("PGMmiscDialogue:ending_name"), 0, () => this.handleGameOver()); + } else if (this.victory || !this.scene.enableRetries) { + this.handleGameOver(); + } else { + this.scene.ui.showText(i18next.t("battle:retryBattle"), null, () => { + this.scene.ui.setMode(Mode.CONFIRM, () => { + this.scene.ui.fadeOut(1250).then(() => { + this.scene.reset(); + this.scene.clearPhaseQueue(); + this.scene.gameData.loadSession(this.scene, this.scene.sessionSlotId).then(() => { + this.scene.pushPhase(new EncounterPhase(this.scene, true)); + + const availablePartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()).length; + + this.scene.pushPhase(new SummonPhase(this.scene, 0)); + if (this.scene.currentBattle.double && availablePartyMembers > 1) { + this.scene.pushPhase(new SummonPhase(this.scene, 1)); + } + if (this.scene.currentBattle.waveIndex > 1 && this.scene.currentBattle.battleType !== BattleType.TRAINER) { + this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); + if (this.scene.currentBattle.double && availablePartyMembers > 1) { + this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); + } + } + + this.scene.ui.fadeIn(1250); + this.end(); + }); + }); + }, () => this.handleGameOver(), false, 0, 0, 1000); + }); + } + } + + handleGameOver(): void { + const doGameOver = (newClear: boolean) => { + this.scene.disableMenu = true; + this.scene.time.delayedCall(1000, () => { + let firstClear = false; + if (this.victory && newClear) { + if (this.scene.gameMode.isClassic) { + firstClear = this.scene.validateAchv(achvs.CLASSIC_VICTORY); + this.scene.validateAchv(achvs.UNEVOLVED_CLASSIC_VICTORY); + this.scene.gameData.gameStats.sessionsWon++; + for (const 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 && newClear) { + this.scene.gameData.gameStats.dailyRunSessionsWon++; + } + } + const fadeDuration = this.victory ? 10000 : 5000; + this.scene.fadeOutBgm(fadeDuration, true); + const activeBattlers = this.scene.getField().filter(p => p?.isActive(true)); + activeBattlers.map(p => p.hideInfo()); + this.scene.ui.fadeOut(fadeDuration).then(() => { + activeBattlers.map(a => a.setVisible(false)); + this.scene.setFieldScale(1, true); + this.scene.clearPhaseQueue(); + this.scene.ui.clearText(); + + if (this.victory && this.scene.gameMode.isChallenge) { + this.scene.gameMode.challenges.forEach(c => this.scene.validateAchvs(ChallengeAchv, c)); + } + + const clear = (endCardPhase?: EndCardPhase) => { + if (newClear) { + this.handleUnlocks(); + } + if (this.victory && newClear) { + for (const species of this.firstRibbons) { + this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species)); + } + if (!firstClear) { + this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); + } + } + this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); + this.end(); + }; + + if (this.victory && this.scene.gameMode.isClassic) { + const message = miscDialogue.ending[this.scene.gameData.gender === PlayerGender.FEMALE ? 0 : 1]; + + if (!this.scene.ui.shouldSkipDialogue(message)) { + this.scene.ui.fadeIn(500).then(() => { + this.scene.charSprite.showCharacter(`rival_${this.scene.gameData.gender === PlayerGender.FEMALE ? "m" : "f"}`, getCharVariantFromDialogue(miscDialogue.ending[this.scene.gameData.gender === PlayerGender.FEMALE ? 0 : 1])).then(() => { + this.scene.ui.showDialogue(message, this.scene.gameData.gender === PlayerGender.FEMALE ? trainerConfigs[TrainerType.RIVAL].name : trainerConfigs[TrainerType.RIVAL].nameFemale, null, () => { + this.scene.ui.fadeOut(500).then(() => { + this.scene.charSprite.hide().then(() => { + const endCardPhase = new EndCardPhase(this.scene); + this.scene.unshiftPhase(endCardPhase); + clear(endCardPhase); + }); + }); + }); + }); + }); + } else { + const endCardPhase = new EndCardPhase(this.scene); + this.scene.unshiftPhase(endCardPhase); + clear(endCardPhase); + } + } else { + clear(); + } + }); + }); + }; + + /* Added a local check to see if the game is running offline on victory + If Online, execute apiFetch as intended + If Offline, execute offlineNewClear(), a localStorage implementation of newClear daily run checks */ + if (this.victory) { + if (!Utils.isLocal) { + Utils.apiFetch(`savedata/session/newclear?slot=${this.scene.sessionSlotId}&clientSessionId=${clientSessionId}`, true) + .then(response => response.json()) + .then(newClear => doGameOver(newClear)); + } else { + this.scene.gameData.offlineNewClear(this.scene).then(result => { + doGameOver(result); + }); + } + } else { + doGameOver(false); + } + } + + handleUnlocks(): void { + if (this.victory && this.scene.gameMode.isClassic) { + if (!this.scene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { + this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.ENDLESS_MODE)); + } + if (this.scene.getParty().filter(p => p.fusionSpecies).length && !this.scene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE]) { + this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.SPLICED_ENDLESS_MODE)); + } + if (!this.scene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE]) { + this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.MINI_BLACK_HOLE)); + } + if (!this.scene.gameData.unlocks[Unlockables.EVIOLITE] && this.scene.getParty().some(p => p.getSpeciesForm(true).speciesId in pokemonEvolutions)) { + this.scene.unshiftPhase(new UnlockPhase(this.scene, Unlockables.EVIOLITE)); + } + } + } + + 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))); + } + } +} diff --git a/src/phases/hide-party-exp-bar-phase.ts b/src/phases/hide-party-exp-bar-phase.ts new file mode 100644 index 00000000000..c2c9d96462e --- /dev/null +++ b/src/phases/hide-party-exp-bar-phase.ts @@ -0,0 +1,14 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlePhase } from "./battle-phase"; + +export class HidePartyExpBarPhase extends BattlePhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.partyExpBar.hide().then(() => this.end()); + } +} diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts new file mode 100644 index 00000000000..e30fc0c3d10 --- /dev/null +++ b/src/phases/learn-move-phase.ts @@ -0,0 +1,103 @@ +import BattleScene from "#app/battle-scene.js"; +import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims.js"; +import { allMoves } from "#app/data/move.js"; +import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms.js"; +import { Moves } from "#app/enums/moves.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import EvolutionSceneHandler from "#app/ui/evolution-scene-handler.js"; +import { SummaryUiMode } from "#app/ui/summary-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; + +export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { + private moveId: Moves; + + constructor(scene: BattleScene, partyMemberIndex: integer, moveId: Moves) { + super(scene, partyMemberIndex); + + this.moveId = moveId; + } + + start() { + super.start(); + + const pokemon = this.getPokemon(); + const move = allMoves[this.moveId]; + + const existingMoveIndex = pokemon.getMoveset().findIndex(m => m?.moveId === move.id); + + if (existingMoveIndex > -1) { + return this.end(); + } + + const emptyMoveIndex = pokemon.getMoveset().length < 4 + ? pokemon.getMoveset().length + : pokemon.getMoveset().findIndex(m => m === null); + + const messageMode = this.scene.ui.getHandler() instanceof EvolutionSceneHandler + ? Mode.EVOLUTION_SCENE + : Mode.MESSAGE; + + if (emptyMoveIndex > -1) { + pokemon.setMove(emptyMoveIndex, this.moveId); + initMoveAnim(this.scene, this.moveId).then(() => { + loadMoveAnimAssets(this.scene, [this.moveId], true) + .then(() => { + this.scene.ui.setMode(messageMode).then(() => { + this.scene.playSound("level_up_fanfare"); + this.scene.ui.showText(i18next.t("battle:learnMove", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), null, () => { + this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true); + this.end(); + }, messageMode === Mode.EVOLUTION_SCENE ? 1000 : null, true); + }); + }); + }); + } else { + this.scene.ui.setMode(messageMode).then(() => { + this.scene.ui.showText(i18next.t("battle:learnMovePrompt", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), null, () => { + this.scene.ui.showText(i18next.t("battle:learnMoveLimitReached", { pokemonName: getPokemonNameWithAffix(pokemon) }), 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("battle:learnMoveStopTeaching", { moveName: move.name }), null, () => { + this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { + this.scene.ui.setMode(messageMode); + this.scene.ui.showText(i18next.t("battle:learnMoveNotLearned", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: move.name }), null, () => this.end(), null, true); + }, () => { + this.scene.ui.setMode(messageMode); + this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, this.moveId)); + this.end(); + }); + }); + }); + }; + this.scene.ui.setModeWithoutClear(Mode.CONFIRM, () => { + this.scene.ui.setMode(messageMode); + 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(); + return; + } + this.scene.ui.setMode(messageMode).then(() => { + this.scene.ui.showText(i18next.t("battle:countdownPoof"), null, () => { + this.scene.ui.showText(i18next.t("battle:learnMoveForgetSuccess", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: pokemon.moveset[moveIndex]!.getName() }), null, () => { // TODO: is the bang correct? + this.scene.ui.showText(i18next.t("battle:learnMoveAnd"), null, () => { + pokemon.setMove(moveIndex, Moves.NONE); + this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, this.moveId)); + this.end(); + }, null, true); + }, null, true); + }, null, true); + }); + }); + }, null, true); + }, noHandler); + }); + }, null, true); + }, null, true); + }); + } + } +} diff --git a/src/phases/level-cap-phase.ts b/src/phases/level-cap-phase.ts new file mode 100644 index 00000000000..4a07e7d131e --- /dev/null +++ b/src/phases/level-cap-phase.ts @@ -0,0 +1,20 @@ +import BattleScene from "#app/battle-scene.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { FieldPhase } from "./field-phase"; + +export class LevelCapPhase extends FieldPhase { + constructor(scene: BattleScene) { + super(scene); + } + + start(): void { + super.start(); + + this.scene.ui.setMode(Mode.MESSAGE).then(() => { + this.scene.playSound("level_up_fanfare"); + this.scene.ui.showText(i18next.t("battle:levelCapUp", { levelCap: this.scene.getMaxExpLevel() }), null, () => this.end(), null, true); + this.executeForAll(pokemon => pokemon.updateInfo(true)); + }); + } +} diff --git a/src/phases/level-up-phase.ts b/src/phases/level-up-phase.ts new file mode 100644 index 00000000000..a8a6b8f3d80 --- /dev/null +++ b/src/phases/level-up-phase.ts @@ -0,0 +1,59 @@ +import BattleScene from "#app/battle-scene.js"; +import { ExpNotification } from "#app/enums/exp-notification.js"; +import { EvolutionPhase } from "#app/phases/evolution-phase.js"; +import { PlayerPokemon } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { LevelAchv } from "#app/system/achv.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; +import { LearnMovePhase } from "./learn-move-phase"; + +export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { + private lastLevel: integer; + private level: integer; + + constructor(scene: BattleScene, partyMemberIndex: integer, lastLevel: integer, level: integer) { + super(scene, partyMemberIndex); + + this.lastLevel = lastLevel; + this.level = level; + this.scene = scene; + } + + start() { + super.start(); + + if (this.level > this.scene.gameData.gameStats.highestLevel) { + this.scene.gameData.gameStats.highestLevel = this.level; + } + + this.scene.validateAchvs(LevelAchv, new Utils.IntegerHolder(this.level)); + + const pokemon = this.getPokemon(); + const prevStats = pokemon.stats.slice(0); + pokemon.calculateStats(); + pokemon.updateInfo(); + if (this.scene.expParty === ExpNotification.DEFAULT) { + this.scene.playSound("level_up_fanfare"); + this.scene.ui.showText(i18next.t("battle:levelUp", { pokemonName: getPokemonNameWithAffix(this.getPokemon()), level: this.level }), null, () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()), null, true); + } else if (this.scene.expParty === ExpNotification.SKIP) { + this.end(); + } else { + // we still want to display the stats if activated + this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()); + } + if (this.lastLevel < 100) { // this feels like an unnecessary optimization + const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); + for (const lm of levelMoves) { + this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, lm[1])); + } + } + if (!pokemon.pauseEvolutions) { + const evolution = pokemon.getEvolution(); + if (evolution) { + this.scene.unshiftPhase(new EvolutionPhase(this.scene, pokemon as PlayerPokemon, evolution, this.lastLevel)); + } + } + } +} diff --git a/src/phases/login-phase.ts b/src/phases/login-phase.ts new file mode 100644 index 00000000000..b58cc9bca1f --- /dev/null +++ b/src/phases/login-phase.ts @@ -0,0 +1,116 @@ +import { updateUserInfo } from "#app/account.js"; +import BattleScene, { bypassLogin } from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { handleTutorial, Tutorial } from "#app/tutorial.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next, { t } from "i18next"; +import * as Utils from "#app/utils.js"; +import { SelectGenderPhase } from "./select-gender-phase"; +import { UnavailablePhase } from "./unavailable-phase"; + +export class LoginPhase extends Phase { + private showText: boolean; + + constructor(scene: BattleScene, showText?: boolean) { + super(scene); + + this.showText = showText === undefined || !!showText; + } + + start(): void { + super.start(); + + const hasSession = !!Utils.getCookie(Utils.sessionIdKey); + + this.scene.ui.setMode(Mode.LOADING, { buttonActions: [] }); + Utils.executeIf(bypassLogin || hasSession, updateUserInfo).then(response => { + const success = response ? response[0] : false; + const statusCode = response ? response[1] : null; + if (!success) { + if (!statusCode || statusCode === 400) { + if (this.showText) { + this.scene.ui.showText(i18next.t("menu:logInOrCreateAccount")); + } + + this.scene.playSound("menu_open"); + + const loadData = () => { + updateUserInfo().then(success => { + if (!success[0]) { + Utils.removeCookie(Utils.sessionIdKey); + this.scene.reset(true, true); + return; + } + this.scene.gameData.loadSystem().then(() => this.end()); + }); + }; + + this.scene.ui.setMode(Mode.LOGIN_FORM, { + buttonActions: [ + () => { + this.scene.ui.playSelect(); + loadData(); + }, () => { + this.scene.playSound("menu_open"); + this.scene.ui.setMode(Mode.REGISTRATION_FORM, { + buttonActions: [ + () => { + this.scene.ui.playSelect(); + updateUserInfo().then(success => { + if (!success[0]) { + Utils.removeCookie(Utils.sessionIdKey); + this.scene.reset(true, true); + return; + } + this.end(); + } ); + }, () => { + this.scene.unshiftPhase(new LoginPhase(this.scene, false)); + this.end(); + } + ] + }); + }, () => { + const redirectUri = encodeURIComponent(`${import.meta.env.VITE_SERVER_URL}/auth/discord/callback`); + const discordId = import.meta.env.VITE_DISCORD_CLIENT_ID; + const discordUrl = `https://discord.com/api/oauth2/authorize?client_id=${discordId}&redirect_uri=${redirectUri}&response_type=code&scope=identify&prompt=none`; + window.open(discordUrl, "_self"); + }, () => { + const redirectUri = encodeURIComponent(`${import.meta.env.VITE_SERVER_URL}/auth/google/callback`); + const googleId = import.meta.env.VITE_GOOGLE_CLIENT_ID; + const googleUrl = `https://accounts.google.com/o/oauth2/auth?client_id=${googleId}&redirect_uri=${redirectUri}&response_type=code&scope=openid`; + window.open(googleUrl, "_self"); + } + ] + }); + } else if (statusCode === 401) { + Utils.removeCookie(Utils.sessionIdKey); + this.scene.reset(true, true); + } else { + this.scene.unshiftPhase(new UnavailablePhase(this.scene)); + super.end(); + } + return null; + } else { + this.scene.gameData.loadSystem().then(success => { + if (success || bypassLogin) { + this.end(); + } else { + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(t("menu:failedToLoadSaveData")); + } + }); + } + }); + } + + end(): void { + this.scene.ui.setMode(Mode.MESSAGE); + + if (!this.scene.gameData.gender) { + this.scene.unshiftPhase(new SelectGenderPhase(this.scene)); + } + + handleTutorial(this.scene, Tutorial.Intro).then(() => super.end()); + } +} diff --git a/src/phases/message-phase.ts b/src/phases/message-phase.ts new file mode 100644 index 00000000000..46e907ae2ba --- /dev/null +++ b/src/phases/message-phase.ts @@ -0,0 +1,38 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; + +export class MessagePhase extends Phase { + private text: string; + private callbackDelay: integer | null; + private prompt: boolean | null; + private promptDelay: integer | null; + + constructor(scene: BattleScene, text: string, callbackDelay?: integer | null, prompt?: boolean | null, promptDelay?: integer | null) { + super(scene); + + this.text = text; + this.callbackDelay = callbackDelay!; // TODO: is this bang correct? + this.prompt = prompt!; // TODO: is this bang correct? + this.promptDelay = promptDelay!; // TODO: is this bang correct? + } + + start() { + super.start(); + + if (this.text.indexOf("$") > -1) { + const pageIndex = this.text.indexOf("$"); + this.scene.unshiftPhase(new MessagePhase(this.scene, this.text.slice(pageIndex + 1), this.callbackDelay, this.prompt, this.promptDelay)); + this.text = this.text.slice(0, pageIndex).trim(); + } + + this.scene.ui.showText(this.text, null, () => this.end(), this.callbackDelay || (this.prompt ? 0 : 1500), this.prompt, this.promptDelay); + } + + end() { + if (this.scene.abilityBar.shown) { + this.scene.abilityBar.hide(); + } + + super.end(); + } +} diff --git a/src/phases/modifier-reward-phase.ts b/src/phases/modifier-reward-phase.ts new file mode 100644 index 00000000000..4d083a367a6 --- /dev/null +++ b/src/phases/modifier-reward-phase.ts @@ -0,0 +1,30 @@ +import BattleScene from "#app/battle-scene.js"; +import { ModifierType, ModifierTypeFunc, getModifierType } from "#app/modifier/modifier-type.js"; +import i18next from "i18next"; +import { BattlePhase } from "./battle-phase"; + +export class ModifierRewardPhase extends BattlePhase { + protected modifierType: ModifierType; + + constructor(scene: BattleScene, modifierTypeFunc: ModifierTypeFunc) { + super(scene); + + this.modifierType = getModifierType(modifierTypeFunc); + } + + start() { + super.start(); + + this.doReward().then(() => this.end()); + } + + doReward(): Promise { + return new Promise(resolve => { + const newModifier = this.modifierType.newModifier(); + this.scene.addModifier(newModifier).then(() => { + this.scene.playSound("item_fanfare"); + this.scene.ui.showText(i18next.t("battle:rewardGain", { modifierName: newModifier?.type.name }), null, () => resolve(), null, true); + }); + }); + } +} diff --git a/src/phases/money-reward-phase.ts b/src/phases/money-reward-phase.ts new file mode 100644 index 00000000000..e0bff608972 --- /dev/null +++ b/src/phases/money-reward-phase.ts @@ -0,0 +1,34 @@ +import BattleScene from "#app/battle-scene.js"; +import { ArenaTagType } from "#app/enums/arena-tag-type.js"; +import { MoneyMultiplierModifier } from "#app/modifier/modifier.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; + +export class MoneyRewardPhase extends BattlePhase { + private moneyMultiplier: number; + + constructor(scene: BattleScene, moneyMultiplier: number) { + super(scene); + + this.moneyMultiplier = moneyMultiplier; + } + + start() { + const moneyAmount = new Utils.IntegerHolder(this.scene.getWaveMoneyAmount(this.moneyMultiplier)); + + this.scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + + if (this.scene.arena.getTag(ArenaTagType.HAPPY_HOUR)) { + moneyAmount.value *= 2; + } + + this.scene.addMoney(moneyAmount.value); + + const userLocale = navigator.language || "en-US"; + const formattedMoneyAmount = moneyAmount.value.toLocaleString(userLocale); + const message = i18next.t("battle:moneyWon", { moneyAmount: formattedMoneyAmount }); + + this.scene.ui.showText(message, null, () => this.end(), null, true); + } +} diff --git a/src/phases/move-anim-test-phase.ts b/src/phases/move-anim-test-phase.ts new file mode 100644 index 00000000000..7fb3c1d61e7 --- /dev/null +++ b/src/phases/move-anim-test-phase.ts @@ -0,0 +1,44 @@ +import BattleScene from "#app/battle-scene.js"; +import { initMoveAnim, loadMoveAnimAssets, MoveAnim } from "#app/data/battle-anims.js"; +import { allMoves, SelfStatusMove } from "#app/data/move.js"; +import { Moves } from "#app/enums/moves.js"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; + +export class MoveAnimTestPhase extends BattlePhase { + private moveQueue: Moves[]; + + constructor(scene: BattleScene, moveQueue?: Moves[]) { + super(scene); + + this.moveQueue = moveQueue || Utils.getEnumValues(Moves).slice(1); + } + + start() { + const moveQueue = this.moveQueue.slice(0); + this.playMoveAnim(moveQueue, true); + } + + playMoveAnim(moveQueue: Moves[], player: boolean) { + const moveId = player ? moveQueue[0] : moveQueue.shift(); + if (moveId === undefined) { + this.playMoveAnim(this.moveQueue.slice(0), true); + return; + } else if (player) { + console.log(Moves[moveId]); + } + + initMoveAnim(this.scene, moveId).then(() => { + loadMoveAnimAssets(this.scene, [moveId], true) + .then(() => { + new MoveAnim(moveId, player ? this.scene.getPlayerPokemon()! : this.scene.getEnemyPokemon()!, (player !== (allMoves[moveId] instanceof SelfStatusMove) ? this.scene.getEnemyPokemon()! : this.scene.getPlayerPokemon()!).getBattlerIndex()).play(this.scene, () => { // TODO: are the bangs correct here? + if (player) { + this.playMoveAnim(moveQueue, false); + } else { + this.playMoveAnim(moveQueue, true); + } + }); + }); + }); + } +} diff --git a/src/phases/move-effect-phase.ts b/src/phases/move-effect-phase.ts new file mode 100644 index 00000000000..a5ac913cc5d --- /dev/null +++ b/src/phases/move-effect-phase.ts @@ -0,0 +1,447 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyPreAttackAbAttrs, AddSecondStrikeAbAttr, IgnoreMoveEffectsAbAttr, applyPostDefendAbAttrs, PostDefendAbAttr, applyPostAttackAbAttrs, PostAttackAbAttr, MaxMultiHitAbAttr, AlwaysHitAbAttr } from "#app/data/ability.js"; +import { ArenaTagSide, ConditionalProtectTag } from "#app/data/arena-tag.js"; +import { MoveAnim } from "#app/data/battle-anims.js"; +import { BattlerTagLapseType, ProtectedTag, SemiInvulnerableTag } from "#app/data/battler-tags.js"; +import { MoveTarget, applyMoveAttrs, OverrideMoveEffectAttr, MultiHitAttr, AttackMove, FixedDamageAttr, VariableTargetAttr, MissEffectAttr, MoveFlags, applyFilteredMoveAttrs, MoveAttr, MoveEffectAttr, MoveEffectTrigger, ChargeAttr, MoveCategory, NoEffectAttr, HitsTagAttr } from "#app/data/move.js"; +import { SpeciesFormChangePostMoveTrigger } from "#app/data/pokemon-forms.js"; +import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { Moves } from "#app/enums/moves.js"; +import Pokemon, { PokemonMove, MoveResult, HitResult } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { PokemonMultiHitModifier, FlinchChanceModifier, EnemyAttackStatusEffectChanceModifier, ContactHeldItemTransferChanceModifier, HitHealModifier } from "#app/modifier/modifier.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class MoveEffectPhase extends PokemonPhase { + public move: PokemonMove; + protected targets: BattlerIndex[]; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, targets: BattlerIndex[], move: PokemonMove) { + super(scene, battlerIndex); + this.move = move; + /** + * In double battles, if the right Pokemon selects a spread move and the left Pokemon dies + * with no party members available to switch in, then the right Pokemon takes the index + * of the left Pokemon and gets hit unless this is checked. + */ + if (targets.includes(battlerIndex) && this.move.getMove().moveTarget === MoveTarget.ALL_NEAR_OTHERS) { + const i = targets.indexOf(battlerIndex); + targets.splice(i, i + 1); + } + this.targets = targets; + } + + start() { + super.start(); + + /** The Pokemon using this phase's invoked move */ + const user = this.getUserPokemon(); + /** All Pokemon targeted by this phase's invoked move */ + const targets = this.getTargets(); + + /** If the user was somehow removed from the field, end this phase */ + if (!user?.isOnField()) { + return super.end(); + } + + /** + * Does an effect from this move override other effects on this turn? + * e.g. Charging moves (Fly, etc.) on their first turn of use. + */ + const overridden = new Utils.BooleanHolder(false); + /** The {@linkcode Move} object from {@linkcode allMoves} invoked by this phase */ + const move = this.move.getMove(); + + // Assume single target for override + applyMoveAttrs(OverrideMoveEffectAttr, user, this.getTarget() ?? null, move, overridden, this.move.virtual).then(() => { + // If other effects were overriden, stop this phase before they can be applied + if (overridden.value) { + return this.end(); + } + + user.lapseTags(BattlerTagLapseType.MOVE_EFFECT); + + /** + * If this phase is for the first hit of the invoked move, + * resolve the move's total hit count. This block combines the + * effects of the move itself, Parental Bond, and Multi-Lens to do so. + */ + if (user.turnData.hitsLeft === undefined) { + const hitCount = new Utils.IntegerHolder(1); + // Assume single target for multi hit + applyMoveAttrs(MultiHitAttr, user, this.getTarget() ?? null, move, hitCount); + // If Parental Bond is applicable, double the hit count + applyPreAttackAbAttrs(AddSecondStrikeAbAttr, user, null, move, targets.length, hitCount, new Utils.IntegerHolder(0)); + // If Multi-Lens is applicable, multiply the hit count by 1 + the number of Multi-Lenses held by the user + if (move instanceof AttackMove && !move.hasAttr(FixedDamageAttr)) { + this.scene.applyModifiers(PokemonMultiHitModifier, user.isPlayer(), user, hitCount, new Utils.IntegerHolder(0)); + } + // Set the user's relevant turnData fields to reflect the final hit count + user.turnData.hitCount = hitCount.value; + user.turnData.hitsLeft = hitCount.value; + } + + /** + * Log to be entered into the user's move history once the move result is resolved. + * Note that `result` (a {@linkcode MoveResult}) logs whether the move was successfully + * used in the sense of "Does it have an effect on the user?". + */ + const moveHistoryEntry = { move: this.move.moveId, targets: this.targets, result: MoveResult.PENDING, virtual: this.move.virtual }; + + /** + * Stores results of hit checks of the invoked move against all targets, organized by battler index. + * @see {@linkcode hitCheck} + */ + const targetHitChecks = Object.fromEntries(targets.map(p => [p.getBattlerIndex(), this.hitCheck(p)])); + const hasActiveTargets = targets.some(t => t.isActive(true)); + /** + * If no targets are left for the move to hit (FAIL), or the invoked move is single-target + * (and not random target) and failed the hit check against its target (MISS), log the move + * as FAILed or MISSed (depending on the conditions above) and end this phase. + */ + if (!hasActiveTargets || (!move.hasAttr(VariableTargetAttr) && !move.isMultiTarget() && !targetHitChecks[this.targets[0]])) { + this.stopMultiHit(); + if (hasActiveTargets) { + this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: this.getTarget()? getPokemonNameWithAffix(this.getTarget()!) : "" })); + moveHistoryEntry.result = MoveResult.MISS; + applyMoveAttrs(MissEffectAttr, user, null, move); + } else { + this.scene.queueMessage(i18next.t("battle:attackFailed")); + moveHistoryEntry.result = MoveResult.FAIL; + } + user.pushMoveHistory(moveHistoryEntry); + return this.end(); + } + + /** All move effect attributes are chained together in this array to be applied asynchronously. */ + const applyAttrs: Promise[] = []; + + // Move animation only needs one target + new MoveAnim(move.id as Moves, user, this.getTarget()?.getBattlerIndex()!).play(this.scene, () => { // TODO: is the bang correct here? + /** Has the move successfully hit a target (for damage) yet? */ + let hasHit: boolean = false; + for (const target of targets) { + /** + * If the move missed a target, stop all future hits against that target + * and move on to the next target (if there is one). + */ + if (!targetHitChecks[target.getBattlerIndex()]) { + this.stopMultiHit(target); + this.scene.queueMessage(i18next.t("battle:attackMissed", { pokemonNameWithAffix: getPokemonNameWithAffix(target) })); + if (moveHistoryEntry.result === MoveResult.PENDING) { + moveHistoryEntry.result = MoveResult.MISS; + } + user.pushMoveHistory(moveHistoryEntry); + applyMoveAttrs(MissEffectAttr, user, null, move); + continue; + } + + /** The {@linkcode ArenaTagSide} to which the target belongs */ + const targetSide = target.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY; + /** Has the invoked move been cancelled by conditional protection (e.g Quick Guard)? */ + const hasConditionalProtectApplied = new Utils.BooleanHolder(false); + /** Does the applied conditional protection bypass Protect-ignoring effects? */ + const bypassIgnoreProtect = new Utils.BooleanHolder(false); + // If the move is not targeting a Pokemon on the user's side, try to apply conditional protection effects + if (!this.move.getMove().isAllyTarget()) { + this.scene.arena.applyTagsForSide(ConditionalProtectTag, targetSide, hasConditionalProtectApplied, user, target, move.id, bypassIgnoreProtect); + } + + /** Is the target protected by Protect, etc. or a relevant conditional protection effect? */ + const isProtected = (bypassIgnoreProtect.value || !this.move.getMove().checkFlag(MoveFlags.IGNORE_PROTECT, user, target)) + && (hasConditionalProtectApplied.value || target.findTags(t => t instanceof ProtectedTag).find(t => target.lapseTag(t.tagType))); + + /** Does this phase represent the invoked move's first strike? */ + const firstHit = (user.turnData.hitsLeft === user.turnData.hitCount); + + // Only log the move's result on the first strike + if (firstHit) { + user.pushMoveHistory(moveHistoryEntry); + } + + /** + * Since all fail/miss checks have applied, the move is considered successfully applied. + * It's worth noting that if the move has no effect or is protected against, this assignment + * is overwritten and the move is logged as a FAIL. + */ + moveHistoryEntry.result = MoveResult.SUCCESS; + + /** + * Stores the result of applying the invoked move to the target. + * If the target is protected, the result is always `NO_EFFECT`. + * Otherwise, the hit result is based on type effectiveness, immunities, + * and other factors that may negate the attack or status application. + * + * Internally, the call to {@linkcode Pokemon.apply} is where damage is calculated + * (for attack moves) and the target's HP is updated. However, this isn't + * made visible to the user until the resulting {@linkcode DamagePhase} + * is invoked. + */ + const hitResult = !isProtected ? target.apply(user, move) : HitResult.NO_EFFECT; + + /** Does {@linkcode hitResult} indicate that damage was dealt to the target? */ + const dealsDamage = [ + HitResult.EFFECTIVE, + HitResult.SUPER_EFFECTIVE, + HitResult.NOT_VERY_EFFECTIVE, + HitResult.ONE_HIT_KO + ].includes(hitResult); + + /** Is this target the first one hit by the move on its current strike? */ + const firstTarget = dealsDamage && !hasHit; + if (firstTarget) { + hasHit = true; + } + + /** + * If the move has no effect on the target (i.e. the target is protected or immune), + * change the logged move result to FAIL. + */ + if (hitResult === HitResult.NO_EFFECT) { + moveHistoryEntry.result = MoveResult.FAIL; + } + + /** Does this phase represent the invoked move's last strike? */ + const lastHit = (user.turnData.hitsLeft === 1 || !this.getTarget()?.isActive()); + + /** + * If the user can change forms by using the invoked move, + * it only changes forms after the move's last hit + * (see Relic Song's interaction with Parental Bond when used by Meloetta). + */ + if (lastHit) { + this.scene.triggerPokemonFormChange(user, SpeciesFormChangePostMoveTrigger); + } + + /** + * Create a Promise that applys *all* effects from the invoked move's MoveEffectAttrs. + * These are ordered by trigger type (see {@linkcode MoveEffectTrigger}), and each trigger + * type requires different conditions to be met with respect to the move's hit result. + */ + applyAttrs.push(new Promise(resolve => { + // Apply all effects with PRE_MOVE triggers (if the target isn't immune to the move) + applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === MoveEffectTrigger.PRE_APPLY && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit) && hitResult !== HitResult.NO_EFFECT, + user, target, move).then(() => { + // All other effects require the move to not have failed or have been cancelled to trigger + if (hitResult !== HitResult.FAIL) { + /** Are the move's effects tied to the first turn of a charge move? */ + const chargeEffect = !!move.getAttrs(ChargeAttr).find(ca => ca.usedChargeEffect(user, this.getTarget() ?? null, move)); + /** + * If the invoked move's effects are meant to trigger during the move's "charge turn," + * ignore all effects after this point. + * Otherwise, apply all self-targeted POST_APPLY effects. + */ + Utils.executeIf(!chargeEffect, () => applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === MoveEffectTrigger.POST_APPLY + && attr.selfTarget && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit), user, target, move)).then(() => { + // All effects past this point require the move to have hit the target + if (hitResult !== HitResult.NO_EFFECT) { + // Apply all non-self-targeted POST_APPLY effects + applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.POST_APPLY + && !(attr as MoveEffectAttr).selfTarget && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit), user, target, this.move.getMove()).then(() => { + /** + * If the move hit, and the target doesn't have Shield Dust, + * apply the chance to flinch the target gained from King's Rock + */ + if (dealsDamage && !target.hasAbilityWithAttr(IgnoreMoveEffectsAbAttr)) { + const flinched = new Utils.BooleanHolder(false); + user.scene.applyModifiers(FlinchChanceModifier, user.isPlayer(), user, flinched); + if (flinched.value) { + target.addTag(BattlerTagType.FLINCHED, undefined, this.move.moveId, user.id); + } + } + // If the move was not protected against, apply all HIT effects + Utils.executeIf(!isProtected && !chargeEffect, () => applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.HIT + && (!attr.firstHitOnly || firstHit) && (!attr.lastHitOnly || lastHit) && (!attr.firstTargetOnly || firstTarget), user, target, this.move.getMove()).then(() => { + // Apply the target's post-defend ability effects (as long as the target is active or can otherwise apply them) + return Utils.executeIf(!target.isFainted() || target.canApplyAbility(), () => applyPostDefendAbAttrs(PostDefendAbAttr, target, user, this.move.getMove(), hitResult).then(() => { + // If the invoked move is an enemy attack, apply the enemy's status effect-inflicting tags and tokens + target.lapseTag(BattlerTagType.BEAK_BLAST_CHARGING); + if (move.category === MoveCategory.PHYSICAL && user.isPlayer() !== target.isPlayer()) { + target.lapseTag(BattlerTagType.SHELL_TRAP); + } + if (!user.isPlayer() && this.move.getMove() instanceof AttackMove) { + user.scene.applyShuffledModifiers(this.scene, EnemyAttackStatusEffectChanceModifier, false, target); + } + })).then(() => { + // Apply the user's post-attack ability effects + applyPostAttackAbAttrs(PostAttackAbAttr, user, target, this.move.getMove(), hitResult).then(() => { + /** + * If the invoked move is an attack, apply the user's chance to + * steal an item from the target granted by Grip Claw + */ + if (this.move.getMove() instanceof AttackMove) { + this.scene.applyModifiers(ContactHeldItemTransferChanceModifier, this.player, user, target); + } + resolve(); + }); + }); + }) + ).then(() => resolve()); + }); + } else { + applyMoveAttrs(NoEffectAttr, user, null, move).then(() => resolve()); + } + }); + } else { + resolve(); + } + }); + })); + } + // Apply the move's POST_TARGET effects on the move's last hit, after all targeted effects have resolved + const postTarget = (user.turnData.hitsLeft === 1 || !this.getTarget()?.isActive()) ? + applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && attr.trigger === MoveEffectTrigger.POST_TARGET, user, null, move) : + null; + + if (!!postTarget) { + if (applyAttrs.length) { // If there is a pending asynchronous move effect, do this after + applyAttrs[applyAttrs.length - 1]?.then(() => postTarget); + } else { // Otherwise, push a new asynchronous move effect + applyAttrs.push(postTarget); + } + } + + // Wait for all move effects to finish applying, then end this phase + Promise.allSettled(applyAttrs).then(() => this.end()); + }); + }); + } + + end() { + const move = this.move.getMove(); + move.type = move.defaultType; + const user = this.getUserPokemon(); + /** + * If this phase isn't for the invoked move's last strike, + * unshift another MoveEffectPhase for the next strike. + * Otherwise, queue a message indicating the number of times the move has struck + * (if the move has struck more than once), then apply the heal from Shell Bell + * to the user. + */ + if (user) { + if (user.turnData.hitsLeft && --user.turnData.hitsLeft >= 1 && this.getTarget()?.isActive()) { + this.scene.unshiftPhase(this.getNewHitPhase()); + } else { + // Queue message for number of hits made by multi-move + // If multi-hit attack only hits once, still want to render a message + const hitsTotal = user.turnData.hitCount! - Math.max(user.turnData.hitsLeft!, 0); // TODO: are those bangs correct? + if (hitsTotal > 1 || (user.turnData.hitsLeft && user.turnData.hitsLeft > 0)) { + // If there are multiple hits, or if there are hits of the multi-hit move left + this.scene.queueMessage(i18next.t("battle:attackHitsCount", { count: hitsTotal })); + } + this.scene.applyModifiers(HitHealModifier, this.player, user); + } + } + + super.end(); + } + + /** + * Resolves whether this phase's invoked move hits or misses the given target + * @param target {@linkcode Pokemon} the Pokemon targeted by the invoked move + * @returns `true` if the move does not miss the target; `false` otherwise + */ + hitCheck(target: Pokemon): boolean { + // Moves targeting the user and entry hazards can't miss + if ([MoveTarget.USER, MoveTarget.ENEMY_SIDE].includes(this.move.getMove().moveTarget)) { + return true; + } + + const user = this.getUserPokemon()!; // TODO: is this bang correct? + + // Hit check only calculated on first hit for multi-hit moves unless flag is set to check all hits. + // However, if an ability with the MaxMultiHitAbAttr, namely Skill Link, is present, act as a normal + // multi-hit move and proceed with all hits + if (user.turnData.hitsLeft < user.turnData.hitCount) { + if (!this.move.getMove().hasFlag(MoveFlags.CHECK_ALL_HITS) || user.hasAbilityWithAttr(MaxMultiHitAbAttr)) { + return true; + } + } + + if (user.hasAbilityWithAttr(AlwaysHitAbAttr) || target.hasAbilityWithAttr(AlwaysHitAbAttr)) { + return true; + } + + // If the user should ignore accuracy on a target, check who the user targeted last turn and see if they match + if (user.getTag(BattlerTagType.IGNORE_ACCURACY) && (user.getLastXMoves().find(() => true)?.targets || []).indexOf(target.getBattlerIndex()) !== -1) { + return true; + } + + if (target.getTag(BattlerTagType.ALWAYS_GET_HIT)) { + return true; + } + + const semiInvulnerableTag = target.getTag(SemiInvulnerableTag); + if (semiInvulnerableTag && !this.move.getMove().getAttrs(HitsTagAttr).some(hta => hta.tagType === semiInvulnerableTag.tagType)) { + return false; + } + + const moveAccuracy = this.move.getMove().calculateBattleAccuracy(user!, target); // TODO: is the bang correct here? + + if (moveAccuracy === -1) { + return true; + } + + const accuracyMultiplier = user.getAccuracyMultiplier(target, this.move.getMove()); + const rand = user.randSeedInt(100, 1); + + return rand <= moveAccuracy * (accuracyMultiplier!); // TODO: is this bang correct? + } + + /** Returns the {@linkcode Pokemon} using this phase's invoked move */ + getUserPokemon(): Pokemon | undefined { + if (this.battlerIndex > BattlerIndex.ENEMY_2) { + return this.scene.getPokemonById(this.battlerIndex) ?? undefined; + } + return (this.player ? this.scene.getPlayerField() : this.scene.getEnemyField())[this.fieldIndex]; + } + + /** Returns an array of all {@linkcode Pokemon} targeted by this phase's invoked move */ + getTargets(): Pokemon[] { + return this.scene.getField(true).filter(p => this.targets.indexOf(p.getBattlerIndex()) > -1); + } + + /** Returns the first target of this phase's invoked move */ + getTarget(): Pokemon | undefined { + return this.getTargets()[0]; + } + + /** + * Removes the given {@linkcode Pokemon} from this phase's target list + * @param target {@linkcode Pokemon} the Pokemon to be removed + */ + removeTarget(target: Pokemon): void { + const targetIndex = this.targets.findIndex(ind => ind === target.getBattlerIndex()); + if (targetIndex !== -1) { + this.targets.splice(this.targets.findIndex(ind => ind === target.getBattlerIndex()), 1); + } + } + + /** + * Prevents subsequent strikes of this phase's invoked move from occurring + * @param target {@linkcode Pokemon} if defined, only stop subsequent + * strikes against this Pokemon + */ + stopMultiHit(target?: Pokemon): void { + /** If given a specific target, remove the target from subsequent strikes */ + if (target) { + this.removeTarget(target); + } + /** + * If no target specified, or the specified target was the last of this move's + * targets, completely cancel all subsequent strikes. + */ + if (!target || this.targets.length === 0 ) { + this.getUserPokemon()!.turnData.hitCount = 1; // TODO: is the bang correct here? + this.getUserPokemon()!.turnData.hitsLeft = 1; // TODO: is the bang correct here? + } + } + + /** Returns a new MoveEffectPhase with the same properties as this phase */ + getNewHitPhase() { + return new MoveEffectPhase(this.scene, this.battlerIndex, this.targets, this.move); + } +} diff --git a/src/phases/move-end-phase.ts b/src/phases/move-end-phase.ts new file mode 100644 index 00000000000..4bce2185aea --- /dev/null +++ b/src/phases/move-end-phase.ts @@ -0,0 +1,23 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { BattlerTagLapseType } from "#app/data/battler-tags.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class MoveEndPhase extends PokemonPhase { + constructor(scene: BattleScene, battlerIndex: BattlerIndex) { + super(scene, battlerIndex); + } + + start() { + super.start(); + + const pokemon = this.getPokemon(); + if (pokemon.isActive(true)) { + pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE); + } + + this.scene.arena.setIgnoreAbilities(false); + + this.end(); + } +} diff --git a/src/phases/move-header-phase.ts b/src/phases/move-header-phase.ts new file mode 100644 index 00000000000..5166f287731 --- /dev/null +++ b/src/phases/move-header-phase.ts @@ -0,0 +1,30 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyMoveAttrs, MoveHeaderAttr } from "#app/data/move.js"; +import Pokemon, { PokemonMove } from "#app/field/pokemon.js"; +import { BattlePhase } from "./battle-phase"; + +export class MoveHeaderPhase extends BattlePhase { + public pokemon: Pokemon; + public move: PokemonMove; + + constructor(scene: BattleScene, pokemon: Pokemon, move: PokemonMove) { + super(scene); + + this.pokemon = pokemon; + this.move = move; + } + + canMove(): boolean { + return this.pokemon.isActive(true) && this.move.isUsable(this.pokemon); + } + + start() { + super.start(); + + if (this.canMove()) { + applyMoveAttrs(MoveHeaderAttr, this.pokemon, null, this.move.getMove()).then(() => this.end()); + } else { + this.end(); + } + } +} diff --git a/src/phases/move-phase.ts b/src/phases/move-phase.ts new file mode 100644 index 00000000000..e437bd4c7a6 --- /dev/null +++ b/src/phases/move-phase.ts @@ -0,0 +1,331 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyAbAttrs, RedirectMoveAbAttr, BlockRedirectAbAttr, IncreasePpAbAttr, applyPreAttackAbAttrs, PokemonTypeChangeAbAttr, applyPostMoveUsedAbAttrs, PostMoveUsedAbAttr } from "#app/data/ability.js"; +import { CommonAnim } from "#app/data/battle-anims.js"; +import { CenterOfAttentionTag, BattlerTagLapseType } from "#app/data/battler-tags.js"; +import { MoveFlags, BypassRedirectAttr, allMoves, CopyMoveAttr, applyMoveAttrs, BypassSleepAttr, HealStatusEffectAttr, ChargeAttr, PreMoveMessageAttr } from "#app/data/move.js"; +import { SpeciesFormChangePreMoveTrigger } from "#app/data/pokemon-forms.js"; +import { getStatusEffectActivationText, getStatusEffectHealText } from "#app/data/status-effect.js"; +import { Type } from "#app/data/type.js"; +import { getTerrainBlockMessage } from "#app/data/weather.js"; +import { Abilities } from "#app/enums/abilities.js"; +import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { Moves } from "#app/enums/moves.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import { MoveUsedEvent } from "#app/events/battle-scene.js"; +import Pokemon, { PokemonMove, MoveResult, TurnMove } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; +import { CommonAnimPhase } from "./common-anim-phase"; +import { MoveEffectPhase } from "./move-effect-phase"; +import { MoveEndPhase } from "./move-end-phase"; +import { ShowAbilityPhase } from "./show-ability-phase"; + +export class MovePhase extends BattlePhase { + public pokemon: Pokemon; + public move: PokemonMove; + public targets: BattlerIndex[]; + protected followUp: boolean; + protected ignorePp: boolean; + protected failed: boolean; + protected cancelled: boolean; + + constructor(scene: BattleScene, pokemon: Pokemon, targets: BattlerIndex[], move: PokemonMove, followUp?: boolean, ignorePp?: boolean) { + super(scene); + + this.pokemon = pokemon; + this.targets = targets; + this.move = move; + this.followUp = !!followUp; + this.ignorePp = !!ignorePp; + this.failed = false; + this.cancelled = false; + } + + canMove(): boolean { + return this.pokemon.isActive(true) && this.move.isUsable(this.pokemon, this.ignorePp) && !!this.targets.length; + } + + /**Signifies the current move should fail but still use PP */ + fail(): void { + this.failed = true; + } + + /**Signifies the current move should cancel and retain PP */ + cancel(): void { + this.cancelled = true; + } + + start() { + super.start(); + + console.log(Moves[this.move.moveId]); + + if (!this.canMove()) { + if (this.move.moveId && this.pokemon.summonData?.disabledMove === this.move.moveId) { + this.scene.queueMessage(`${this.move.getName()} is disabled!`); + } + if (this.pokemon.isActive(true) && this.move.ppUsed >= this.move.getMovePp()) { // if the move PP was reduced from Spite or otherwise, the move fails + this.fail(); + this.showMoveText(); + this.showFailedText(); + } + return this.end(); + } + + if (!this.followUp) { + if (this.move.getMove().checkFlag(MoveFlags.IGNORE_ABILITIES, this.pokemon, null)) { + this.scene.arena.setIgnoreAbilities(); + } + } else { + this.pokemon.turnData.hitsLeft = 0; // TODO: is `0` correct? + this.pokemon.turnData.hitCount = 0; // TODO: is `0` correct? + } + + // Move redirection abilities (ie. Storm Drain) only support single target moves + const moveTarget = this.targets.length === 1 + ? new Utils.IntegerHolder(this.targets[0]) + : null; + if (moveTarget) { + const oldTarget = moveTarget.value; + this.scene.getField(true).filter(p => p !== this.pokemon).forEach(p => applyAbAttrs(RedirectMoveAbAttr, p, null, this.move.moveId, moveTarget)); + this.pokemon.getOpponents().forEach(p => { + const redirectTag = p.getTag(CenterOfAttentionTag) as CenterOfAttentionTag; + if (redirectTag && (!redirectTag.powder || (!this.pokemon.isOfType(Type.GRASS) && !this.pokemon.hasAbility(Abilities.OVERCOAT)))) { + moveTarget.value = p.getBattlerIndex(); + } + }); + //Check if this move is immune to being redirected, and restore its target to the intended target if it is. + const abilityRedirectImmune = this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr); + const moveRedirectImmune = this.move.getMove().getAttrs(BypassRedirectAttr).some(attr => attr.apply(this.pokemon, this.scene.getField(false)[oldTarget], this.move.getMove())); + if (abilityRedirectImmune || moveRedirectImmune) { + //If an ability prevented this move from being redirected, display its ability pop up. + if (abilityRedirectImmune && !moveRedirectImmune && oldTarget !== moveTarget.value) { + this.scene.unshiftPhase(new ShowAbilityPhase(this.scene, this.pokemon.getBattlerIndex(), this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr))); + } + moveTarget.value = oldTarget; + } + this.targets[0] = moveTarget.value; + } + + // Check for counterattack moves to switch target + if (this.targets.length === 1 && this.targets[0] === BattlerIndex.ATTACKER) { + if (this.pokemon.turnData.attacksReceived.length) { + const attack = this.pokemon.turnData.attacksReceived[0]; + this.targets[0] = attack.sourceBattlerIndex; + + // account for metal burst and comeuppance hitting remaining targets in double battles + // counterattack will redirect to remaining ally if original attacker faints + if (this.scene.currentBattle.double && this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER)) { + if (this.scene.getField()[this.targets[0]].hp === 0) { + const opposingField = this.pokemon.isPlayer() ? this.scene.getEnemyField() : this.scene.getPlayerField(); + //@ts-ignore + this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex(); //TODO: fix ts-ignore + } + } + } + if (this.targets[0] === BattlerIndex.ATTACKER) { + this.fail(); // Marks the move as failed for later in doMove + this.showMoveText(); + this.showFailedText(); + } + } + + const targets = this.scene.getField(true).filter(p => { + if (this.targets.indexOf(p.getBattlerIndex()) > -1) { + return true; + } + return false; + }); + + const doMove = () => { + this.pokemon.turnData.acted = true; // Record that the move was attempted, even if it fails + + this.pokemon.lapseTags(BattlerTagLapseType.PRE_MOVE); + + let ppUsed = 1; + // Filter all opponents to include only those this move is targeting + const targetedOpponents = this.pokemon.getOpponents().filter(o => this.targets.includes(o.getBattlerIndex())); + for (const opponent of targetedOpponents) { + if (this.move.ppUsed + ppUsed >= this.move.getMovePp()) { // If we're already at max PP usage, stop checking + break; + } + if (opponent.hasAbilityWithAttr(IncreasePpAbAttr)) { // Accounting for abilities like Pressure + ppUsed++; + } + } + + if (!this.followUp && this.canMove() && !this.cancelled) { + this.pokemon.lapseTags(BattlerTagLapseType.MOVE); + } + + const moveQueue = this.pokemon.getMoveQueue(); + if (this.cancelled || this.failed) { + if (this.failed) { + this.move.usePp(ppUsed); // Only use PP if the move failed + this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); + } + + // Record a failed move so Abilities like Truant don't trigger next turn and soft-lock + this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL }); + + this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); // Remove any tags from moves like Fly/Dive/etc. + moveQueue.shift(); // Remove the second turn of charge moves + return this.end(); + } + + this.scene.triggerPokemonFormChange(this.pokemon, SpeciesFormChangePreMoveTrigger); + + if (this.move.moveId) { + this.showMoveText(); + } + + // This should only happen when there are no valid targets left on the field + if ((moveQueue.length && moveQueue[0].move === Moves.NONE) || !targets.length) { + this.showFailedText(); + this.cancel(); + + // Record a failed move so Abilities like Truant don't trigger next turn and soft-lock + this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL }); + + this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT); // Remove any tags from moves like Fly/Dive/etc. + + moveQueue.shift(); + return this.end(); + } + + if (!moveQueue.length || !moveQueue.shift()?.ignorePP) { // using .shift here clears out two turn moves once they've been used + this.move.usePp(ppUsed); + this.scene.eventTarget.dispatchEvent(new MoveUsedEvent(this.pokemon?.id, this.move.getMove(), this.move.ppUsed)); + } + + if (!allMoves[this.move.moveId].hasAttr(CopyMoveAttr)) { + this.scene.currentBattle.lastMove = this.move.moveId; + } + + // 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()); + const 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.targets, this.move.getMove())) { + success = false; + if (failedText === null) { + failedText = getTerrainBlockMessage(targets[0], this.scene.arena.terrain?.terrainType!); // TODO: is this bang correct? + } + } + + /** + * Trigger pokemon type change before playing the move animation + * Will still change the user's type when using Roar, Whirlwind, Trick-or-Treat, and Forest's Curse, + * regardless of whether the move successfully executes or not. + */ + if (success || [Moves.ROAR, Moves.WHIRLWIND, Moves.TRICK_OR_TREAT, Moves.FORESTS_CURSE].includes(this.move.moveId)) { + applyPreAttackAbAttrs(PokemonTypeChangeAbAttr, this.pokemon, null, this.move.getMove()); + } + + 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 }); + if (!cancelled.value) { + this.showFailedText(failedText); + } + } + // Checks if Dancer ability is triggered + if (this.move.getMove().hasFlag(MoveFlags.DANCE_MOVE) && !this.followUp) { + // Pokemon with Dancer can be on either side of the battle so we check in both cases + this.scene.getPlayerField().forEach(pokemon => { + applyPostMoveUsedAbAttrs(PostMoveUsedAbAttr, pokemon, this.move, this.pokemon, this.targets); + }); + this.scene.getEnemyField().forEach(pokemon => { + applyPostMoveUsedAbAttrs(PostMoveUsedAbAttr, pokemon, this.move, this.pokemon, this.targets); + }); + } + this.end(); + }; + + if (!this.followUp && this.pokemon.status && !this.pokemon.status.isPostTurn()) { + this.pokemon.status.incrementTurn(); + let activated = false; + let healed = false; + + switch (this.pokemon.status.effect) { + case StatusEffect.PARALYSIS: + if (!this.pokemon.randSeedInt(4)) { + activated = true; + this.cancelled = true; + } + break; + case StatusEffect.SLEEP: + applyMoveAttrs(BypassSleepAttr, this.pokemon, null, this.move.getMove()); + healed = this.pokemon.status.turnCount === this.pokemon.status.cureTurn; + activated = !healed && !this.pokemon.getTag(BattlerTagType.BYPASS_SLEEP); + this.cancelled = activated; + break; + case StatusEffect.FREEZE: + healed = !!this.move.getMove().findAttr(attr => attr instanceof HealStatusEffectAttr && attr.selfTarget && attr.isOfEffect(StatusEffect.FREEZE)) || !this.pokemon.randSeedInt(5); + activated = !healed; + this.cancelled = activated; + break; + } + + if (activated) { + this.scene.queueMessage(getStatusEffectActivationText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); + this.scene.unshiftPhase(new CommonAnimPhase(this.scene, this.pokemon.getBattlerIndex(), undefined, CommonAnim.POISON + (this.pokemon.status.effect - 1))); + doMove(); + } else { + if (healed) { + this.scene.queueMessage(getStatusEffectHealText(this.pokemon.status.effect, getPokemonNameWithAffix(this.pokemon))); + this.pokemon.resetStatus(); + this.pokemon.updateInfo(); + } + doMove(); + } + } else { + doMove(); + } + } + + getEffectPhase(): MoveEffectPhase { + return new MoveEffectPhase(this.scene, this.pokemon.getBattlerIndex(), this.targets, this.move); + } + + showMoveText(): void { + if (this.move.getMove().hasAttr(ChargeAttr)) { + const lastMove = this.pokemon.getLastXMoves() as TurnMove[]; + if (!lastMove.length || lastMove[0].move !== this.move.getMove().id || lastMove[0].result !== MoveResult.OTHER) { + this.scene.queueMessage(i18next.t("battle:useMove", { + pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), + moveName: this.move.getName() + }), 500); + return; + } + } + + if (this.pokemon.getTag(BattlerTagType.RECHARGING || BattlerTagType.INTERRUPTED)) { + return; + } + + this.scene.queueMessage(i18next.t("battle:useMove", { + pokemonNameWithAffix: getPokemonNameWithAffix(this.pokemon), + moveName: this.move.getName() + }), 500); + applyMoveAttrs(PreMoveMessageAttr, this.pokemon, this.pokemon.getOpponents().find(() => true)!, this.move.getMove()); //TODO: is the bang correct here? + } + + showFailedText(failedText: string | null = null): void { + this.scene.queueMessage(failedText || i18next.t("battle:attackFailed")); + } + + end() { + if (!this.followUp && this.canMove()) { + this.scene.unshiftPhase(new MoveEndPhase(this.scene, this.pokemon.getBattlerIndex())); + } + + super.end(); + } +} diff --git a/src/phases/new-battle-phase.ts b/src/phases/new-battle-phase.ts new file mode 100644 index 00000000000..5a422c9e6c7 --- /dev/null +++ b/src/phases/new-battle-phase.ts @@ -0,0 +1,11 @@ +import { BattlePhase } from "./battle-phase"; + +export class NewBattlePhase extends BattlePhase { + start() { + super.start(); + + this.scene.newBattle(); + + this.end(); + } +} diff --git a/src/phases/new-biome-encounter-phase.ts b/src/phases/new-biome-encounter-phase.ts new file mode 100644 index 00000000000..c447e78f7b1 --- /dev/null +++ b/src/phases/new-biome-encounter-phase.ts @@ -0,0 +1,38 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyAbAttrs, PostBiomeChangeAbAttr } from "#app/data/ability.js"; +import { getRandomWeatherType } from "#app/data/weather.js"; +import { NextEncounterPhase } from "./next-encounter-phase"; + +export class NewBiomeEncounterPhase extends NextEncounterPhase { + constructor(scene: BattleScene) { + super(scene); + } + + doEncounter(): void { + this.scene.playBgm(undefined, true); + + for (const pokemon of this.scene.getParty()) { + if (pokemon) { + pokemon.resetBattleData(); + } + } + + this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); + + for (const pokemon of this.scene.getParty().filter(p => p.isOnField())) { + applyAbAttrs(PostBiomeChangeAbAttr, pokemon, null); + } + + const enemyField = this.scene.getEnemyField(); + this.scene.tweens.add({ + targets: [this.scene.arenaEnemy, enemyField].flat(), + x: "+=300", + duration: 2000, + onComplete: () => { + if (!this.tryOverrideForBattleSpec()) { + this.doEncounterCommon(); + } + } + }); + } +} diff --git a/src/phases/next-encounter-phase.ts b/src/phases/next-encounter-phase.ts new file mode 100644 index 00000000000..89987534fc0 --- /dev/null +++ b/src/phases/next-encounter-phase.ts @@ -0,0 +1,46 @@ +import BattleScene from "#app/battle-scene.js"; +import { EncounterPhase } from "./encounter-phase"; + +export class NextEncounterPhase extends EncounterPhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + } + + doEncounter(): void { + this.scene.playBgm(undefined, true); + + for (const pokemon of this.scene.getParty()) { + if (pokemon) { + pokemon.resetBattleData(); + } + } + + this.scene.arenaNextEnemy.setBiome(this.scene.arena.biomeType); + this.scene.arenaNextEnemy.setVisible(true); + + const enemyField = this.scene.getEnemyField(); + this.scene.tweens.add({ + targets: [this.scene.arenaEnemy, this.scene.arenaNextEnemy, this.scene.currentBattle.trainer, enemyField, this.scene.lastEnemyTrainer].flat(), + x: "+=300", + duration: 2000, + onComplete: () => { + this.scene.arenaEnemy.setBiome(this.scene.arena.biomeType); + this.scene.arenaEnemy.setX(this.scene.arenaNextEnemy.x); + this.scene.arenaEnemy.setAlpha(1); + this.scene.arenaNextEnemy.setX(this.scene.arenaNextEnemy.x - 300); + this.scene.arenaNextEnemy.setVisible(false); + if (this.scene.lastEnemyTrainer) { + this.scene.lastEnemyTrainer.destroy(); + } + + if (!this.tryOverrideForBattleSpec()) { + this.doEncounterCommon(); + } + } + }); + } +} diff --git a/src/phases/obtain-status-effect-phase.ts b/src/phases/obtain-status-effect-phase.ts new file mode 100644 index 00000000000..ac6e66a2e9f --- /dev/null +++ b/src/phases/obtain-status-effect-phase.ts @@ -0,0 +1,48 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims.js"; +import { getStatusEffectObtainText, getStatusEffectOverlapText } from "#app/data/status-effect.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import Pokemon from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { PokemonPhase } from "./pokemon-phase"; +import { PostTurnStatusEffectPhase } from "./post-turn-status-effect-phase"; + +export class ObtainStatusEffectPhase extends PokemonPhase { + private statusEffect: StatusEffect | undefined; + private cureTurn: integer | null; + private sourceText: string | null; + private sourcePokemon: Pokemon | null; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, statusEffect?: StatusEffect, cureTurn?: integer | null, sourceText?: string, sourcePokemon?: Pokemon) { + super(scene, battlerIndex); + + this.statusEffect = statusEffect; + this.cureTurn = cureTurn!; // TODO: is this bang correct? + this.sourceText = sourceText!; // TODO: is this bang correct? + this.sourcePokemon = sourcePokemon!; // For tracking which Pokemon caused the status effect // TODO: is this bang correct? + } + + start() { + const pokemon = this.getPokemon(); + if (!pokemon?.status) { + if (pokemon?.trySetStatus(this.statusEffect, false, this.sourcePokemon)) { + if (this.cureTurn) { + pokemon.status!.cureTurn = this.cureTurn; // TODO: is this bang correct? + } + pokemon.updateInfo(true); + new CommonBattleAnim(CommonAnim.POISON + (this.statusEffect! - 1), pokemon).play(this.scene, () => { + this.scene.queueMessage(getStatusEffectObtainText(this.statusEffect, getPokemonNameWithAffix(pokemon), this.sourceText ?? undefined)); + if (pokemon.status?.isPostTurn()) { + this.scene.pushPhase(new PostTurnStatusEffectPhase(this.scene, this.battlerIndex)); + } + this.end(); + }); + return; + } + } else if (pokemon.status.effect === this.statusEffect) { + this.scene.queueMessage(getStatusEffectOverlapText(this.statusEffect, getPokemonNameWithAffix(pokemon))); + } + this.end(); + } +} diff --git a/src/phases/outdated-phase.ts b/src/phases/outdated-phase.ts new file mode 100644 index 00000000000..72d1bb3671d --- /dev/null +++ b/src/phases/outdated-phase.ts @@ -0,0 +1,13 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { Mode } from "#app/ui/ui.js"; + +export class OutdatedPhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + start(): void { + this.scene.ui.setMode(Mode.OUTDATED); + } +} diff --git a/src/phases/party-heal-phase.ts b/src/phases/party-heal-phase.ts new file mode 100644 index 00000000000..d9179826a19 --- /dev/null +++ b/src/phases/party-heal-phase.ts @@ -0,0 +1,40 @@ +import BattleScene from "#app/battle-scene.js"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; + +export class PartyHealPhase extends BattlePhase { + private resumeBgm: boolean; + + constructor(scene: BattleScene, resumeBgm: boolean) { + super(scene); + + this.resumeBgm = resumeBgm; + } + + start() { + super.start(); + + const bgmPlaying = this.scene.isBgmPlaying(); + if (bgmPlaying) { + this.scene.fadeOutBgm(1000, false); + } + this.scene.ui.fadeOut(1000).then(() => { + for (const pokemon of this.scene.getParty()) { + pokemon.hp = pokemon.getMaxHp(); + pokemon.resetStatus(); + for (const move of pokemon.moveset) { + move!.ppUsed = 0; // TODO: is this bang correct? + } + pokemon.updateInfo(true); + } + const healSong = this.scene.playSoundWithoutBgm("heal"); + this.scene.time.delayedCall(Utils.fixedInt(healSong.totalDuration * 1000), () => { + healSong.destroy(); + if (this.resumeBgm && bgmPlaying) { + this.scene.playBgm(); + } + this.scene.ui.fadeIn(500).then(() => this.end()); + }); + }); + } +} diff --git a/src/phases/party-member-pokemon-phase.ts b/src/phases/party-member-pokemon-phase.ts new file mode 100644 index 00000000000..1f27826884e --- /dev/null +++ b/src/phases/party-member-pokemon-phase.ts @@ -0,0 +1,27 @@ +import BattleScene from "#app/battle-scene.js"; +import Pokemon from "#app/field/pokemon.js"; +import { FieldPhase } from "./field-phase"; + +export abstract class PartyMemberPokemonPhase extends FieldPhase { + protected partyMemberIndex: integer; + protected fieldIndex: integer; + protected player: boolean; + + constructor(scene: BattleScene, partyMemberIndex: integer, player: boolean) { + super(scene); + + this.partyMemberIndex = partyMemberIndex; + this.fieldIndex = partyMemberIndex < this.scene.currentBattle.getBattlerCount() + ? partyMemberIndex + : -1; + this.player = player; + } + + getParty(): Pokemon[] { + return this.player ? this.scene.getParty() : this.scene.getEnemyParty(); + } + + getPokemon(): Pokemon { + return this.getParty()[this.partyMemberIndex]; + } +} diff --git a/src/phases/party-status-cure-phase.ts b/src/phases/party-status-cure-phase.ts new file mode 100644 index 00000000000..a11aa01b63a --- /dev/null +++ b/src/phases/party-status-cure-phase.ts @@ -0,0 +1,48 @@ +import BattleScene from "#app/battle-scene.js"; +import { Abilities } from "#app/enums/abilities.js"; +import Pokemon from "#app/field/pokemon.js"; +import { BattlePhase } from "./battle-phase"; +import { ShowAbilityPhase } from "./show-ability-phase"; + +/** + * Cures the party of all non-volatile status conditions, shows a message + * @param {BattleScene} scene The current scene + * @param {Pokemon} user The user of the move that cures the party + * @param {string} message The message that should be displayed + * @param {Abilities} abilityCondition Pokemon with this ability will not be affected ie. Soundproof + */ +export class PartyStatusCurePhase extends BattlePhase { + private user: Pokemon; + private message: string; + private abilityCondition: Abilities; + + constructor(scene: BattleScene, user: Pokemon, message: string, abilityCondition: Abilities) { + super(scene); + + this.user = user; + this.message = message; + this.abilityCondition = abilityCondition; + } + + start() { + super.start(); + for (const pokemon of this.scene.getParty()) { + if (!pokemon.isOnField() || pokemon === this.user) { + pokemon.resetStatus(false); + pokemon.updateInfo(true); + } else { + if (!pokemon.hasAbility(this.abilityCondition)) { + pokemon.resetStatus(); + pokemon.updateInfo(true); + } else { + // Manually show ability bar, since we're not hooked into the targeting system + pokemon.scene.unshiftPhase(new ShowAbilityPhase(pokemon.scene, pokemon.id, pokemon.getPassiveAbility()?.id === this.abilityCondition)); + } + } + } + if (this.message) { + this.scene.queueMessage(this.message); + } + this.end(); + } +} diff --git a/src/phases/player-party-member-pokemon-phase.ts b/src/phases/player-party-member-pokemon-phase.ts new file mode 100644 index 00000000000..4b1600b33d2 --- /dev/null +++ b/src/phases/player-party-member-pokemon-phase.ts @@ -0,0 +1,13 @@ +import BattleScene from "#app/battle-scene.js"; +import { PlayerPokemon } from "#app/field/pokemon.js"; +import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; + +export abstract class PlayerPartyMemberPokemonPhase extends PartyMemberPokemonPhase { + constructor(scene: BattleScene, partyMemberIndex: integer) { + super(scene, partyMemberIndex, true); + } + + getPlayerPokemon(): PlayerPokemon { + return super.getPokemon() as PlayerPokemon; + } +} diff --git a/src/phases/pokemon-heal-phase.ts b/src/phases/pokemon-heal-phase.ts new file mode 100644 index 00000000000..6db8aeb4fca --- /dev/null +++ b/src/phases/pokemon-heal-phase.ts @@ -0,0 +1,104 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { CommonAnim } from "#app/data/battle-anims.js"; +import { getStatusEffectHealText } from "#app/data/status-effect.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import { HitResult, DamageResult } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { HealingBoosterModifier } from "#app/modifier/modifier.js"; +import { HealAchv } from "#app/system/achv.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { CommonAnimPhase } from "./common-anim-phase"; + +export class PokemonHealPhase extends CommonAnimPhase { + private hpHealed: integer; + private message: string | null; + private showFullHpMessage: boolean; + private skipAnim: boolean; + private revive: boolean; + private healStatus: boolean; + private preventFullHeal: boolean; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, hpHealed: integer, message: string | null, showFullHpMessage: boolean, skipAnim: boolean = false, revive: boolean = false, healStatus: boolean = false, preventFullHeal: boolean = false) { + super(scene, battlerIndex, undefined, CommonAnim.HEALTH_UP); + + this.hpHealed = hpHealed; + this.message = message; + this.showFullHpMessage = showFullHpMessage; + this.skipAnim = skipAnim; + this.revive = revive; + this.healStatus = healStatus; + this.preventFullHeal = preventFullHeal; + } + + start() { + if (!this.skipAnim && (this.revive || this.getPokemon().hp) && !this.getPokemon().isFullHp()) { + super.start(); + } else { + this.end(); + } + } + + end() { + const pokemon = this.getPokemon(); + + if (!pokemon.isOnField() || (!this.revive && !pokemon.isActive())) { + super.end(); + return; + } + + const hasMessage = !!this.message; + const healOrDamage = (!pokemon.isFullHp() || this.hpHealed < 0); + let lastStatusEffect = StatusEffect.NONE; + + if (healOrDamage) { + const hpRestoreMultiplier = new Utils.IntegerHolder(1); + if (!this.revive) { + this.scene.applyModifiers(HealingBoosterModifier, this.player, hpRestoreMultiplier); + } + const healAmount = new Utils.NumberHolder(Math.floor(this.hpHealed * hpRestoreMultiplier.value)); + if (healAmount.value < 0) { + pokemon.damageAndUpdate(healAmount.value * -1, HitResult.HEAL as DamageResult); + healAmount.value = 0; + } + // Prevent healing to full if specified (in case of healing tokens so Sturdy doesn't cause a softlock) + if (this.preventFullHeal && pokemon.hp + healAmount.value >= pokemon.getMaxHp()) { + healAmount.value = (pokemon.getMaxHp() - pokemon.hp) - 1; + } + healAmount.value = pokemon.heal(healAmount.value); + if (healAmount.value) { + this.scene.damageNumberHandler.add(pokemon, healAmount.value, HitResult.HEAL); + } + if (pokemon.isPlayer()) { + this.scene.validateAchvs(HealAchv, healAmount); + if (healAmount.value > this.scene.gameData.gameStats.highestHeal) { + this.scene.gameData.gameStats.highestHeal = healAmount.value; + } + } + if (this.healStatus && !this.revive && pokemon.status) { + lastStatusEffect = pokemon.status.effect; + pokemon.resetStatus(); + } + pokemon.updateInfo().then(() => super.end()); + } else if (this.healStatus && !this.revive && pokemon.status) { + lastStatusEffect = pokemon.status.effect; + pokemon.resetStatus(); + pokemon.updateInfo().then(() => super.end()); + } else if (this.showFullHpMessage) { + this.message = i18next.t("battle:hpIsFull", { pokemonName: getPokemonNameWithAffix(pokemon) }); + } + + if (this.message) { + this.scene.queueMessage(this.message); + } + + if (this.healStatus && lastStatusEffect && !hasMessage) { + this.scene.queueMessage(getStatusEffectHealText(lastStatusEffect, getPokemonNameWithAffix(pokemon))); + } + + if (!healOrDamage && !lastStatusEffect) { + super.end(); + } + } +} diff --git a/src/phases/pokemon-phase.ts b/src/phases/pokemon-phase.ts new file mode 100644 index 00000000000..871ee57d7a5 --- /dev/null +++ b/src/phases/pokemon-phase.ts @@ -0,0 +1,29 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import Pokemon from "#app/field/pokemon.js"; +import { FieldPhase } from "./field-phase"; + +export abstract class PokemonPhase extends FieldPhase { + protected battlerIndex: BattlerIndex | integer; + public player: boolean; + public fieldIndex: integer; + + constructor(scene: BattleScene, battlerIndex?: BattlerIndex | integer) { + super(scene); + + if (battlerIndex === undefined) { + battlerIndex = scene.getField().find(p => p?.isActive())!.getBattlerIndex(); // TODO: is the bang correct here? + } + + this.battlerIndex = battlerIndex; + this.player = battlerIndex < 2; + this.fieldIndex = battlerIndex % 2; + } + + getPokemon(): Pokemon { + if (this.battlerIndex > BattlerIndex.ENEMY_2) { + return this.scene.getPokemonById(this.battlerIndex)!; //TODO: is this bang correct? + } + return this.scene.getField()[this.battlerIndex]!; //TODO: is this bang correct? + } +} diff --git a/src/phases/post-game-over-phase.ts b/src/phases/post-game-over-phase.ts new file mode 100644 index 00000000000..02413b41a23 --- /dev/null +++ b/src/phases/post-game-over-phase.ts @@ -0,0 +1,46 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { EndCardPhase } from "./end-card-phase"; +import { TitlePhase } from "./title-phase"; + +export class PostGameOverPhase extends Phase { + private endCardPhase: EndCardPhase | null; + + constructor(scene: BattleScene, endCardPhase?: EndCardPhase) { + super(scene); + + this.endCardPhase = endCardPhase!; // TODO: is this bang correct? + } + + start() { + super.start(); + + const saveAndReset = () => { + this.scene.gameData.saveAll(this.scene, true, true, true).then(success => { + if (!success) { + return this.scene.reset(true); + } + this.scene.gameData.tryClearSession(this.scene, this.scene.sessionSlotId).then((success: boolean | [boolean, boolean]) => { + if (!success[0]) { + return this.scene.reset(true); + } + this.scene.reset(); + this.scene.unshiftPhase(new TitlePhase(this.scene)); + this.end(); + }); + }); + }; + + if (this.endCardPhase) { + this.scene.ui.fadeOut(500).then(() => { + this.scene.ui.getMessageHandler().bg.setVisible(true); + + this.endCardPhase?.endCard.destroy(); + this.endCardPhase?.text.destroy(); + saveAndReset(); + }); + } else { + saveAndReset(); + } + } +} diff --git a/src/phases/post-summon-phase.ts b/src/phases/post-summon-phase.ts new file mode 100644 index 00000000000..e671bf30ed1 --- /dev/null +++ b/src/phases/post-summon-phase.ts @@ -0,0 +1,24 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyPostSummonAbAttrs, PostSummonAbAttr } from "#app/data/ability.js"; +import { ArenaTrapTag } from "#app/data/arena-tag.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class PostSummonPhase extends PokemonPhase { + constructor(scene: BattleScene, battlerIndex: BattlerIndex) { + super(scene, battlerIndex); + } + + start() { + super.start(); + + const pokemon = this.getPokemon(); + + if (pokemon.status?.effect === StatusEffect.TOXIC) { + pokemon.status.turnCount = 0; + } + this.scene.arena.applyTags(ArenaTrapTag, pokemon); + applyPostSummonAbAttrs(PostSummonAbAttr, pokemon).then(() => this.end()); + } +} diff --git a/src/phases/post-turn-status-effect-phase.ts b/src/phases/post-turn-status-effect-phase.ts new file mode 100644 index 00000000000..8b533f2e90a --- /dev/null +++ b/src/phases/post-turn-status-effect-phase.ts @@ -0,0 +1,61 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyAbAttrs, BlockNonDirectDamageAbAttr, BlockStatusDamageAbAttr, ReduceBurnDamageAbAttr } from "#app/data/ability.js"; +import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims.js"; +import { getStatusEffectActivationText } from "#app/data/status-effect.js"; +import { BattleSpec } from "#app/enums/battle-spec.js"; +import { StatusEffect } from "#app/enums/status-effect.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import * as Utils from "#app/utils.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class PostTurnStatusEffectPhase extends PokemonPhase { + constructor(scene: BattleScene, battlerIndex: BattlerIndex) { + super(scene, battlerIndex); + } + + start() { + const pokemon = this.getPokemon(); + if (pokemon?.isActive(true) && pokemon.status && pokemon.status.isPostTurn()) { + pokemon.status.incrementTurn(); + const cancelled = new Utils.BooleanHolder(false); + applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); + applyAbAttrs(BlockStatusDamageAbAttr, pokemon, cancelled); + + if (!cancelled.value) { + this.scene.queueMessage(getStatusEffectActivationText(pokemon.status.effect, getPokemonNameWithAffix(pokemon))); + const damage = new Utils.NumberHolder(0); + switch (pokemon.status.effect) { + case StatusEffect.POISON: + damage.value = Math.max(pokemon.getMaxHp() >> 3, 1); + break; + case StatusEffect.TOXIC: + damage.value = Math.max(Math.floor((pokemon.getMaxHp() / 16) * pokemon.status.turnCount), 1); + break; + case StatusEffect.BURN: + damage.value = Math.max(pokemon.getMaxHp() >> 4, 1); + applyAbAttrs(ReduceBurnDamageAbAttr, pokemon, null, damage); + break; + } + if (damage.value) { + // Set preventEndure flag to avoid pokemon surviving thanks to focus band, sturdy, endure ... + this.scene.damageNumberHandler.add(this.getPokemon(), pokemon.damage(damage.value, false, true)); + pokemon.updateInfo(); + } + new CommonBattleAnim(CommonAnim.POISON + (pokemon.status.effect - 1), pokemon).play(this.scene, () => this.end()); + } else { + this.end(); + } + } else { + this.end(); + } + } + + override end() { + if (this.scene.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) { + this.scene.initFinalBossPhaseTwo(this.getPokemon()); + } else { + super.end(); + } + } +} diff --git a/src/phases/quiet-form-change-phase.ts b/src/phases/quiet-form-change-phase.ts new file mode 100644 index 00000000000..3d30d36907e --- /dev/null +++ b/src/phases/quiet-form-change-phase.ts @@ -0,0 +1,133 @@ +import BattleScene from "#app/battle-scene.js"; +import { SemiInvulnerableTag } from "#app/data/battler-tags.js"; +import { SpeciesFormChange, getSpeciesFormChangeMessage } from "#app/data/pokemon-forms.js"; +import { getTypeRgb } from "#app/data/type.js"; +import { BattleSpec } from "#app/enums/battle-spec.js"; +import Pokemon, { EnemyPokemon } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { BattlePhase } from "./battle-phase"; +import { MovePhase } from "./move-phase"; +import { PokemonHealPhase } from "./pokemon-heal-phase"; + +export class QuietFormChangePhase extends BattlePhase { + protected pokemon: Pokemon; + protected formChange: SpeciesFormChange; + + constructor(scene: BattleScene, pokemon: Pokemon, formChange: SpeciesFormChange) { + super(scene); + this.pokemon = pokemon; + this.formChange = formChange; + } + + start(): void { + super.start(); + + if (this.pokemon.formIndex === this.pokemon.species.forms.findIndex(f => f.formKey === this.formChange.formKey)) { + return this.end(); + } + + const preName = getPokemonNameWithAffix(this.pokemon); + + if (!this.pokemon.isOnField() || this.pokemon.getTag(SemiInvulnerableTag)) { + this.pokemon.changeForm(this.formChange).then(() => { + this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); + }); + return; + } + + const getPokemonSprite = () => { + const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, "pkmn__sub"); + sprite.setOrigin(0.5, 1); + sprite.play(this.pokemon.getBattleSpriteKey()).stop(); + sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); + [ "spriteColors", "fusionSpriteColors" ].map(k => { + if (this.pokemon.summonData?.speciesForm) { + k += "Base"; + } + sprite.pipelineData[k] = this.pokemon.getSprite().pipelineData[k]; + }); + this.scene.field.add(sprite); + return sprite; + }; + + const [ pokemonTintSprite, pokemonFormTintSprite ] = [ getPokemonSprite(), getPokemonSprite() ]; + + this.pokemon.getSprite().on("animationupdate", (_anim, frame) => { + if (frame.textureKey === pokemonTintSprite.texture.key) { + pokemonTintSprite.setFrame(frame.textureFrame); + } else { + pokemonFormTintSprite.setFrame(frame.textureFrame); + } + }); + + pokemonTintSprite.setAlpha(0); + pokemonTintSprite.setTintFill(0xFFFFFF); + pokemonFormTintSprite.setVisible(false); + pokemonFormTintSprite.setTintFill(0xFFFFFF); + + this.scene.playSound("PRSFX- Transform"); + + this.scene.tweens.add({ + targets: pokemonTintSprite, + alpha: 1, + duration: 1000, + ease: "Cubic.easeIn", + onComplete: () => { + this.pokemon.setVisible(false); + this.pokemon.changeForm(this.formChange).then(() => { + pokemonFormTintSprite.setScale(0.01); + pokemonFormTintSprite.play(this.pokemon.getBattleSpriteKey()).stop(); + pokemonFormTintSprite.setVisible(true); + this.scene.tweens.add({ + targets: pokemonTintSprite, + delay: 250, + scale: 0.01, + ease: "Cubic.easeInOut", + duration: 500, + onComplete: () => pokemonTintSprite.destroy() + }); + this.scene.tweens.add({ + targets: pokemonFormTintSprite, + delay: 250, + scale: this.pokemon.getSpriteScale(), + ease: "Cubic.easeInOut", + duration: 500, + onComplete: () => { + this.pokemon.setVisible(true); + this.scene.tweens.add({ + targets: pokemonFormTintSprite, + delay: 250, + alpha: 0, + ease: "Cubic.easeOut", + duration: 1000, + onComplete: () => { + pokemonTintSprite.setVisible(false); + this.scene.ui.showText(getSpeciesFormChangeMessage(this.pokemon, this.formChange, preName), null, () => this.end(), 1500); + } + }); + } + }); + }); + } + }); + } + + end(): void { + if (this.pokemon.scene?.currentBattle.battleSpec === BattleSpec.FINAL_BOSS && this.pokemon instanceof EnemyPokemon) { + this.scene.playBgm(); + this.scene.unshiftPhase(new PokemonHealPhase(this.scene, this.pokemon.getBattlerIndex(), this.pokemon.getMaxHp(), null, false, false, false, true)); + this.pokemon.findAndRemoveTags(() => true); + this.pokemon.bossSegments = 5; + this.pokemon.bossSegmentIndex = 4; + this.pokemon.initBattleInfo(); + this.pokemon.cry(); + + const movePhase = this.scene.findPhase(p => p instanceof MovePhase && p.pokemon === this.pokemon) as MovePhase; + if (movePhase) { + movePhase.cancel(); + } + } + + super.end(); + } +} diff --git a/src/phases/reload-session-phase.ts b/src/phases/reload-session-phase.ts new file mode 100644 index 00000000000..a61c52323bf --- /dev/null +++ b/src/phases/reload-session-phase.ts @@ -0,0 +1,39 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { Mode } from "#app/ui/ui.js"; +import * as Utils from "#app/utils.js"; + +export class ReloadSessionPhase extends Phase { + private systemDataStr: string | null; + + constructor(scene: BattleScene, systemDataStr?: string) { + super(scene); + + this.systemDataStr = systemDataStr ?? null; + } + + start(): void { + this.scene.ui.setMode(Mode.SESSION_RELOAD); + + let delayElapsed = false; + let loaded = false; + + this.scene.time.delayedCall(Utils.fixedInt(1500), () => { + if (loaded) { + this.end(); + } else { + delayElapsed = true; + } + }); + + this.scene.gameData.clearLocalData(); + + (this.systemDataStr ? this.scene.gameData.initSystem(this.systemDataStr) : this.scene.gameData.loadSystem()).then(() => { + if (delayElapsed) { + this.end(); + } else { + loaded = true; + } + }); + } +} diff --git a/src/phases/return-phase.ts b/src/phases/return-phase.ts new file mode 100644 index 00000000000..e1753670ad4 --- /dev/null +++ b/src/phases/return-phase.ts @@ -0,0 +1,26 @@ +import BattleScene from "#app/battle-scene.js"; +import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms.js"; +import { SwitchSummonPhase } from "./switch-summon-phase"; + +export class ReturnPhase extends SwitchSummonPhase { + constructor(scene: BattleScene, fieldIndex: integer) { + super(scene, fieldIndex, -1, true, false); + } + + switchAndSummon(): void { + this.end(); + } + + summon(): void { } + + onEnd(): void { + const pokemon = this.getPokemon(); + + pokemon.resetTurnData(); + pokemon.resetSummonData(); + + this.scene.updateFieldScale(); + + this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger); + } +} diff --git a/src/phases/ribbon-modifier-reward-phase.ts b/src/phases/ribbon-modifier-reward-phase.ts new file mode 100644 index 00000000000..4a80325b7e7 --- /dev/null +++ b/src/phases/ribbon-modifier-reward-phase.ts @@ -0,0 +1,33 @@ +import BattleScene from "#app/battle-scene.js"; +import PokemonSpecies from "#app/data/pokemon-species.js"; +import { ModifierTypeFunc } from "#app/modifier/modifier-type.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { ModifierRewardPhase } from "./modifier-reward-phase"; + +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.playSound("level_up_fanfare"); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t("battle:beatModeFirstTime", { + speciesName: this.species.name, + gameMode: this.scene.gameMode.getName(), + newModifier: newModifier?.type.name + }), null, () => { + resolve(); + }, null, true, 1500); + }); + }); + } +} diff --git a/src/phases/scan-ivs-phase.ts b/src/phases/scan-ivs-phase.ts new file mode 100644 index 00000000000..f5e1a814612 --- /dev/null +++ b/src/phases/scan-ivs-phase.ts @@ -0,0 +1,69 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { CommonBattleAnim, CommonAnim } from "#app/data/battle-anims.js"; +import { Stat } from "#app/enums/stat.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { getTextColor, TextStyle } from "#app/ui/text.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import { PokemonPhase } from "./pokemon-phase"; + +export class ScanIvsPhase extends PokemonPhase { + private shownIvs: integer; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, shownIvs: integer) { + super(scene, battlerIndex); + + this.shownIvs = shownIvs; + } + + start() { + super.start(); + + if (!this.shownIvs) { + return this.end(); + } + + const pokemon = this.getPokemon(); + + let enemyIvs: number[] = []; + let statsContainer: Phaser.GameObjects.Sprite[] = []; + let statsContainerLabels: Phaser.GameObjects.Sprite[] = []; + const enemyField = this.scene.getEnemyField(); + const uiTheme = (this.scene as BattleScene).uiTheme; // Assuming uiTheme is accessible + for (let e = 0; e < enemyField.length; e++) { + enemyIvs = enemyField[e].ivs; + const currentIvs = this.scene.gameData.dexData[enemyField[e].species.getRootSpeciesId()].ivs; // we are using getRootSpeciesId() here because we want to check against the baby form, not the mid form if it exists + const ivsToShow = this.scene.ui.getMessageHandler().getTopIvs(enemyIvs, this.shownIvs); + statsContainer = enemyField[e].getBattleInfo().getStatsValueContainer().list as Phaser.GameObjects.Sprite[]; + statsContainerLabels = statsContainer.filter(m => m.name.indexOf("icon_stat_label") >= 0); + for (let s = 0; s < statsContainerLabels.length; s++) { + const ivStat = Stat[statsContainerLabels[s].frame.name]; + if (enemyIvs[ivStat] > currentIvs[ivStat] && ivsToShow.indexOf(Number(ivStat)) >= 0) { + const hexColour = enemyIvs[ivStat] === 31 ? getTextColor(TextStyle.PERFECT_IV, false, uiTheme) : getTextColor(TextStyle.SUMMARY_GREEN, false, uiTheme); + const hexTextColour = Phaser.Display.Color.HexStringToColor(hexColour).color; + statsContainerLabels[s].setTint(hexTextColour); + } + statsContainerLabels[s].setVisible(true); + } + } + + if (!this.scene.hideIvs) { + this.scene.ui.showText(i18next.t("battle:ivScannerUseQuestion", { pokemonName: getPokemonNameWithAffix(pokemon) }), null, () => { + this.scene.ui.setMode(Mode.CONFIRM, () => { + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.clearText(); + new CommonBattleAnim(CommonAnim.LOCK_ON, pokemon, pokemon).play(this.scene, () => { + this.scene.ui.getMessageHandler().promptIvs(pokemon.id, pokemon.ivs, this.shownIvs).then(() => this.end()); + }); + }, () => { + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.clearText(); + this.end(); + }); + }); + } else { + this.end(); + } + } +} diff --git a/src/phases/select-biome-phase.ts b/src/phases/select-biome-phase.ts new file mode 100644 index 00000000000..68c2cd29f26 --- /dev/null +++ b/src/phases/select-biome-phase.ts @@ -0,0 +1,84 @@ +import BattleScene from "#app/battle-scene.js"; +import { biomeLinks, getBiomeName } from "#app/data/biomes.js"; +import { Biome } from "#app/enums/biome.js"; +import { MoneyInterestModifier, MapModifier } from "#app/modifier/modifier.js"; +import { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import { BattlePhase } from "./battle-phase"; +import * as Utils from "#app/utils.js"; +import { PartyHealPhase } from "./party-heal-phase"; +import { SwitchBiomePhase } from "./switch-biome-phase"; + +export class SelectBiomePhase extends BattlePhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + const currentBiome = this.scene.arena.biomeType; + + const setNextBiome = (nextBiome: Biome) => { + if (this.scene.currentBattle.waveIndex % 10 === 1) { + this.scene.applyModifiers(MoneyInterestModifier, true, this.scene); + this.scene.unshiftPhase(new PartyHealPhase(this.scene, false)); + } + this.scene.unshiftPhase(new SwitchBiomePhase(this.scene, nextBiome)); + this.end(); + }; + + if ((this.scene.gameMode.isClassic && this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex + 9)) + || (this.scene.gameMode.isDaily && this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) + || (this.scene.gameMode.hasShortBiomes && !(this.scene.currentBattle.waveIndex % 50))) { + setNextBiome(Biome.END); + } else if (this.scene.gameMode.hasRandomBiomes) { + setNextBiome(this.generateNextBiome()); + } else if (Array.isArray(biomeLinks[currentBiome])) { + let biomes: Biome[] = []; + this.scene.executeWithSeedOffset(() => { + biomes = (biomeLinks[currentBiome] as (Biome | [Biome, integer])[]) + .filter(b => !Array.isArray(b) || !Utils.randSeedInt(b[1])) + .map(b => !Array.isArray(b) ? b : b[0]); + }, this.scene.currentBattle.waveIndex); + if (biomes.length > 1 && this.scene.findModifier(m => m instanceof MapModifier)) { + let biomeChoices: Biome[] = []; + this.scene.executeWithSeedOffset(() => { + biomeChoices = (!Array.isArray(biomeLinks[currentBiome]) + ? [biomeLinks[currentBiome] as Biome] + : biomeLinks[currentBiome] as (Biome | [Biome, integer])[]) + .filter((b, i) => !Array.isArray(b) || !Utils.randSeedInt(b[1])) + .map(b => Array.isArray(b) ? b[0] : b); + }, this.scene.currentBattle.waveIndex); + const biomeSelectItems = biomeChoices.map(b => { + const ret: OptionSelectItem = { + label: getBiomeName(b), + handler: () => { + this.scene.ui.setMode(Mode.MESSAGE); + setNextBiome(b); + return true; + } + }; + return ret; + }); + this.scene.ui.setMode(Mode.OPTION_SELECT, { + options: biomeSelectItems, + delay: 1000 + }); + } else { + setNextBiome(biomes[Utils.randSeedInt(biomes.length)]); + } + } else if (biomeLinks.hasOwnProperty(currentBiome)) { + setNextBiome(biomeLinks[currentBiome] as Biome); + } else { + setNextBiome(this.generateNextBiome()); + } + } + + generateNextBiome(): Biome { + if (!(this.scene.currentBattle.waveIndex % 50)) { + return Biome.END; + } + return this.scene.generateRandomBiome(this.scene.currentBattle.waveIndex); + } +} diff --git a/src/phases/select-challenge-phase.ts b/src/phases/select-challenge-phase.ts new file mode 100644 index 00000000000..eaf830e0059 --- /dev/null +++ b/src/phases/select-challenge-phase.ts @@ -0,0 +1,17 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { Mode } from "#app/ui/ui.js"; + +export class SelectChallengePhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.playBgm("menu"); + + this.scene.ui.setMode(Mode.CHALLENGE_SELECT); + } +} diff --git a/src/phases/select-gender-phase.ts b/src/phases/select-gender-phase.ts new file mode 100644 index 00000000000..3fc6916e233 --- /dev/null +++ b/src/phases/select-gender-phase.ts @@ -0,0 +1,46 @@ +import BattleScene from "#app/battle-scene.js"; +import { PlayerGender } from "#app/enums/player-gender.js"; +import { Phase } from "#app/phase.js"; +import { SettingKeys } from "#app/system/settings/settings.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; + +export class SelectGenderPhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + start(): void { + super.start(); + + this.scene.ui.showText(i18next.t("menu:boyOrGirl"), null, () => { + this.scene.ui.setMode(Mode.OPTION_SELECT, { + options: [ + { + label: i18next.t("settings:boy"), + handler: () => { + this.scene.gameData.gender = PlayerGender.MALE; + this.scene.gameData.saveSetting(SettingKeys.Player_Gender, 0); + this.scene.gameData.saveSystem().then(() => this.end()); + return true; + } + }, + { + label: i18next.t("settings:girl"), + handler: () => { + this.scene.gameData.gender = PlayerGender.FEMALE; + this.scene.gameData.saveSetting(SettingKeys.Player_Gender, 1); + this.scene.gameData.saveSystem().then(() => this.end()); + return true; + } + } + ] + }); + }); + } + + end(): void { + this.scene.ui.setMode(Mode.MESSAGE); + super.end(); + } +} diff --git a/src/phases/select-modifier-phase.ts b/src/phases/select-modifier-phase.ts new file mode 100644 index 00000000000..67ae904fb58 --- /dev/null +++ b/src/phases/select-modifier-phase.ts @@ -0,0 +1,234 @@ +import BattleScene from "#app/battle-scene.js"; +import { ModifierTier } from "#app/modifier/modifier-tier.js"; +import { regenerateModifierPoolThresholds, ModifierTypeOption, ModifierType, getPlayerShopModifierTypeOptionsForWave, PokemonModifierType, FusePokemonModifierType, PokemonMoveModifierType, TmModifierType, RememberMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, ModifierPoolType, getPlayerModifierTypeOptions } from "#app/modifier/modifier-type.js"; +import { ExtraModifierModifier, Modifier, PokemonHeldItemModifier } from "#app/modifier/modifier.js"; +import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler.js"; +import PartyUiHandler, { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; +import Overrides from "#app/overrides"; + +export class SelectModifierPhase extends BattlePhase { + private rerollCount: integer; + private modifierTiers: ModifierTier[]; + + constructor(scene: BattleScene, rerollCount: integer = 0, modifierTiers?: ModifierTier[]) { + super(scene); + + this.rerollCount = rerollCount; + this.modifierTiers = modifierTiers!; // TODO: is this bang correct? + } + + start() { + super.start(); + + if (!this.rerollCount) { + this.updateSeed(); + } else { + this.scene.reroll = false; + } + + const party = this.scene.getParty(); + regenerateModifierPoolThresholds(party, this.getPoolType(), this.rerollCount); + const modifierCount = new Utils.IntegerHolder(3); + if (this.isPlayer()) { + this.scene.applyModifiers(ExtraModifierModifier, true, modifierCount); + } + const typeOptions: ModifierTypeOption[] = this.getModifierTypeOptions(modifierCount.value); + + const modifierSelectCallback = (rowCursor: integer, cursor: integer) => { + if (rowCursor < 0 || cursor < 0) { + 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); + super.end(); + }, () => this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers))); + }); + return false; + } + let modifierType: ModifierType; + let cost: integer; + switch (rowCursor) { + case 0: + switch (cursor) { + case 0: + const rerollCost = this.getRerollCost(typeOptions, this.scene.lockModifierTiers); + if (this.scene.money < rerollCost) { + this.scene.ui.playError(); + return false; + } else { + this.scene.reroll = true; + this.scene.unshiftPhase(new SelectModifierPhase(this.scene, this.rerollCount + 1, typeOptions.map(o => o.type?.tier).filter(t => t !== undefined) as ModifierTier[])); + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + this.scene.money -= rerollCost; + this.scene.updateMoneyText(); + this.scene.animateMoneyChanged(false); + } + this.scene.playSound("buy"); + } + break; + case 1: + this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, itemQuantity: integer, toSlotIndex: integer) => { + if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) { + const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + && m.isTransferrable && m.pokemonId === party[fromSlotIndex].id) as PokemonHeldItemModifier[]; + const itemModifier = itemModifiers[itemIndex]; + this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, itemQuantity); + } else { + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + } + }, PartyUiHandler.FilterItemMaxStacks); + break; + case 2: + this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.CHECK, -1, () => { + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + }); + break; + case 3: + this.scene.lockModifierTiers = !this.scene.lockModifierTiers; + const uiHandler = this.scene.ui.getHandler() as ModifierSelectUiHandler; + uiHandler.setRerollCost(this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + uiHandler.updateLockRaritiesText(); + uiHandler.updateRerollCostText(); + return false; + } + return true; + case 1: + if (typeOptions[cursor].type) { + modifierType = typeOptions[cursor].type; + } + break; + default: + const shopOptions = getPlayerShopModifierTypeOptionsForWave(this.scene.currentBattle.waveIndex, this.scene.getWaveMoneyAmount(1)); + const shopOption = shopOptions[rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT]; + if (shopOption.type) { + modifierType = shopOption.type; + } + cost = shopOption.cost; + break; + } + + if (cost! && (this.scene.money < cost) && !Overrides.WAIVE_ROLL_FEE_OVERRIDE) { // TODO: is the bang on cost correct? + this.scene.ui.playError(); + return false; + } + + const applyModifier = (modifier: Modifier, playSound: boolean = false) => { + const result = this.scene.addModifier(modifier, false, playSound); + if (cost) { + result.then(success => { + if (success) { + if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + this.scene.money -= cost; + this.scene.updateMoneyText(); + this.scene.animateMoneyChanged(false); + } + this.scene.playSound("buy"); + (this.scene.ui.getHandler() as ModifierSelectUiHandler).updateCostText(); + } else { + this.scene.ui.playError(); + } + }); + } else { + const doEnd = () => { + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.MESSAGE); + super.end(); + }; + if (result instanceof Promise) { + result.then(() => doEnd()); + } else { + doEnd(); + } + } + }; + + if (modifierType! instanceof PokemonModifierType) { //TODO: is the bang correct? + if (modifierType instanceof FusePokemonModifierType) { + this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.SPLICE, -1, (fromSlotIndex: integer, spliceSlotIndex: integer) => { + if (spliceSlotIndex !== undefined && fromSlotIndex < 6 && spliceSlotIndex < 6 && fromSlotIndex !== spliceSlotIndex) { + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { + const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct? + applyModifier(modifier, true); + }); + } else { + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + } + }, modifierType.selectFilter); + } else { + const pokemonModifierType = modifierType as PokemonModifierType; + const isMoveModifier = modifierType instanceof PokemonMoveModifierType; + const isTmModifier = modifierType instanceof TmModifierType; + const isRememberMoveModifier = modifierType instanceof RememberMoveModifierType; + const isPpRestoreModifier = (modifierType instanceof PokemonPpRestoreModifierType || modifierType instanceof PokemonPpUpModifierType); + const partyUiMode = isMoveModifier ? PartyUiMode.MOVE_MODIFIER + : isTmModifier ? PartyUiMode.TM_MODIFIER + : isRememberMoveModifier ? PartyUiMode.REMEMBER_MOVE_MODIFIER + : PartyUiMode.MODIFIER; + const tmMoveId = isTmModifier + ? (modifierType as TmModifierType).moveId + : undefined; + this.scene.ui.setModeWithoutClear(Mode.PARTY, partyUiMode, -1, (slotIndex: integer, option: PartyOption) => { + if (slotIndex < 6) { + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { + const modifier = !isMoveModifier + ? !isRememberMoveModifier + ? modifierType.newModifier(party[slotIndex]) + : modifierType.newModifier(party[slotIndex], option as integer) + : modifierType.newModifier(party[slotIndex], option - PartyOption.MOVE_1); + applyModifier(modifier!, true); // TODO: is the bang correct? + }); + } 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, isPpRestoreModifier); + } + } else { + applyModifier(modifierType!.newModifier()!); // TODO: is the bang correct? + } + + return !cost!;// TODO: is the bang correct? + }; + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + } + + updateSeed(): void { + this.scene.resetSeed(); + } + + isPlayer(): boolean { + return true; + } + + getRerollCost(typeOptions: ModifierTypeOption[], lockRarities: boolean): integer { + let baseValue = 0; + if (Overrides.WAIVE_ROLL_FEE_OVERRIDE) { + return baseValue; + } else if (lockRarities) { + const tierValues = [50, 125, 300, 750, 2000]; + for (const opt of typeOptions) { + baseValue += tierValues[opt.type.tier ?? 0]; + } + } else { + baseValue = 250; + } + return Math.min(Math.ceil(this.scene.currentBattle.waveIndex / 10) * baseValue * Math.pow(2, this.rerollCount), Number.MAX_SAFE_INTEGER); + } + + getPoolType(): ModifierPoolType { + return ModifierPoolType.PLAYER; + } + + getModifierTypeOptions(modifierCount: integer): ModifierTypeOption[] { + return getPlayerModifierTypeOptions(modifierCount, this.scene.getParty(), this.scene.lockModifierTiers ? this.modifierTiers : undefined); + } + + addModifier(modifier: Modifier): Promise { + return this.scene.addModifier(modifier, false, true); + } +} diff --git a/src/phases/select-starter-phase.ts b/src/phases/select-starter-phase.ts new file mode 100644 index 00000000000..ad972a49225 --- /dev/null +++ b/src/phases/select-starter-phase.ts @@ -0,0 +1,112 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyChallenges, ChallengeType } from "#app/data/challenge.js"; +import { Gender } from "#app/data/gender.js"; +import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms.js"; +import { getPokemonSpecies } from "#app/data/pokemon-species.js"; +import { Species } from "#app/enums/species.js"; +import { PlayerPokemon } from "#app/field/pokemon.js"; +import { overrideModifiers, overrideHeldItems } from "#app/modifier/modifier.js"; +import { Phase } from "#app/phase.js"; +import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler.js"; +import { Starter } from "#app/ui/starter-select-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; +import { TitlePhase } from "./title-phase"; +import Overrides from "#app/overrides"; + +export class SelectStarterPhase extends Phase { + + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.playBgm("menu"); + + this.scene.ui.setMode(Mode.STARTER_SELECT, (starters: Starter[]) => { + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { + if (slotId === -1) { + this.scene.clearPhaseQueue(); + this.scene.pushPhase(new TitlePhase(this.scene)); + return this.end(); + } + this.scene.sessionSlotId = slotId; + this.initBattle(starters); + }); + }); + } + + /** + * Initialize starters before starting the first battle + * @param starters {@linkcode Pokemon} with which to start the first battle + */ + initBattle(starters: Starter[]) { + const party = this.scene.getParty(); + const loadPokemonAssets: Promise[] = []; + starters.forEach((starter: Starter, i: integer) => { + if (!i && Overrides.STARTER_SPECIES_OVERRIDE) { + starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species); + } + const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); + let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); + if ( + starter.species.speciesId in Overrides.STARTER_FORM_OVERRIDES && + starter.species.forms[Overrides.STARTER_FORM_OVERRIDES[starter.species.speciesId]!] + ) { + starterFormIndex = Overrides.STARTER_FORM_OVERRIDES[starter.species.speciesId]!; + } + + let starterGender = starter.species.malePercent !== null + ? !starterProps.female ? Gender.MALE : Gender.FEMALE + : Gender.GENDERLESS; + if (Overrides.GENDER_OVERRIDE !== null) { + starterGender = Overrides.GENDER_OVERRIDE; + } + const starterIvs = this.scene.gameData.dexData[starter.species.speciesId].ivs.slice(0); + const starterPokemon = this.scene.addPlayerPokemon(starter.species, this.scene.gameMode.getStartingLevel(), starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, starterIvs, starter.nature); + starter.moveset && starterPokemon.tryPopulateMoveset(starter.moveset); + if (starter.passive) { + starterPokemon.passive = true; + } + starterPokemon.luck = this.scene.gameData.getDexAttrLuck(this.scene.gameData.dexData[starter.species.speciesId].caughtAttr); + if (starter.pokerus) { + starterPokemon.pokerus = true; + } + + if (starter.nickname) { + starterPokemon.nickname = starter.nickname; + } + + if (this.scene.gameMode.isSplicedOnly) { + starterPokemon.generateFusionSpecies(true); + } + starterPokemon.setVisible(false); + applyChallenges(this.scene.gameMode, ChallengeType.STARTER_MODIFY, starterPokemon); + party.push(starterPokemon); + loadPokemonAssets.push(starterPokemon.loadAssets()); + }); + overrideModifiers(this.scene); + overrideHeldItems(this.scene, party[0]); + Promise.all(loadPokemonAssets).then(() => { + SoundFade.fadeOut(this.scene, this.scene.sound.get("menu"), 500, true); + this.scene.time.delayedCall(500, () => this.scene.playBgm()); + if (this.scene.gameMode.isClassic) { + this.scene.gameData.gameStats.classicSessionsPlayed++; + } else { + this.scene.gameData.gameStats.endlessSessionsPlayed++; + } + this.scene.newBattle(); + this.scene.arena.init(); + this.scene.sessionPlayTime = 0; + this.scene.lastSavePlayTime = 0; + // Ensures Keldeo (or any future Pokemon that have this type of form change) starts in the correct form + this.scene.getParty().forEach((p: PlayerPokemon) => { + this.scene.triggerPokemonFormChange(p, SpeciesFormChangeMoveLearnedTrigger); + }); + this.end(); + }); + } +} diff --git a/src/phases/select-target-phase.ts b/src/phases/select-target-phase.ts new file mode 100644 index 00000000000..fe72335e312 --- /dev/null +++ b/src/phases/select-target-phase.ts @@ -0,0 +1,32 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { Command } from "#app/ui/command-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import { CommandPhase } from "./command-phase"; +import { PokemonPhase } from "./pokemon-phase"; + +export class SelectTargetPhase extends PokemonPhase { + constructor(scene: BattleScene, fieldIndex: integer) { + super(scene, fieldIndex); + } + + start() { + super.start(); + + const turnCommand = this.scene.currentBattle.turnCommands[this.fieldIndex]; + const move = turnCommand?.move?.move; + this.scene.ui.setMode(Mode.TARGET_SELECT, this.fieldIndex, move, (targets: BattlerIndex[]) => { + this.scene.ui.setMode(Mode.MESSAGE); + if (targets.length < 1) { + this.scene.currentBattle.turnCommands[this.fieldIndex] = null; + this.scene.unshiftPhase(new CommandPhase(this.scene, this.fieldIndex)); + } else { + turnCommand!.targets = targets; //TODO: is the bang correct here? + } + if (turnCommand?.command === Command.BALL && this.fieldIndex) { + this.scene.currentBattle.turnCommands[this.fieldIndex - 1]!.skip = true; //TODO: is the bang correct here? + } + this.end(); + }); + } +} diff --git a/src/phases/shiny-sparkle-phase.ts b/src/phases/shiny-sparkle-phase.ts new file mode 100644 index 00000000000..4cd2b68f881 --- /dev/null +++ b/src/phases/shiny-sparkle-phase.ts @@ -0,0 +1,16 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class ShinySparklePhase extends PokemonPhase { + constructor(scene: BattleScene, battlerIndex: BattlerIndex) { + super(scene, battlerIndex); + } + + start() { + super.start(); + + this.getPokemon().sparkle(); + this.scene.time.delayedCall(1000, () => this.end()); + } +} diff --git a/src/phases/show-ability-phase.ts b/src/phases/show-ability-phase.ts new file mode 100644 index 00000000000..ee0b98f7886 --- /dev/null +++ b/src/phases/show-ability-phase.ts @@ -0,0 +1,29 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export class ShowAbilityPhase extends PokemonPhase { + private passive: boolean; + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, passive: boolean = false) { + super(scene, battlerIndex); + + this.passive = passive; + } + + start() { + super.start(); + + const pokemon = this.getPokemon(); + + if (pokemon) { + this.scene.abilityBar.showAbility(pokemon, this.passive); + + if (pokemon?.battleData) { + pokemon.battleData.abilityRevealed = true; + } + } + + this.end(); + } +} diff --git a/src/phases/show-party-exp-bar-phase.ts b/src/phases/show-party-exp-bar-phase.ts new file mode 100644 index 00000000000..9920472e801 --- /dev/null +++ b/src/phases/show-party-exp-bar-phase.ts @@ -0,0 +1,56 @@ +import BattleScene from "#app/battle-scene.js"; +import { ExpNotification } from "#app/enums/exp-notification.js"; +import { ExpBoosterModifier } from "#app/modifier/modifier.js"; +import * as Utils from "#app/utils.js"; +import { HidePartyExpBarPhase } from "./hide-party-exp-bar-phase"; +import { LevelUpPhase } from "./level-up-phase"; +import { PlayerPartyMemberPokemonPhase } from "./player-party-member-pokemon-phase"; + +export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { + private expValue: number; + + constructor(scene: BattleScene, partyMemberIndex: integer, expValue: number) { + super(scene, partyMemberIndex); + + this.expValue = expValue; + } + + start() { + super.start(); + + const pokemon = this.getPokemon(); + const exp = new Utils.NumberHolder(this.expValue); + this.scene.applyModifiers(ExpBoosterModifier, true, exp); + exp.value = Math.floor(exp.value); + + const lastLevel = pokemon.level; + pokemon.addExp(exp.value); + const newLevel = pokemon.level; + if (newLevel > lastLevel) { + this.scene.unshiftPhase(new LevelUpPhase(this.scene, this.partyMemberIndex, lastLevel, newLevel)); + } + this.scene.unshiftPhase(new HidePartyExpBarPhase(this.scene)); + pokemon.updateInfo(); + + if (this.scene.expParty === ExpNotification.SKIP) { + this.end(); + } else if (this.scene.expParty === ExpNotification.ONLY_LEVEL_UP) { + if (newLevel > lastLevel) { // this means if we level up + // instead of displaying the exp gain in the small frame, we display the new level + // we use the same method for mode 0 & 1, by giving a parameter saying to display the exp or the level + this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, this.scene.expParty === ExpNotification.ONLY_LEVEL_UP, newLevel).then(() => { + setTimeout(() => this.end(), 800 / Math.pow(2, this.scene.expGainsSpeed)); + }); + } else { + this.end(); + } + } else if (this.scene.expGainsSpeed < 3) { + this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, false, newLevel).then(() => { + setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); + }); + } else { + this.end(); + } + + } +} diff --git a/src/phases/show-trainer-phase.ts b/src/phases/show-trainer-phase.ts new file mode 100644 index 00000000000..8a869f582d8 --- /dev/null +++ b/src/phases/show-trainer-phase.ts @@ -0,0 +1,24 @@ +import BattleScene from "#app/battle-scene.js"; +import { PlayerGender } from "#app/enums/player-gender.js"; +import { BattlePhase } from "./battle-phase"; + +export class ShowTrainerPhase extends BattlePhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.trainer.setVisible(true); + + this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back`); + + this.scene.tweens.add({ + targets: this.scene.trainer, + x: 106, + duration: 1000, + onComplete: () => this.end() + }); + } +} diff --git a/src/phases/stat-change-phase.ts b/src/phases/stat-change-phase.ts new file mode 100644 index 00000000000..3469cc62942 --- /dev/null +++ b/src/phases/stat-change-phase.ts @@ -0,0 +1,234 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyPreStatChangeAbAttrs, ProtectStatAbAttr, applyAbAttrs, StatChangeMultiplierAbAttr, StatChangeCopyAbAttr, applyPostStatChangeAbAttrs, PostStatChangeAbAttr } from "#app/data/ability.js"; +import { MistTag, ArenaTagSide } from "#app/data/arena-tag.js"; +import { BattleStat, getBattleStatName, getBattleStatLevelChangeDescription } from "#app/data/battle-stat.js"; +import Pokemon from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { PokemonResetNegativeStatStageModifier } from "#app/modifier/modifier.js"; +import { handleTutorial, Tutorial } from "#app/tutorial.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { PokemonPhase } from "./pokemon-phase"; + +export type StatChangeCallback = (target: Pokemon | null, changed: BattleStat[], relativeChanges: number[]) => void; + +export class StatChangePhase extends PokemonPhase { + private stats: BattleStat[]; + private selfTarget: boolean; + private levels: integer; + private showMessage: boolean; + private ignoreAbilities: boolean; + private canBeCopied: boolean; + private onChange: StatChangeCallback | null; + + + constructor(scene: BattleScene, battlerIndex: BattlerIndex, selfTarget: boolean, stats: BattleStat[], levels: integer, showMessage: boolean = true, ignoreAbilities: boolean = false, canBeCopied: boolean = true, onChange: StatChangeCallback | null = null) { + super(scene, battlerIndex); + + this.selfTarget = selfTarget; + this.stats = stats; + this.levels = levels; + this.showMessage = showMessage; + this.ignoreAbilities = ignoreAbilities; + this.canBeCopied = canBeCopied; + this.onChange = onChange; + } + + start() { + const pokemon = this.getPokemon(); + + let random = false; + + if (this.stats.length === 1 && this.stats[0] === BattleStat.RAND) { + this.stats[0] = this.getRandomStat(); + random = true; + } + + this.aggregateStatChanges(random); + + if (!pokemon.isActive(true)) { + return this.end(); + } + + const filteredStats = this.stats.map(s => s !== BattleStat.RAND ? s : this.getRandomStat()).filter(stat => { + const cancelled = new Utils.BooleanHolder(false); + + if (!this.selfTarget && this.levels < 0) { + this.scene.arena.applyTagsForSide(MistTag, pokemon.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, cancelled); + } + + if (!cancelled.value && !this.selfTarget && this.levels < 0) { + applyPreStatChangeAbAttrs(ProtectStatAbAttr, this.getPokemon(), stat, cancelled); + } + + return !cancelled.value; + }); + + const levels = new Utils.IntegerHolder(this.levels); + + if (!this.ignoreAbilities) { + applyAbAttrs(StatChangeMultiplierAbAttr, pokemon, null, levels); + } + + const battleStats = this.getPokemon().summonData.battleStats; + const relLevels = filteredStats.map(stat => (levels.value >= 1 ? Math.min(battleStats![stat] + levels.value, 6) : Math.max(battleStats![stat] + levels.value, -6)) - battleStats![stat]); + + this.onChange && this.onChange(this.getPokemon(), filteredStats, relLevels); + + const end = () => { + if (this.showMessage) { + const messages = this.getStatChangeMessages(filteredStats, levels.value, relLevels); + for (const message of messages) { + this.scene.queueMessage(message); + } + } + + for (const stat of filteredStats) { + pokemon.summonData.battleStats[stat] = Math.max(Math.min(pokemon.summonData.battleStats[stat] + levels.value, 6), -6); + } + + if (levels.value > 0 && this.canBeCopied) { + for (const opponent of pokemon.getOpponents()) { + applyAbAttrs(StatChangeCopyAbAttr, opponent, null, this.stats, levels.value); + } + } + + applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget); + + // Look for any other stat change phases; if this is the last one, do White Herb check + const existingPhase = this.scene.findPhase(p => p instanceof StatChangePhase && p.battlerIndex === this.battlerIndex); + if (!(existingPhase instanceof StatChangePhase)) { + // Apply White Herb if needed + const whiteHerb = this.scene.applyModifier(PokemonResetNegativeStatStageModifier, this.player, pokemon) as PokemonResetNegativeStatStageModifier; + // If the White Herb was applied, consume it + if (whiteHerb) { + --whiteHerb.stackCount; + if (whiteHerb.stackCount <= 0) { + this.scene.removeModifier(whiteHerb); + } + this.scene.updateModifiers(this.player); + } + } + + pokemon.updateInfo(); + + handleTutorial(this.scene, Tutorial.Stat_Change).then(() => super.end()); + }; + + if (relLevels.filter(l => l).length && this.scene.moveAnimations) { + pokemon.enableMask(); + const pokemonMaskSprite = pokemon.maskSprite; + + const tileX = (this.player ? 106 : 236) * pokemon.getSpriteScale() * this.scene.field.scale; + const tileY = ((this.player ? 148 : 84) + (levels.value >= 1 ? 160 : 0)) * pokemon.getSpriteScale() * this.scene.field.scale; + const tileWidth = 156 * this.scene.field.scale * pokemon.getSpriteScale(); + const tileHeight = 316 * this.scene.field.scale * pokemon.getSpriteScale(); + + // On increase, show the red sprite located at ATK + // On decrease, show the blue sprite located at SPD + const spriteColor = levels.value >= 1 ? BattleStat[BattleStat.ATK].toLowerCase() : BattleStat[BattleStat.SPD].toLowerCase(); + const statSprite = this.scene.add.tileSprite(tileX, tileY, tileWidth, tileHeight, "battle_stats", spriteColor); + statSprite.setPipeline(this.scene.fieldSpritePipeline); + statSprite.setAlpha(0); + statSprite.setScale(6); + statSprite.setOrigin(0.5, 1); + + this.scene.playSound(`stat_${levels.value >= 1 ? "up" : "down"}`); + + statSprite.setMask(new Phaser.Display.Masks.BitmapMask(this.scene, pokemonMaskSprite ?? undefined)); + + this.scene.tweens.add({ + targets: statSprite, + duration: 250, + alpha: 0.8375, + onComplete: () => { + this.scene.tweens.add({ + targets: statSprite, + delay: 1000, + duration: 250, + alpha: 0 + }); + } + }); + + this.scene.tweens.add({ + targets: statSprite, + duration: 1500, + y: `${levels.value >= 1 ? "-" : "+"}=${160 * 6}` + }); + + this.scene.time.delayedCall(1750, () => { + pokemon.disableMask(); + end(); + }); + } else { + end(); + } + } + + getRandomStat(): BattleStat { + const allStats = Utils.getEnumValues(BattleStat); + return this.getPokemon() ? allStats[this.getPokemon()!.randSeedInt(BattleStat.SPD + 1)] : BattleStat.ATK; // TODO: return default ATK on random? idk... + } + + aggregateStatChanges(random: boolean = false): void { + const isAccEva = [BattleStat.ACC, BattleStat.EVA].some(s => this.stats.includes(s)); + let existingPhase: StatChangePhase; + if (this.stats.length === 1) { + while ((existingPhase = (this.scene.findPhase(p => p instanceof StatChangePhase && p.battlerIndex === this.battlerIndex && p.stats.length === 1 + && (p.stats[0] === this.stats[0] || (random && p.stats[0] === BattleStat.RAND)) + && p.selfTarget === this.selfTarget && p.showMessage === this.showMessage && p.ignoreAbilities === this.ignoreAbilities) as StatChangePhase))) { + if (existingPhase.stats[0] === BattleStat.RAND) { + existingPhase.stats[0] = this.getRandomStat(); + if (existingPhase.stats[0] !== this.stats[0]) { + continue; + } + } + this.levels += existingPhase.levels; + + if (!this.scene.tryRemovePhase(p => p === existingPhase)) { + break; + } + } + } + while ((existingPhase = (this.scene.findPhase(p => p instanceof StatChangePhase && p.battlerIndex === this.battlerIndex && p.selfTarget === this.selfTarget + && ([BattleStat.ACC, BattleStat.EVA].some(s => p.stats.includes(s)) === isAccEva) + && p.levels === this.levels && p.showMessage === this.showMessage && p.ignoreAbilities === this.ignoreAbilities) as StatChangePhase))) { + this.stats.push(...existingPhase.stats); + if (!this.scene.tryRemovePhase(p => p === existingPhase)) { + break; + } + } + } + + getStatChangeMessages(stats: BattleStat[], levels: integer, relLevels: integer[]): string[] { + const messages: string[] = []; + + const relLevelStatIndexes = {}; + for (let rl = 0; rl < relLevels.length; rl++) { + const relLevel = relLevels[rl]; + if (!relLevelStatIndexes[relLevel]) { + relLevelStatIndexes[relLevel] = []; + } + relLevelStatIndexes[relLevel].push(rl); + } + + Object.keys(relLevelStatIndexes).forEach(rl => { + const relLevelStats = stats.filter((_, i) => relLevelStatIndexes[rl].includes(i)); + let statsFragment = ""; + + if (relLevelStats.length > 1) { + statsFragment = relLevelStats.length >= 5 + ? i18next.t("battle:stats") + : `${relLevelStats.slice(0, -1).map(s => getBattleStatName(s)).join(", ")}${relLevelStats.length > 2 ? "," : ""} ${i18next.t("battle:statsAnd")} ${getBattleStatName(relLevelStats[relLevelStats.length - 1])}`; + messages.push(getBattleStatLevelChangeDescription(getPokemonNameWithAffix(this.getPokemon()), statsFragment, Math.abs(parseInt(rl)), levels >= 1,relLevelStats.length)); + } else { + statsFragment = getBattleStatName(relLevelStats[0]); + messages.push(getBattleStatLevelChangeDescription(getPokemonNameWithAffix(this.getPokemon()), statsFragment, Math.abs(parseInt(rl)), levels >= 1,relLevelStats.length)); + } + }); + + return messages; + } +} diff --git a/src/phases/summon-missing-phase.ts b/src/phases/summon-missing-phase.ts new file mode 100644 index 00000000000..bb9607285ad --- /dev/null +++ b/src/phases/summon-missing-phase.ts @@ -0,0 +1,15 @@ +import BattleScene from "#app/battle-scene.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import i18next from "i18next"; +import { SummonPhase } from "./summon-phase"; + +export class SummonMissingPhase extends SummonPhase { + constructor(scene: BattleScene, fieldIndex: integer) { + super(scene, fieldIndex); + } + + preSummon(): void { + this.scene.ui.showText(i18next.t("battle:sendOutPokemon", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); + this.scene.time.delayedCall(250, () => this.summon()); + } +} diff --git a/src/phases/summon-phase.ts b/src/phases/summon-phase.ts new file mode 100644 index 00000000000..50424170ea7 --- /dev/null +++ b/src/phases/summon-phase.ts @@ -0,0 +1,194 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattleType } from "#app/battle.js"; +import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball.js"; +import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms.js"; +import { TrainerSlot } from "#app/data/trainer-config.js"; +import { PlayerGender } from "#app/enums/player-gender.js"; +import { addPokeballOpenParticles } from "#app/field/anims.js"; +import Pokemon, { FieldPosition } from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import i18next from "i18next"; +import { PartyMemberPokemonPhase } from "./party-member-pokemon-phase"; +import { PostSummonPhase } from "./post-summon-phase"; +import { GameOverPhase } from "./game-over-phase"; +import { ShinySparklePhase } from "./shiny-sparkle-phase"; + +export class SummonPhase extends PartyMemberPokemonPhase { + private loaded: boolean; + + constructor(scene: BattleScene, fieldIndex: integer, player: boolean = true, loaded: boolean = false) { + super(scene, fieldIndex, player); + + this.loaded = loaded; + } + + start() { + super.start(); + + 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 or illegal under a challenge, switch to the first non-fainted legal Pokemon + if (!partyMember.isAllowedInBattle()) { + console.warn("The Pokemon about to be sent out is fainted or illegal under a challenge. Attempting to resolve..."); + + // First check if they're somehow still in play, if so remove them. + if (partyMember.isOnField()) { + partyMember.leaveField(); + } + + const party = this.getParty(); + + // Find the first non-fainted Pokemon index above the current one + const legalIndex = party.findIndex((p, i) => i > this.partyMemberIndex && p.isAllowedInBattle()); + if (legalIndex === -1) { + console.error("Party Details:\n", party); + console.error("All available Pokemon were fainted or illegal!"); + this.scene.clearPhaseQueue(); + this.scene.unshiftPhase(new GameOverPhase(this.scene)); + this.end(); + return; + } + + // Swaps the fainted Pokemon and the first non-fainted legal Pokemon in the party + [party[this.partyMemberIndex], party[legalIndex]] = [party[legalIndex], party[this.partyMemberIndex]]; + console.warn("Swapped %s %O with %s %O", getPokemonNameWithAffix(partyMember), partyMember, getPokemonNameWithAffix(party[0]), party[0]); + } + + if (this.player) { + this.scene.ui.showText(i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(this.getPokemon()) })); + if (this.player) { + this.scene.pbTray.hide(); + } + this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? "f" : "m"}_back_pb`); + this.scene.time.delayedCall(562, () => { + this.scene.trainer.setFrame("2"); + this.scene.time.delayedCall(64, () => { + this.scene.trainer.setFrame("3"); + }); + }); + this.scene.tweens.add({ + targets: this.scene.trainer, + x: -36, + duration: 1000, + onComplete: () => this.scene.trainer.setVisible(false) + }); + this.scene.time.delayedCall(750, () => this.summon()); + } else { + const trainerName = this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); + const pokemonName = this.getPokemon().getNameToRender(); + const message = i18next.t("battle:trainerSendOut", { trainerName, pokemonName }); + + this.scene.pbTrayEnemy.hide(); + this.scene.ui.showText(message, null, () => this.summon()); + } + } + + summon(): void { + const pokemon = this.getPokemon(); + + const pokeball = this.scene.addFieldSprite(this.player ? 36 : 248, this.player ? 80 : 44, "pb", getPokeballAtlasKey(pokemon.pokeball)); + pokeball.setVisible(false); + pokeball.setOrigin(0.5, 0.625); + this.scene.field.add(pokeball); + + if (this.fieldIndex === 1) { + pokemon.setFieldPosition(FieldPosition.RIGHT, 0); + } else { + const availablePartyMembers = this.getParty().filter(p => p.isAllowedInBattle()).length; + pokemon.setFieldPosition(!this.scene.currentBattle.double || availablePartyMembers === 1 ? FieldPosition.CENTER : FieldPosition.LEFT); + } + + const fpOffset = pokemon.getFieldPositionOffset(); + + pokeball.setVisible(true); + + this.scene.tweens.add({ + targets: pokeball, + duration: 650, + x: (this.player ? 100 : 236) + fpOffset[0] + }); + + this.scene.tweens.add({ + targets: pokeball, + duration: 150, + ease: "Cubic.easeOut", + y: (this.player ? 70 : 34) + fpOffset[1], + onComplete: () => { + this.scene.tweens.add({ + targets: pokeball, + duration: 500, + ease: "Cubic.easeIn", + angle: 1440, + y: (this.player ? 132 : 86) + fpOffset[1], + onComplete: () => { + this.scene.playSound("pb_rel"); + pokeball.destroy(); + this.scene.add.existing(pokemon); + this.scene.field.add(pokemon); + if (!this.player) { + const playerPokemon = this.scene.getPlayerPokemon() as Pokemon; + if (playerPokemon?.visible) { + this.scene.field.moveBelow(pokemon, playerPokemon); + } + this.scene.currentBattle.seenEnemyPartyMemberIds.add(pokemon.id); + } + addPokeballOpenParticles(this.scene, pokemon.x, pokemon.y - 16, pokemon.pokeball); + this.scene.updateModifiers(this.player); + this.scene.updateFieldScale(); + pokemon.showInfo(); + pokemon.playAnim(); + pokemon.setVisible(true); + pokemon.getSprite().setVisible(true); + pokemon.setScale(0.5); + pokemon.tint(getPokeballTintColor(pokemon.pokeball)); + pokemon.untint(250, "Sine.easeIn"); + this.scene.updateFieldScale(); + this.scene.tweens.add({ + targets: pokemon, + duration: 250, + ease: "Sine.easeIn", + scale: pokemon.getSpriteScale(), + onComplete: () => { + pokemon.cry(pokemon.getHpRatio() > 0.25 ? undefined : { rate: 0.85 }); + pokemon.getSprite().clearTint(); + pokemon.resetSummonData(); + this.scene.time.delayedCall(1000, () => this.end()); + } + }); + } + }); + } + }); + } + + onEnd(): void { + const pokemon = this.getPokemon(); + + if (pokemon.isShiny()) { + this.scene.unshiftPhase(new ShinySparklePhase(this.scene, pokemon.getBattlerIndex())); + } + + pokemon.resetTurnData(); + + if (!this.loaded || this.scene.currentBattle.battleType === BattleType.TRAINER || (this.scene.currentBattle.waveIndex % 10) === 1) { + this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); + this.queuePostSummon(); + } + } + + queuePostSummon(): void { + this.scene.pushPhase(new PostSummonPhase(this.scene, this.getPokemon().getBattlerIndex())); + } + + end() { + this.onEnd(); + + super.end(); + } +} diff --git a/src/phases/switch-biome-phase.ts b/src/phases/switch-biome-phase.ts new file mode 100644 index 00000000000..f20cd59b240 --- /dev/null +++ b/src/phases/switch-biome-phase.ts @@ -0,0 +1,65 @@ +import BattleScene from "#app/battle-scene.js"; +import { Biome } from "#app/enums/biome.js"; +import { getBiomeKey } from "#app/field/arena.js"; +import { BattlePhase } from "./battle-phase"; + +export class SwitchBiomePhase extends BattlePhase { + private nextBiome: Biome; + + constructor(scene: BattleScene, nextBiome: Biome) { + super(scene); + + this.nextBiome = nextBiome; + } + + start() { + super.start(); + + if (this.nextBiome === undefined) { + return this.end(); + } + + this.scene.tweens.add({ + targets: [this.scene.arenaEnemy, this.scene.lastEnemyTrainer], + x: "+=300", + duration: 2000, + onComplete: () => { + this.scene.arenaEnemy.setX(this.scene.arenaEnemy.x - 600); + + this.scene.newArena(this.nextBiome); + + const biomeKey = getBiomeKey(this.nextBiome); + const bgTexture = `${biomeKey}_bg`; + this.scene.arenaBgTransition.setTexture(bgTexture); + this.scene.arenaBgTransition.setAlpha(0); + this.scene.arenaBgTransition.setVisible(true); + this.scene.arenaPlayerTransition.setBiome(this.nextBiome); + this.scene.arenaPlayerTransition.setAlpha(0); + this.scene.arenaPlayerTransition.setVisible(true); + + this.scene.tweens.add({ + targets: [this.scene.arenaPlayer, this.scene.arenaBgTransition, this.scene.arenaPlayerTransition], + duration: 1000, + delay: 1000, + ease: "Sine.easeInOut", + alpha: (target: any) => target === this.scene.arenaPlayer ? 0 : 1, + onComplete: () => { + this.scene.arenaBg.setTexture(bgTexture); + this.scene.arenaPlayer.setBiome(this.nextBiome); + this.scene.arenaPlayer.setAlpha(1); + this.scene.arenaEnemy.setBiome(this.nextBiome); + this.scene.arenaEnemy.setAlpha(1); + this.scene.arenaNextEnemy.setBiome(this.nextBiome); + this.scene.arenaBgTransition.setVisible(false); + this.scene.arenaPlayerTransition.setVisible(false); + if (this.scene.lastEnemyTrainer) { + this.scene.lastEnemyTrainer.destroy(); + } + + this.end(); + } + }); + } + }); + } +} diff --git a/src/phases/switch-phase.ts b/src/phases/switch-phase.ts new file mode 100644 index 00000000000..e64dab44a02 --- /dev/null +++ b/src/phases/switch-phase.ts @@ -0,0 +1,69 @@ +import BattleScene from "#app/battle-scene.js"; +import PartyUiHandler, { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import { BattlePhase } from "./battle-phase"; +import { SwitchSummonPhase } from "./switch-summon-phase"; + +/** + * Opens the party selector UI and transitions into a {@linkcode SwitchSummonPhase} + * for the player (if a switch would be valid for the current battle state). + */ +export class SwitchPhase extends BattlePhase { + protected fieldIndex: integer; + private switchReason: "faint" | "moveEffect" | "switchMode"; + private doReturn: boolean; + + /** + * Creates a new SwitchPhase + * @param scene {@linkcode BattleScene} Current battle scene + * @param fieldIndex Field index to switch out + * @param switchReason Indicates why this switch is occurring. The valid options are + * `'faint'` (party member fainted), `'moveEffect'` (uturn, baton pass, dragon + * tail, etc), and `'switchMode'` (start-of-battle optional switch). This + * helps the phase determine both if the switch should be cancellable by the + * user, as well as determine if the party UI should be shown at all. + * @param doReturn Indicates if this switch should call back the pokemon at + * the {@linkcode fieldIndex} (true), or if the mon has already been recalled + * (false). + */ + constructor(scene: BattleScene, fieldIndex: integer, switchReason: "faint" | "moveEffect" | "switchMode", doReturn: boolean) { + super(scene); + + this.fieldIndex = fieldIndex; + this.switchReason = switchReason; + this.doReturn = doReturn; + } + + start() { + super.start(); + + const isForcedSwitch = this.switchReason !== "switchMode"; + + // Skip forced switch if impossible (no remaining party members that aren't in battle) + if (isForcedSwitch && !this.scene.getParty().filter(p => p.isAllowedInBattle() && !p.isActive(true)).length) { + return super.end(); + } + + // Skip if the fainted party member has been revived already. see also; battle.test.ts + if (this.switchReason === "faint" && !this.scene.getParty()[this.fieldIndex].isFainted()) { + return super.end(); + } + + // Check if there is any space still in field + const numActiveBattlers = this.scene.getPlayerField().filter(p => p.isAllowedInBattle() && p.isActive(true)).length; + const willReturnModifer = (this.doReturn ? 1 : 0); // need to subtract this if doReturn is true, because the pokemon in the given index hasn't left the field yet. (used for volt switch + pursuit, etc) + if (isForcedSwitch && numActiveBattlers - willReturnModifer >= this.scene.currentBattle.getBattlerCount()) { + return super.end(); + } + + // Override field index to 0 in case of double battle where 2/3 remaining legal party members fainted at once + const fieldIndex = this.scene.currentBattle.getBattlerCount() === 1 || this.scene.getParty().filter(p => p.isAllowedInBattle()).length > 1 ? this.fieldIndex : 0; + + this.scene.ui.setMode(Mode.PARTY, isForcedSwitch ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, fieldIndex, (slotIndex: integer, option: PartyOption) => { + if (slotIndex >= this.scene.currentBattle.getBattlerCount() && slotIndex < 6) { + this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, fieldIndex, slotIndex, this.doReturn, option === PartyOption.PASS_BATON)); + } + this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + }, PartyUiHandler.FilterNonFainted); + } +} diff --git a/src/phases/switch-summon-phase.ts b/src/phases/switch-summon-phase.ts new file mode 100644 index 00000000000..3e401925cea --- /dev/null +++ b/src/phases/switch-summon-phase.ts @@ -0,0 +1,168 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr } from "#app/data/ability.js"; +import { allMoves, ForceSwitchOutAttr } from "#app/data/move.js"; +import { getPokeballTintColor } from "#app/data/pokeball.js"; +import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms.js"; +import { TrainerSlot } from "#app/data/trainer-config.js"; +import Pokemon from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { SwitchEffectTransferModifier } from "#app/modifier/modifier.js"; +import { Command } from "#app/ui/command-ui-handler.js"; +import i18next from "i18next"; +import { PostSummonPhase } from "./post-summon-phase"; +import { SummonPhase } from "./summon-phase"; + +export class SwitchSummonPhase extends SummonPhase { + private slotIndex: integer; + private doReturn: boolean; + private batonPass: boolean; + + private lastPokemon: Pokemon; + + /** + * Constructor for creating a new SwitchSummonPhase + * @param scene {@linkcode BattleScene} the scene the phase is associated with + * @param fieldIndex integer representing position on the battle field + * @param slotIndex integer for the index of pokemon (in party of 6) to switch into + * @param doReturn boolean whether to render "comeback" dialogue + * @param batonPass boolean if the switch is from baton pass + * @param player boolean if the switch is from the player + */ + constructor(scene: BattleScene, fieldIndex: integer, slotIndex: integer, doReturn: boolean, batonPass: boolean, player?: boolean) { + super(scene, fieldIndex, player !== undefined ? player : true); + + this.slotIndex = slotIndex; + this.doReturn = doReturn; + this.batonPass = batonPass; + } + + start(): void { + super.start(); + } + + preSummon(): void { + if (!this.player) { + if (this.slotIndex === -1) { + //@ts-ignore + this.slotIndex = this.scene.currentBattle.trainer?.getNextSummonIndex(!this.fieldIndex ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); // TODO: what would be the default trainer-slot fallback? + } + if (this.slotIndex > -1) { + this.showEnemyTrainer(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER); + this.scene.pbTrayEnemy.showPbTray(this.scene.getEnemyParty()); + } + } + + if (!this.doReturn || (this.slotIndex !== -1 && !(this.player ? this.scene.getParty() : this.scene.getEnemyParty())[this.slotIndex])) { + if (this.player) { + return this.switchAndSummon(); + } else { + this.scene.time.delayedCall(750, () => this.switchAndSummon()); + return; + } + } + + const pokemon = this.getPokemon(); + + if (!this.batonPass) { + (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.removeTagsBySourceId(pokemon.id)); + } + + this.scene.ui.showText(this.player ? + i18next.t("battle:playerComeBack", { pokemonName: getPokemonNameWithAffix(pokemon) }) : + i18next.t("battle:trainerComeBack", { + trainerName: this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), + pokemonName: getPokemonNameWithAffix(pokemon) + }) + ); + this.scene.playSound("pb_rel"); + pokemon.hideInfo(); + pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, "Sine.easeIn"); + this.scene.tweens.add({ + targets: pokemon, + duration: 250, + ease: "Sine.easeIn", + scale: 0.5, + onComplete: () => { + pokemon.leaveField(!this.batonPass, false); + this.scene.time.delayedCall(750, () => this.switchAndSummon()); + } + }); + } + + switchAndSummon() { + const party = this.player ? this.getParty() : this.scene.getEnemyParty(); + const switchedInPokemon = party[this.slotIndex]; + this.lastPokemon = this.getPokemon(); + applyPreSwitchOutAbAttrs(PreSwitchOutAbAttr, this.lastPokemon); + if (this.batonPass && switchedInPokemon) { + (this.player ? this.scene.getEnemyField() : this.scene.getPlayerField()).forEach(enemyPokemon => enemyPokemon.transferTagsBySourceId(this.lastPokemon.id, switchedInPokemon.id)); + if (!this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { + const batonPassModifier = this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier + && (m as SwitchEffectTransferModifier).pokemonId === this.lastPokemon.id) as SwitchEffectTransferModifier; + if (batonPassModifier && !this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === switchedInPokemon.id)) { + this.scene.tryTransferHeldItemModifier(batonPassModifier, switchedInPokemon, false); + } + } + } + if (switchedInPokemon) { + party[this.slotIndex] = this.lastPokemon; + party[this.fieldIndex] = switchedInPokemon; + const showTextAndSummon = () => { + this.scene.ui.showText(this.player ? + i18next.t("battle:playerGo", { pokemonName: getPokemonNameWithAffix(switchedInPokemon) }) : + i18next.t("battle:trainerGo", { + trainerName: this.scene.currentBattle.trainer?.getName(!(this.fieldIndex % 2) ? TrainerSlot.TRAINER : TrainerSlot.TRAINER_PARTNER), + pokemonName: this.getPokemon().getNameToRender() + }) + ); + // Ensure improperly persisted summon data (such as tags) is cleared upon switching + if (!this.batonPass) { + switchedInPokemon.resetBattleData(); + switchedInPokemon.resetSummonData(); + } + this.summon(); + }; + if (this.player) { + showTextAndSummon(); + } else { + this.scene.time.delayedCall(1500, () => { + this.hideEnemyTrainer(); + this.scene.pbTrayEnemy.hide(); + showTextAndSummon(); + }); + } + } else { + this.end(); + } + } + + onEnd(): void { + super.onEnd(); + + const pokemon = this.getPokemon(); + + const moveId = this.lastPokemon?.scene.currentBattle.lastMove; + const lastUsedMove = moveId ? allMoves[moveId] : undefined; + + const currentCommand = pokemon.scene.currentBattle.turnCommands[this.fieldIndex]?.command; + const lastPokemonIsForceSwitchedAndNotFainted = lastUsedMove?.hasAttr(ForceSwitchOutAttr) && !this.lastPokemon.isFainted(); + + // Compensate for turn spent summoning + // Or compensate for force switch move if switched out pokemon is not fainted + if (currentCommand === Command.POKEMON || lastPokemonIsForceSwitchedAndNotFainted) { + pokemon.battleSummonData.turnCount--; + } + + if (this.batonPass && pokemon) { + pokemon.transferSummon(this.lastPokemon); + } + + this.lastPokemon?.resetSummonData(); + + this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeActiveTrigger, true); + } + + queuePostSummon(): void { + this.scene.unshiftPhase(new PostSummonPhase(this.scene, this.getPokemon().getBattlerIndex())); + } +} diff --git a/src/phases/test-message-phase.ts b/src/phases/test-message-phase.ts new file mode 100644 index 00000000000..14fed24ef4b --- /dev/null +++ b/src/phases/test-message-phase.ts @@ -0,0 +1,8 @@ +import BattleScene from "#app/battle-scene.js"; +import { MessagePhase } from "./message-phase"; + +export class TestMessagePhase extends MessagePhase { + constructor(scene: BattleScene, message: string) { + super(scene, message, null, true); + } +} diff --git a/src/phases/title-phase.ts b/src/phases/title-phase.ts new file mode 100644 index 00000000000..c74dca97f5c --- /dev/null +++ b/src/phases/title-phase.ts @@ -0,0 +1,303 @@ +import { loggedInUser } from "#app/account.js"; +import BattleScene from "#app/battle-scene.js"; +import { BattleType } from "#app/battle.js"; +import { getDailyRunStarters, fetchDailyRunSeed } from "#app/data/daily-run.js"; +import { Gender } from "#app/data/gender.js"; +import { getBiomeKey } from "#app/field/arena.js"; +import { GameModes, GameMode, getGameMode } from "#app/game-mode.js"; +import { regenerateModifierPoolThresholds, ModifierPoolType, modifierTypes, getDailyRunStarterModifiers } from "#app/modifier/modifier-type.js"; +import { Phase } from "#app/phase.js"; +import { SessionSaveData } from "#app/system/game-data.js"; +import { Unlockables } from "#app/system/unlockables.js"; +import { vouchers } from "#app/system/voucher.js"; +import { OptionSelectItem, OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler.js"; +import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { Modifier } from "#app/modifier/modifier.js"; +import { CheckSwitchPhase } from "./check-switch-phase"; +import { EncounterPhase } from "./encounter-phase"; +import { SelectChallengePhase } from "./select-challenge-phase"; +import { SelectStarterPhase } from "./select-starter-phase"; +import { SummonPhase } from "./summon-phase"; + + +export class TitlePhase extends Phase { + private loaded: boolean; + private lastSessionData: SessionSaveData; + public gameMode: GameModes; + + constructor(scene: BattleScene) { + super(scene); + + this.loaded = false; + } + + start(): void { + super.start(); + + this.scene.ui.clearText(); + this.scene.ui.fadeIn(250); + + this.scene.playBgm("title", true); + + this.scene.gameData.getSession(loggedInUser?.lastSessionSlot ?? -1).then(sessionData => { + if (sessionData) { + this.lastSessionData = sessionData; + const biomeKey = getBiomeKey(sessionData.arena.biome); + const bgTexture = `${biomeKey}_bg`; + this.scene.arenaBg.setTexture(bgTexture); + } + this.showOptions(); + }).catch(err => { + console.error(err); + this.showOptions(); + }); + } + + showOptions(): void { + const options: OptionSelectItem[] = []; + if (loggedInUser && loggedInUser.lastSessionSlot > -1) { + options.push({ + label: i18next.t("continue", {ns: "menu"}), + handler: () => { + this.loadSaveSlot(this.lastSessionData || !loggedInUser ? -1 : loggedInUser.lastSessionSlot); + return true; + } + }); + } + options.push({ + label: i18next.t("menu:newGame"), + handler: () => { + const setModeAndEnd = (gameMode: GameModes) => { + this.gameMode = gameMode; + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.clearText(); + this.end(); + }; + if (this.scene.gameData.unlocks[Unlockables.ENDLESS_MODE]) { + const options: OptionSelectItem[] = [ + { + label: GameMode.getModeName(GameModes.CLASSIC), + handler: () => { + setModeAndEnd(GameModes.CLASSIC); + return true; + } + }, + { + label: GameMode.getModeName(GameModes.CHALLENGE), + handler: () => { + setModeAndEnd(GameModes.CHALLENGE); + return true; + } + }, + { + label: GameMode.getModeName(GameModes.ENDLESS), + handler: () => { + setModeAndEnd(GameModes.ENDLESS); + return true; + } + } + ]; + if (this.scene.gameData.unlocks[Unlockables.SPLICED_ENDLESS_MODE]) { + options.push({ + label: GameMode.getModeName(GameModes.SPLICED_ENDLESS), + handler: () => { + setModeAndEnd(GameModes.SPLICED_ENDLESS); + return true; + } + }); + } + options.push({ + label: i18next.t("menu:cancel"), + handler: () => { + this.scene.clearPhaseQueue(); + this.scene.pushPhase(new TitlePhase(this.scene)); + super.end(); + return true; + } + }); + this.scene.ui.showText(i18next.t("menu:selectGameMode"), null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); + } else { + this.gameMode = GameModes.CLASSIC; + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.clearText(); + this.end(); + } + return true; + } + }, + { + label: i18next.t("menu:loadGame"), + handler: () => { + this.scene.ui.setOverlayMode(Mode.SAVE_SLOT, SaveSlotUiMode.LOAD, + (slotId: integer) => { + if (slotId === -1) { + return this.showOptions(); + } + this.loadSaveSlot(slotId); + }); + return true; + } + }, + { + label: i18next.t("menu:dailyRun"), + handler: () => { + this.initDailyRun(); + return true; + }, + keepOpen: true + }, + { + label: i18next.t("menu:settings"), + handler: () => { + this.scene.ui.setOverlayMode(Mode.SETTINGS); + return true; + }, + keepOpen: true + }); + const config: OptionSelectConfig = { + options: options, + noCancel: true, + yOffset: 47 + }; + this.scene.ui.setMode(Mode.TITLE, config); + } + + loadSaveSlot(slotId: integer): void { + this.scene.sessionSlotId = slotId > -1 || !loggedInUser ? slotId : loggedInUser.lastSessionSlot; + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.resetModeChain(); + this.scene.gameData.loadSession(this.scene, slotId, slotId === -1 ? this.lastSessionData : undefined).then((success: boolean) => { + if (success) { + this.loaded = true; + this.scene.ui.showText(i18next.t("menu:sessionSuccess"), null, () => this.end()); + } else { + this.end(); + } + }).catch(err => { + console.error(err); + this.scene.ui.showText(i18next.t("menu:failedToLoadSession"), null); + }); + } + + initDailyRun(): void { + this.scene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: integer) => { + this.scene.clearPhaseQueue(); + if (slotId === -1) { + this.scene.pushPhase(new TitlePhase(this.scene)); + return super.end(); + } + this.scene.sessionSlotId = slotId; + + const generateDaily = (seed: string) => { + this.scene.gameMode = getGameMode(GameModes.DAILY); + + this.scene.setSeed(seed); + this.scene.resetSeed(1); + + this.scene.money = this.scene.gameMode.getStartingMoney(); + + const starters = getDailyRunStarters(this.scene, seed); + const startingLevel = this.scene.gameMode.getStartingLevel(); + + const party = this.scene.getParty(); + const loadPokemonAssets: Promise[] = []; + for (const starter of starters) { + const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); + const starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); + const starterGender = starter.species.malePercent !== null + ? !starterProps.female ? Gender.MALE : Gender.FEMALE + : Gender.GENDERLESS; + const starterPokemon = this.scene.addPlayerPokemon(starter.species, startingLevel, starter.abilityIndex, starterFormIndex, starterGender, starterProps.shiny, starterProps.variant, undefined, starter.nature); + starterPokemon.setVisible(false); + party.push(starterPokemon); + loadPokemonAssets.push(starterPokemon.loadAssets()); + } + + regenerateModifierPoolThresholds(party, ModifierPoolType.DAILY_STARTER); + + const modifiers: Modifier[] = Array(3).fill(null).map(() => modifierTypes.EXP_SHARE().withIdFromFunc(modifierTypes.EXP_SHARE).newModifier()) + .concat(Array(3).fill(null).map(() => modifierTypes.GOLDEN_EXP_CHARM().withIdFromFunc(modifierTypes.GOLDEN_EXP_CHARM).newModifier())) + .concat(getDailyRunStarterModifiers(party)) + .filter((m) => m !== null); + + for (const m of modifiers) { + this.scene.addModifier(m, true, false, false, true); + } + this.scene.updateModifiers(true, true); + + Promise.all(loadPokemonAssets).then(() => { + this.scene.time.delayedCall(500, () => this.scene.playBgm()); + this.scene.gameData.gameStats.dailyRunSessionsPlayed++; + this.scene.newArena(this.scene.gameMode.getStartingBiome(this.scene)); + this.scene.newBattle(); + this.scene.arena.init(); + this.scene.sessionPlayTime = 0; + this.scene.lastSavePlayTime = 0; + this.end(); + }); + }; + + // If Online, calls seed fetch from db to generate daily run. If Offline, generates a daily run based on current date. + if (!Utils.isLocal) { + fetchDailyRunSeed().then(seed => { + if (seed) { + generateDaily(seed); + } else { + throw new Error("Daily run seed is null!"); + } + }).catch(err => { + console.error("Failed to load daily run:\n", err); + }); + } else { + generateDaily(btoa(new Date().toISOString().substring(0, 10))); + } + }); + } + + end(): void { + if (!this.loaded && !this.scene.gameMode.isDaily) { + this.scene.arena.preloadBgm(); + this.scene.gameMode = getGameMode(this.gameMode); + if (this.gameMode === GameModes.CHALLENGE) { + this.scene.pushPhase(new SelectChallengePhase(this.scene)); + } else { + this.scene.pushPhase(new SelectStarterPhase(this.scene)); + } + this.scene.newArena(this.scene.gameMode.getStartingBiome(this.scene)); + } else { + this.scene.playBgm(); + } + + this.scene.pushPhase(new EncounterPhase(this.scene, this.loaded)); + + if (this.loaded) { + const availablePartyMembers = this.scene.getParty().filter(p => p.isAllowedInBattle()).length; + + this.scene.pushPhase(new SummonPhase(this.scene, 0, true, true)); + if (this.scene.currentBattle.double && availablePartyMembers > 1) { + this.scene.pushPhase(new SummonPhase(this.scene, 1, true, true)); + } + + if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { + const minPartySize = this.scene.currentBattle.double ? 2 : 1; + if (availablePartyMembers > minPartySize) { + this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); + if (this.scene.currentBattle.double) { + this.scene.pushPhase(new CheckSwitchPhase(this.scene, 1, this.scene.currentBattle.double)); + } + } + } + } + + for (const achv of Object.keys(this.scene.gameData.achvUnlocks)) { + if (vouchers.hasOwnProperty(achv)) { + this.scene.validateVoucher(vouchers[achv]); + } + } + + super.end(); + } +} diff --git a/src/phases/toggle-double-position-phase.ts b/src/phases/toggle-double-position-phase.ts new file mode 100644 index 00000000000..fe3d0482483 --- /dev/null +++ b/src/phases/toggle-double-position-phase.ts @@ -0,0 +1,31 @@ +import BattleScene from "#app/battle-scene.js"; +import { FieldPosition } from "#app/field/pokemon.js"; +import { BattlePhase } from "./battle-phase"; + +export class ToggleDoublePositionPhase extends BattlePhase { + private double: boolean; + + constructor(scene: BattleScene, double: boolean) { + super(scene); + + this.double = double; + } + + start() { + super.start(); + + const playerPokemon = this.scene.getPlayerField().find(p => p.isActive(true)); + if (playerPokemon) { + playerPokemon.setFieldPosition(this.double && this.scene.getParty().filter(p => p.isAllowedInBattle()).length > 1 ? FieldPosition.LEFT : FieldPosition.CENTER, 500).then(() => { + if (playerPokemon.getFieldIndex() === 1) { + const party = this.scene.getParty(); + party[1] = party[0]; + party[0] = playerPokemon; + } + this.end(); + }); + } else { + this.end(); + } + } +} diff --git a/src/phases/trainer-message-test-phase.ts b/src/phases/trainer-message-test-phase.ts new file mode 100644 index 00000000000..4ea451660c3 --- /dev/null +++ b/src/phases/trainer-message-test-phase.ts @@ -0,0 +1,41 @@ +import BattleScene from "#app/battle-scene.js"; +import { trainerConfigs } from "#app/data/trainer-config.js"; +import { TrainerType } from "#app/enums/trainer-type.js"; +import { BattlePhase } from "./battle-phase"; +import { TestMessagePhase } from "./test-message-phase"; + +export class TrainerMessageTestPhase extends BattlePhase { + private trainerTypes: TrainerType[]; + + constructor(scene: BattleScene, ...trainerTypes: TrainerType[]) { + super(scene); + + this.trainerTypes = trainerTypes; + } + + start() { + super.start(); + + const testMessages: string[] = []; + + for (const t of Object.keys(trainerConfigs)) { + const type = parseInt(t); + if (this.trainerTypes.length && !this.trainerTypes.find(tt => tt === type as TrainerType)) { + continue; + } + const config = trainerConfigs[type]; + [config.encounterMessages, config.femaleEncounterMessages, config.victoryMessages, config.femaleVictoryMessages, config.defeatMessages, config.femaleDefeatMessages] + .map(messages => { + if (messages?.length) { + testMessages.push(...messages); + } + }); + } + + for (const message of testMessages) { + this.scene.pushPhase(new TestMessagePhase(this.scene, message)); + } + + this.end(); + } +} diff --git a/src/phases/trainer-victory-phase.ts b/src/phases/trainer-victory-phase.ts new file mode 100644 index 00000000000..7b8ee05de44 --- /dev/null +++ b/src/phases/trainer-victory-phase.ts @@ -0,0 +1,65 @@ +import BattleScene from "#app/battle-scene.js"; +import { getCharVariantFromDialogue } from "#app/data/dialogue.js"; +import { TrainerSlot } from "#app/data/trainer-config.js"; +import { TrainerType } from "#app/enums/trainer-type.js"; +import { modifierTypes } from "#app/modifier/modifier-type.js"; +import { vouchers } from "#app/system/voucher.js"; +import i18next from "i18next"; +import * as Utils from "#app/utils.js"; +import { BattlePhase } from "./battle-phase"; +import { ModifierRewardPhase } from "./modifier-reward-phase"; +import { MoneyRewardPhase } from "./money-reward-phase"; + +export class TrainerVictoryPhase extends BattlePhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + this.scene.disableMenu = true; + + this.scene.playBgm(this.scene.currentBattle.trainer?.config.victoryBgm); + + this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer?.config.moneyMultiplier!)); // TODO: is this bang correct? + + const modifierRewardFuncs = this.scene.currentBattle.trainer?.config.modifierRewardFuncs!; // TODO: is this bang correct? + for (const modifierRewardFunc of modifierRewardFuncs) { + this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, modifierRewardFunc)); + } + + const trainerType = this.scene.currentBattle.trainer?.config.trainerType!; // TODO: is this bang correct? + if (vouchers.hasOwnProperty(TrainerType[trainerType])) { + if (!this.scene.validateVoucher(vouchers[TrainerType[trainerType]]) && this.scene.currentBattle.trainer?.config.isBoss) { + 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("battle:trainerDefeated", { trainerName: this.scene.currentBattle.trainer?.getName(TrainerSlot.NONE, true) }), null, () => { + const victoryMessages = this.scene.currentBattle.trainer?.getVictoryMessages()!; // TODO: is this bang correct? + let message: string; + this.scene.executeWithSeedOffset(() => message = Utils.randSeedItem(victoryMessages), this.scene.currentBattle.waveIndex); + message = message!; // tell TS compiler it's defined now + + const showMessage = () => { + const originalFunc = showMessageOrEnd; + showMessageOrEnd = () => this.scene.ui.showDialogue(message, this.scene.currentBattle.trainer?.getName(), null, originalFunc); + + showMessageOrEnd(); + }; + let showMessageOrEnd = () => this.end(); + if (victoryMessages?.length) { + if (this.scene.currentBattle.trainer?.config.hasCharSprite && !this.scene.ui.shouldSkipDialogue(message)) { + const originalFunc = showMessageOrEnd; + showMessageOrEnd = () => this.scene.charSprite.hide().then(() => this.scene.hideFieldOverlay(250).then(() => originalFunc())); + this.scene.showFieldOverlay(500).then(() => this.scene.charSprite.showCharacter(this.scene.currentBattle.trainer?.getKey()!, getCharVariantFromDialogue(victoryMessages[0])).then(() => showMessage())); // TODO: is this bang correct? + } else { + showMessage(); + } + } else { + showMessageOrEnd(); + } + }, null, true); + + this.showEnemyTrainer(); + } +} diff --git a/src/phases/turn-end-phase.ts b/src/phases/turn-end-phase.ts new file mode 100644 index 00000000000..62589e99b79 --- /dev/null +++ b/src/phases/turn-end-phase.ts @@ -0,0 +1,71 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyPostTurnAbAttrs, PostTurnAbAttr } from "#app/data/ability.js"; +import { BattlerTagLapseType } from "#app/data/battler-tags.js"; +import { allMoves } from "#app/data/move.js"; +import { TerrainType } from "#app/data/terrain.js"; +import { Moves } from "#app/enums/moves.js"; +import { WeatherType } from "#app/enums/weather-type.js"; +import { TurnEndEvent } from "#app/events/battle-scene.js"; +import Pokemon from "#app/field/pokemon.js"; +import { getPokemonNameWithAffix } from "#app/messages.js"; +import { TurnHealModifier, EnemyTurnHealModifier, EnemyStatusEffectHealChanceModifier, TurnStatusEffectModifier, TurnHeldItemTransferModifier } from "#app/modifier/modifier.js"; +import i18next from "i18next"; +import { FieldPhase } from "./field-phase"; +import { MessagePhase } from "./message-phase"; +import { PokemonHealPhase } from "./pokemon-heal-phase"; + +export class TurnEndPhase extends FieldPhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.currentBattle.incrementTurn(this.scene); + this.scene.eventTarget.dispatchEvent(new TurnEndEvent(this.scene.currentBattle.turn)); + + const handlePokemon = (pokemon: Pokemon) => { + pokemon.lapseTags(BattlerTagLapseType.TURN_END); + + if (pokemon.summonData.disabledMove && !--pokemon.summonData.disabledTurns) { + this.scene.pushPhase(new MessagePhase(this.scene, i18next.t("battle:notDisabled", { pokemonName: getPokemonNameWithAffix(pokemon), moveName: allMoves[pokemon.summonData.disabledMove].name }))); + pokemon.summonData.disabledMove = Moves.NONE; + } + + this.scene.applyModifiers(TurnHealModifier, pokemon.isPlayer(), pokemon); + + if (this.scene.arena.terrain?.terrainType === TerrainType.GRASSY && pokemon.isGrounded()) { + this.scene.unshiftPhase(new PokemonHealPhase(this.scene, pokemon.getBattlerIndex(), + Math.max(pokemon.getMaxHp() >> 4, 1), i18next.t("battle:turnEndHpRestore", { pokemonName: getPokemonNameWithAffix(pokemon) }), true)); + } + + if (!pokemon.isPlayer()) { + this.scene.applyModifiers(EnemyTurnHealModifier, false, pokemon); + this.scene.applyModifier(EnemyStatusEffectHealChanceModifier, false, pokemon); + } + + applyPostTurnAbAttrs(PostTurnAbAttr, pokemon); + + this.scene.applyModifiers(TurnStatusEffectModifier, pokemon.isPlayer(), pokemon); + + this.scene.applyModifiers(TurnHeldItemTransferModifier, pokemon.isPlayer(), pokemon); + + pokemon.battleSummonData.turnCount++; + }; + + this.executeForAll(handlePokemon); + + this.scene.arena.lapseTags(); + + if (this.scene.arena.weather && !this.scene.arena.weather.lapse()) { + this.scene.arena.trySetWeather(WeatherType.NONE, false); + } + + if (this.scene.arena.terrain && !this.scene.arena.terrain.lapse()) { + this.scene.arena.trySetTerrain(TerrainType.NONE, false); + } + + this.end(); + } +} diff --git a/src/phases/turn-init-phase.ts b/src/phases/turn-init-phase.ts new file mode 100644 index 00000000000..a999d57ca0f --- /dev/null +++ b/src/phases/turn-init-phase.ts @@ -0,0 +1,65 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { TurnInitEvent } from "#app/events/battle-scene.js"; +import { PlayerPokemon } from "#app/field/pokemon.js"; +import i18next from "i18next"; +import { FieldPhase } from "./field-phase"; +import { ToggleDoublePositionPhase } from "./toggle-double-position-phase"; +import { CommandPhase } from "./command-phase"; +import { EnemyCommandPhase } from "./enemy-command-phase"; +import { GameOverPhase } from "./game-over-phase"; +import { TurnStartPhase } from "./turn-start-phase"; + +export class TurnInitPhase extends FieldPhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + this.scene.getPlayerField().forEach(p => { + // If this pokemon is in play and evolved into something illegal under the current challenge, force a switch + if (p.isOnField() && !p.isAllowedInBattle()) { + this.scene.queueMessage(i18next.t("challenges:illegalEvolution", { "pokemon": p.name }), null, true); + + const allowedPokemon = this.scene.getParty().filter(p => p.isAllowedInBattle()); + + if (!allowedPokemon.length) { + // If there are no longer any legal pokemon in the party, game over. + this.scene.clearPhaseQueue(); + this.scene.unshiftPhase(new GameOverPhase(this.scene)); + } else if (allowedPokemon.length >= this.scene.currentBattle.getBattlerCount() || (this.scene.currentBattle.double && !allowedPokemon[0].isActive(true))) { + // If there is at least one pokemon in the back that is legal to switch in, force a switch. + p.switchOut(false); + } else { + // If there are no pokemon in the back but we're not game overing, just hide the pokemon. + // This should only happen in double battles. + p.leaveField(); + } + if (allowedPokemon.length === 1 && this.scene.currentBattle.double) { + this.scene.unshiftPhase(new ToggleDoublePositionPhase(this.scene, true)); + } + } + }); + + //this.scene.pushPhase(new MoveAnimTestPhase(this.scene)); + this.scene.eventTarget.dispatchEvent(new TurnInitEvent()); + + this.scene.getField().forEach((pokemon, i) => { + if (pokemon?.isActive()) { + if (pokemon.isPlayer()) { + this.scene.currentBattle.addParticipant(pokemon as PlayerPokemon); + } + + pokemon.resetTurnData(); + + this.scene.pushPhase(pokemon.isPlayer() ? new CommandPhase(this.scene, i) : new EnemyCommandPhase(this.scene, i - BattlerIndex.ENEMY)); + } + }); + + this.scene.pushPhase(new TurnStartPhase(this.scene)); + + this.end(); + } +} diff --git a/src/phases/turn-start-phase.ts b/src/phases/turn-start-phase.ts new file mode 100644 index 00000000000..a5cfd1ad9ab --- /dev/null +++ b/src/phases/turn-start-phase.ts @@ -0,0 +1,211 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex } from "#app/battle.js"; +import { applyAbAttrs, BypassSpeedChanceAbAttr, PreventBypassSpeedChanceAbAttr, ChangeMovePriorityAbAttr } from "#app/data/ability.js"; +import { allMoves, applyMoveAttrs, IncrementMovePriorityAttr, MoveHeaderAttr } from "#app/data/move.js"; +import { Abilities } from "#app/enums/abilities.js"; +import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { Moves } from "#app/enums/moves.js"; +import { Stat } from "#app/enums/stat.js"; +import { PokemonMove } from "#app/field/pokemon.js"; +import { BypassSpeedChanceModifier } from "#app/modifier/modifier.js"; +import { Command } from "#app/ui/command-ui-handler.js"; +import * as Utils from "#app/utils.js"; +import { AttemptCapturePhase } from "./attempt-capture-phase"; +import { AttemptRunPhase } from "./attempt-run-phase"; +import { BerryPhase } from "./berry-phase"; +import { FieldPhase } from "./field-phase"; +import { MoveHeaderPhase } from "./move-header-phase"; +import { MovePhase } from "./move-phase"; +import { PostTurnStatusEffectPhase } from "./post-turn-status-effect-phase"; +import { SwitchSummonPhase } from "./switch-summon-phase"; +import { TurnEndPhase } from "./turn-end-phase"; +import { WeatherEffectPhase } from "./weather-effect-phase"; + +export class TurnStartPhase extends FieldPhase { + constructor(scene: BattleScene) { + super(scene); + } + + start() { + super.start(); + + const field = this.scene.getField(); + const order = this.getOrder(); + + const battlerBypassSpeed = {}; + + this.scene.getField(true).filter(p => p.summonData).map(p => { + const bypassSpeed = new Utils.BooleanHolder(false); + const canCheckHeldItems = new Utils.BooleanHolder(true); + applyAbAttrs(BypassSpeedChanceAbAttr, p, null, bypassSpeed); + applyAbAttrs(PreventBypassSpeedChanceAbAttr, p, null, bypassSpeed, canCheckHeldItems); + if (canCheckHeldItems.value) { + this.scene.applyModifiers(BypassSpeedChanceModifier, p.isPlayer(), p, bypassSpeed); + } + battlerBypassSpeed[p.getBattlerIndex()] = bypassSpeed; + }); + + const moveOrder = order.slice(0); + + moveOrder.sort((a, b) => { + const aCommand = this.scene.currentBattle.turnCommands[a]!; + const bCommand = this.scene.currentBattle.turnCommands[b]!; + + if (aCommand.command !== bCommand.command) { + if (aCommand.command === Command.FIGHT) { + if (aCommand.move?.move === Moves.PURSUIT && bCommand.command === Command.POKEMON) { + return -1; + } else { + return 1; + } + } else if (bCommand.command === Command.FIGHT) { + if (bCommand.move?.move === Moves.PURSUIT && aCommand.command === Command.POKEMON) { + return 1; + } else { + return -1; + } + } + } else if (aCommand?.command === Command.FIGHT) { + const aMove = allMoves[aCommand.move!.move];//TODO: is the bang correct here? + const bMove = allMoves[bCommand!.move!.move];//TODO: is the bang correct here? + + const aPriority = new Utils.IntegerHolder(aMove.priority); + const bPriority = new Utils.IntegerHolder(bMove.priority); + + applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, aMove, aPriority); //TODO: is the bang correct here? + applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, bMove, bPriority); //TODO: is the bang correct here? + + applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, aMove, aPriority); //TODO: is the bang correct here? + applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, bMove, bPriority); //TODO: is the bang correct here? + + if (aPriority.value !== bPriority.value) { + const bracketDifference = Math.ceil(aPriority.value) - Math.ceil(bPriority.value); + const hasSpeedDifference = battlerBypassSpeed[a].value !== battlerBypassSpeed[b].value; + if (bracketDifference === 0 && hasSpeedDifference) { + return battlerBypassSpeed[a].value ? -1 : 1; + } + return aPriority.value < bPriority.value ? 1 : -1; + } + } + + if (battlerBypassSpeed[a].value !== battlerBypassSpeed[b].value) { + return battlerBypassSpeed[a].value ? -1 : 1; + } + + const aIndex = order.indexOf(a); + const bIndex = order.indexOf(b); + + return aIndex < bIndex ? -1 : aIndex > bIndex ? 1 : 0; + }); + + let orderIndex = 0; + + for (const o of moveOrder) { + + const pokemon = field[o]; + const turnCommand = this.scene.currentBattle.turnCommands[o]; + + if (turnCommand?.skip) { + continue; + } + + switch (turnCommand?.command) { + case Command.FIGHT: + const queuedMove = turnCommand.move; + pokemon.turnData.order = orderIndex++; + if (!queuedMove) { + continue; + } + const move = pokemon.getMoveset().find(m => m?.moveId === queuedMove.move) || new PokemonMove(queuedMove.move); + if (move.getMove().hasAttr(MoveHeaderAttr)) { + this.scene.unshiftPhase(new MoveHeaderPhase(this.scene, pokemon, move)); + } + // even though pursuit is ordered before Pokemon commands in the move + // order, the SwitchSummonPhase is unshifted onto the phase list, which + // would cause it to run before pursuit if pursuit was pushed normally. + // the SwitchSummonPhase can't be changed to a push either, because then + // the MoveHeaderPhase for all moves would run prior to the switch-out, + // which is not correct (eg, when focus punching a switching opponent, + // the correct order is switch -> tightening focus message -> attack + // fires, not focus -> switch -> attack). so, we have to specifically + // unshift pursuit when there are other pokemon commands after it, as + // well as order it before any Pokemon commands, otherwise it won't go first. + const remainingMoves = moveOrder.slice(moveOrder.findIndex(mo => mo === o) + 1); + const pendingOpposingPokemonCommands = remainingMoves.filter(o => + this.scene.currentBattle.turnCommands[o]!.command === Command.POKEMON + && (pokemon.isPlayer() ? o >= BattlerIndex.ENEMY : o < BattlerIndex.ENEMY) + ); + const arePokemonCommandsLeftInQueue = Boolean(pendingOpposingPokemonCommands.length); + const addPhase = ( + queuedMove.move === Moves.PURSUIT && arePokemonCommandsLeftInQueue + ? this.scene.unshiftPhase + : this.scene.pushPhase + ).bind(this.scene); + + // pursuit also hits the first pokemon to switch out in doubles, + // regardless of original target + const targets = queuedMove.move === Moves.PURSUIT && arePokemonCommandsLeftInQueue + ? [pendingOpposingPokemonCommands[0]] + : turnCommand.targets || turnCommand.move!.targets; + if (pokemon.isPlayer()) { + if (turnCommand.cursor === -1) { + addPhase(new MovePhase(this.scene, pokemon, targets, move)); + } else { + const playerPhase = new MovePhase(this.scene, pokemon, targets, move, false, queuedMove.ignorePP); + addPhase(playerPhase); + } + } else { + addPhase(new MovePhase(this.scene, pokemon, targets, move, false, queuedMove.ignorePP)); + } + break; + case Command.BALL: + this.scene.unshiftPhase(new AttemptCapturePhase(this.scene, turnCommand.targets![0] % 2, turnCommand.cursor!));//TODO: is the bang correct here? + break; + case Command.POKEMON: + pokemon.addTag(BattlerTagType.ESCAPING); + this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, pokemon.getFieldIndex(), turnCommand.cursor!, true, turnCommand.args![0] as boolean, pokemon.isPlayer())); + break; + case Command.RUN: + let runningPokemon = pokemon; + if (this.scene.currentBattle.double) { + const playerActivePokemon = field.filter(pokemon => { + if (!!pokemon) { + return pokemon.isPlayer() && pokemon.isActive(); + } else { + return; + } + }); + // if only one pokemon is alive, use that one + if (playerActivePokemon.length > 1) { + // find which active pokemon has faster speed + const fasterPokemon = playerActivePokemon[0].getStat(Stat.SPD) > playerActivePokemon[1].getStat(Stat.SPD) ? playerActivePokemon[0] : playerActivePokemon[1]; + // check if either active pokemon has the ability "Run Away" + const hasRunAway = playerActivePokemon.find(p => p.hasAbility(Abilities.RUN_AWAY)); + runningPokemon = hasRunAway !== undefined ? hasRunAway : fasterPokemon; + } + } + this.scene.unshiftPhase(new AttemptRunPhase(this.scene, runningPokemon.getFieldIndex())); + break; + } + } + + + this.scene.pushPhase(new WeatherEffectPhase(this.scene)); + + for (const o of order) { + if (field[o].status && field[o].status.isPostTurn()) { + this.scene.pushPhase(new PostTurnStatusEffectPhase(this.scene, o)); + } + } + + this.scene.pushPhase(new BerryPhase(this.scene)); + this.scene.pushPhase(new TurnEndPhase(this.scene)); + + /** + * this.end() will call shiftPhase(), which dumps everything from PrependQueue (aka everything that is unshifted()) to the front + * of the queue and dequeues to start the next phase + * this is important since stuff like SwitchSummon, AttemptRun, AttemptCapture Phases break the "flow" and should take precedence + */ + this.end(); + } +} diff --git a/src/phases/unavailable-phase.ts b/src/phases/unavailable-phase.ts new file mode 100644 index 00000000000..4757af5e15d --- /dev/null +++ b/src/phases/unavailable-phase.ts @@ -0,0 +1,17 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { Mode } from "#app/ui/ui.js"; +import { LoginPhase } from "./login-phase"; + +export class UnavailablePhase extends Phase { + constructor(scene: BattleScene) { + super(scene); + } + + start(): void { + this.scene.ui.setMode(Mode.UNAVAILABLE, () => { + this.scene.unshiftPhase(new LoginPhase(this.scene, true)); + this.end(); + }); + } +} diff --git a/src/phases/unlock-phase.ts b/src/phases/unlock-phase.ts new file mode 100644 index 00000000000..ce06e2445ac --- /dev/null +++ b/src/phases/unlock-phase.ts @@ -0,0 +1,27 @@ +import BattleScene from "#app/battle-scene.js"; +import { Phase } from "#app/phase.js"; +import { Unlockables, getUnlockableName } from "#app/system/unlockables.js"; +import { Mode } from "#app/ui/ui.js"; +import i18next from "i18next"; + +export class UnlockPhase extends Phase { + private unlockable: Unlockables; + + constructor(scene: BattleScene, unlockable: Unlockables) { + super(scene); + + this.unlockable = unlockable; + } + + start(): void { + this.scene.time.delayedCall(2000, () => { + this.scene.gameData.unlocks[this.unlockable] = true; + this.scene.playSound("level_up_fanfare"); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t("battle:unlockedSomething", { unlockedThing: getUnlockableName(this.unlockable) }), null, () => { + this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + this.end(); + }, null, true, 1500); + }); + } +} diff --git a/src/phases/victory-phase.ts b/src/phases/victory-phase.ts new file mode 100644 index 00000000000..b7587de4dbb --- /dev/null +++ b/src/phases/victory-phase.ts @@ -0,0 +1,151 @@ +import BattleScene from "#app/battle-scene.js"; +import { BattlerIndex, BattleType } from "#app/battle.js"; +import { modifierTypes } from "#app/modifier/modifier-type.js"; +import { ExpShareModifier, ExpBalanceModifier, MultipleParticipantExpBonusModifier, PokemonExpBoosterModifier } from "#app/modifier/modifier.js"; +import * as Utils from "#app/utils.js"; +import Overrides from "#app/overrides"; +import { BattleEndPhase } from "./battle-end-phase"; +import { NewBattlePhase } from "./new-battle-phase"; +import { PokemonPhase } from "./pokemon-phase"; +import { AddEnemyBuffModifierPhase } from "./add-enemy-buff-modifier-phase"; +import { EggLapsePhase } from "./egg-lapse-phase"; +import { ExpPhase } from "./exp-phase"; +import { GameOverPhase } from "./game-over-phase"; +import { ModifierRewardPhase } from "./modifier-reward-phase"; +import { SelectModifierPhase } from "./select-modifier-phase"; +import { ShowPartyExpBarPhase } from "./show-party-exp-bar-phase"; +import { TrainerVictoryPhase } from "./trainer-victory-phase"; + +export class VictoryPhase extends PokemonPhase { + constructor(scene: BattleScene, battlerIndex: BattlerIndex) { + super(scene, battlerIndex); + } + + start() { + super.start(); + + this.scene.gameData.gameStats.pokemonDefeated++; + + const participantIds = this.scene.currentBattle.playerParticipantIds; + const party = this.scene.getParty(); + 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 nonFaintedPartyMembers = party.filter(p => p.hp); + const expPartyMembers = nonFaintedPartyMembers.filter(p => p.level < this.scene.getMaxExpLevel()); + const partyMemberExp: number[] = []; + + if (participantIds.size) { + let expValue = this.getPokemon().getExpValue(); + if (this.scene.currentBattle.battleType === BattleType.TRAINER) { + expValue = Math.floor(expValue * 1.5); + } + for (const partyMember of nonFaintedPartyMembers) { + const pId = partyMember.id; + const participated = participantIds.has(pId); + if (participated) { + partyMember.addFriendship(2); + } + if (!expPartyMembers.includes(partyMember)) { + continue; + } + if (!participated && !expShareModifier) { + partyMemberExp.push(0); + continue; + } + let expMultiplier = 0; + if (participated) { + expMultiplier += (1 / participantIds.size); + if (participantIds.size > 1 && multipleParticipantExpBonusModifier) { + expMultiplier += multipleParticipantExpBonusModifier.getStackCount() * 0.2; + } + } else if (expShareModifier) { + expMultiplier += (expShareModifier.getStackCount() * 0.2) / participantIds.size; + } + if (partyMember.pokerus) { + expMultiplier *= 1.5; + } + if (Overrides.XP_MULTIPLIER_OVERRIDE !== null) { + expMultiplier = Overrides.XP_MULTIPLIER_OVERRIDE; + } + const pokemonExp = new Utils.NumberHolder(expValue * expMultiplier); + this.scene.applyModifiers(PokemonExpBoosterModifier, true, partyMember, pokemonExp); + partyMemberExp.push(Math.floor(pokemonExp.value)); + } + + if (expBalanceModifier) { + let totalLevel = 0; + let totalExp = 0; + expPartyMembers.forEach((expPartyMember, epm) => { + totalExp += partyMemberExp[epm]; + totalLevel += expPartyMember.level; + }); + + const medianLevel = Math.floor(totalLevel / expPartyMembers.length); + + const recipientExpPartyMemberIndexes: number[] = []; + expPartyMembers.forEach((expPartyMember, epm) => { + if (expPartyMember.level <= medianLevel) { + recipientExpPartyMemberIndexes.push(epm); + } + }); + + const splitExp = Math.floor(totalExp / recipientExpPartyMemberIndexes.length); + + expPartyMembers.forEach((_partyMember, pm) => { + partyMemberExp[pm] = Phaser.Math.Linear(partyMemberExp[pm], recipientExpPartyMemberIndexes.indexOf(pm) > -1 ? splitExp : 0, 0.2 * expBalanceModifier.getStackCount()); + }); + } + + for (let pm = 0; pm < expPartyMembers.length; pm++) { + const exp = partyMemberExp[pm]; + + if (exp) { + const partyMemberIndex = party.indexOf(expPartyMembers[pm]); + this.scene.unshiftPhase(expPartyMembers[pm].isOnField() ? new ExpPhase(this.scene, partyMemberIndex, exp) : new ShowPartyExpBarPhase(this.scene, partyMemberIndex, exp)); + } + } + } + + if (!this.scene.getEnemyParty().find(p => this.scene.currentBattle.battleType ? !p?.isFainted(true) : p.isOnField())) { + this.scene.pushPhase(new BattleEndPhase(this.scene)); + if (this.scene.currentBattle.battleType === BattleType.TRAINER) { + this.scene.pushPhase(new TrainerVictoryPhase(this.scene)); + } + if (this.scene.gameMode.isEndless || !this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) { + this.scene.pushPhase(new EggLapsePhase(this.scene)); + if (this.scene.currentBattle.waveIndex % 10) { + this.scene.pushPhase(new SelectModifierPhase(this.scene)); + } else if (this.scene.gameMode.isDaily) { + this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.EXP_CHARM)); + if (this.scene.currentBattle.waveIndex > 10 && !this.scene.gameMode.isWaveFinal(this.scene.currentBattle.waveIndex)) { + this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.GOLDEN_POKEBALL)); + } + } else { + const superExpWave = !this.scene.gameMode.isEndless ? (this.scene.offsetGym ? 0 : 20) : 10; + if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex === 10) { + this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.EXP_SHARE)); + } + if (this.scene.currentBattle.waveIndex <= 750 && (this.scene.currentBattle.waveIndex <= 500 || (this.scene.currentBattle.waveIndex % 30) === superExpWave)) { + this.scene.pushPhase(new ModifierRewardPhase(this.scene, (this.scene.currentBattle.waveIndex % 30) !== superExpWave || this.scene.currentBattle.waveIndex > 250 ? modifierTypes.EXP_CHARM : modifierTypes.SUPER_EXP_CHARM)); + } + if (this.scene.currentBattle.waveIndex <= 150 && !(this.scene.currentBattle.waveIndex % 50)) { + this.scene.pushPhase(new ModifierRewardPhase(this.scene, modifierTypes.GOLDEN_POKEBALL)); + } + if (this.scene.gameMode.isEndless && !(this.scene.currentBattle.waveIndex % 50)) { + this.scene.pushPhase(new ModifierRewardPhase(this.scene, !(this.scene.currentBattle.waveIndex % 250) ? modifierTypes.VOUCHER_PREMIUM : modifierTypes.VOUCHER_PLUS)); + this.scene.pushPhase(new AddEnemyBuffModifierPhase(this.scene)); + } + } + this.scene.pushPhase(new NewBattlePhase(this.scene)); + } else { + this.scene.currentBattle.battleType = BattleType.CLEAR; + this.scene.score += this.scene.gameMode.getClearScoreBonus(); + this.scene.updateScoreText(); + this.scene.pushPhase(new GameOverPhase(this.scene, true)); + } + } + + this.end(); + } +} diff --git a/src/phases/weather-effect-phase.ts b/src/phases/weather-effect-phase.ts new file mode 100644 index 00000000000..6f5fbc0fce3 --- /dev/null +++ b/src/phases/weather-effect-phase.ts @@ -0,0 +1,67 @@ +import BattleScene from "#app/battle-scene.js"; +import { applyPreWeatherEffectAbAttrs, SuppressWeatherEffectAbAttr, PreWeatherDamageAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPostWeatherLapseAbAttrs, PostWeatherLapseAbAttr } from "#app/data/ability.js"; +import { CommonAnim } from "#app/data/battle-anims.js"; +import { Weather, getWeatherDamageMessage, getWeatherLapseMessage } from "#app/data/weather.js"; +import { WeatherType } from "#app/enums/weather-type.js"; +import Pokemon, { HitResult } from "#app/field/pokemon.js"; +import * as Utils from "#app/utils.js"; +import { CommonAnimPhase } from "./common-anim-phase"; + +export class WeatherEffectPhase extends CommonAnimPhase { + public weather: Weather | null; + + constructor(scene: BattleScene) { + super(scene, undefined, undefined, CommonAnim.SUNNY + ((scene?.arena?.weather?.weatherType || WeatherType.NONE) - 1)); + this.weather = scene?.arena?.weather; + } + + start() { + // Update weather state with any changes that occurred during the turn + this.weather = this.scene?.arena?.weather; + + if (!this.weather) { + this.end(); + return; + } + + this.setAnimation(CommonAnim.SUNNY + (this.weather.weatherType - 1)); + + if (this.weather.isDamaging()) { + + const cancelled = new Utils.BooleanHolder(false); + + this.executeForAll((pokemon: Pokemon) => applyPreWeatherEffectAbAttrs(SuppressWeatherEffectAbAttr, pokemon, this.weather, cancelled)); + + if (!cancelled.value) { + const inflictDamage = (pokemon: Pokemon) => { + const cancelled = new Utils.BooleanHolder(false); + + applyPreWeatherEffectAbAttrs(PreWeatherDamageAbAttr, pokemon, this.weather , cancelled); + applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); + + if (cancelled.value) { + return; + } + + const damage = Math.ceil(pokemon.getMaxHp() / 16); + + this.scene.queueMessage(getWeatherDamageMessage(this.weather?.weatherType!, pokemon)!); // TODO: are those bangs correct? + pokemon.damageAndUpdate(damage, HitResult.EFFECTIVE, false, false, true); + }; + + this.executeForAll((pokemon: Pokemon) => { + const immune = !pokemon || !!pokemon.getTypes(true, true).filter(t => this.weather?.isTypeDamageImmune(t)).length; + if (!immune) { + inflictDamage(pokemon); + } + }); + } + } + + this.scene.ui.showText(getWeatherLapseMessage(this.weather.weatherType)!, null, () => { // TODO: is this bang correct? + this.executeForAll((pokemon: Pokemon) => applyPostWeatherLapseAbAttrs(PostWeatherLapseAbAttr, pokemon, this.weather)); + + super.start(); + }); + } +} diff --git a/src/system/game-data.ts b/src/system/game-data.ts index d64aa8f8e91..a9acd80fdee 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -27,7 +27,6 @@ import { Tutorial } from "../tutorial"; import { speciesEggMoves } from "../data/egg-moves"; import { allMoves } from "../data/move"; import { TrainerVariant } from "../field/trainer"; -import { OutdatedPhase, ReloadSessionPhase } from "#app/phases"; import { Variant, variantData } from "#app/data/variant"; import {setSettingGamepad, SettingGamepad, settingGamepadDefaults} from "./settings/settings-gamepad"; import {setSettingKeyboard, SettingKeyboard} from "#app/system/settings/settings-keyboard"; @@ -43,6 +42,8 @@ import { Species } from "#enums/species"; import { applyChallenges, ChallengeType } from "#app/data/challenge.js"; import { WeatherType } from "#app/enums/weather-type.js"; import { TerrainType } from "#app/data/terrain.js"; +import { OutdatedPhase } from "#app/phases/outdated-phase.js"; +import { ReloadSessionPhase } from "#app/phases/reload-session-phase.js"; export const defaultStarterSpecies: Species[] = [ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, @@ -1709,7 +1710,7 @@ export class GameData { } getFormAttr(formIndex: integer): bigint { - return BigInt(1 << (7 + formIndex)); + return BigInt(1) << BigInt(7 + formIndex); } consolidateDexData(dexData: DexData): void { diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 4ea7526f51d..7263ae3a3de 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -8,13 +8,21 @@ import SettingsUiHandler from "#app/ui/settings/settings-ui-handler"; import { EaseType } from "#enums/ease-type"; import { MoneyFormat } from "#enums/money-format"; import { PlayerGender } from "#enums/player-gender"; +import { getIsInitialized, initI18n } from "#app/plugins/i18n.js"; + +function getTranslation(key: string): string { + if (!getIsInitialized()) { + initI18n(); + } + return i18next.t(key); +} const VOLUME_OPTIONS: SettingOption[] = new Array(11).fill(null).map((_, i) => i ? { value: (i * 10).toString(), label: (i * 10).toString(), } : { value: "Mute", - label: i18next.t("settings:mute") + label: getTranslation("settings:mute") }); const SHOP_OVERLAY_OPACITY_OPTIONS: SettingOption[] = new Array(9).fill(null).map((_, i) => { const value = ((i + 1) * 10).toString(); @@ -797,10 +805,10 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): label: "日本語", handler: () => changeLocaleHandler("ja") }, - { - label: "Català", - handler: () => changeLocaleHandler("ca-ES") - }, + // { + // label: "Català", + // handler: () => changeLocaleHandler("ca-ES") + // }, { label: i18next.t("settings:back"), handler: () => cancelHandler() diff --git a/src/system/voucher.ts b/src/system/voucher.ts index 0c71e3c0286..2f94308d9c8 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -1,9 +1,10 @@ import BattleScene from "../battle-scene"; import i18next from "i18next"; -import { Achv, AchvTier, achvs, getAchievementDescription } from "./achv"; +import { AchvTier, achvs, getAchievementDescription } from "./achv"; import { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; import { ConditionFn } from "#app/@types/common.js"; +import { trainerConfigs } from "#app/data/trainer-config.js"; export enum VoucherType { REGULAR, @@ -88,42 +89,36 @@ export interface Vouchers { export const vouchers: Vouchers = {}; -const voucherAchvs: Achv[] = [ achvs.CLASSIC_VICTORY ]; - export function initVouchers() { - import("../data/trainer-config").then(tc => { - const trainerConfigs = tc.trainerConfigs; + for (const achv of [achvs.CLASSIC_VICTORY]) { + const voucherType = achv.score >= 150 + ? VoucherType.GOLDEN + : achv.score >= 100 + ? VoucherType.PREMIUM + : achv.score >= 75 + ? VoucherType.PLUS + : VoucherType.REGULAR; + vouchers[achv.id] = new Voucher(voucherType, getAchievementDescription(achv.localizationKey)); + } - for (const achv of voucherAchvs) { - const voucherType = achv.score >= 150 - ? VoucherType.GOLDEN - : achv.score >= 100 - ? VoucherType.PREMIUM - : achv.score >= 75 - ? VoucherType.PLUS - : VoucherType.REGULAR; - vouchers[achv.id] = new Voucher(voucherType, getAchievementDescription(achv.localizationKey)); - } + const bossTrainerTypes = Object.keys(trainerConfigs) + .filter(tt => trainerConfigs[tt].isBoss && trainerConfigs[tt].getDerivedType() !== TrainerType.RIVAL && trainerConfigs[tt].hasVoucher); - const bossTrainerTypes = Object.keys(trainerConfigs) - .filter(tt => trainerConfigs[tt].isBoss && trainerConfigs[tt].getDerivedType() !== TrainerType.RIVAL && trainerConfigs[tt].hasVoucher); - - for (const trainerType of bossTrainerTypes) { - const voucherType = trainerConfigs[trainerType].moneyMultiplier < 10 - ? VoucherType.PLUS - : VoucherType.PREMIUM; - const key = TrainerType[trainerType]; - const trainerName = trainerConfigs[trainerType].name; - const trainer = trainerConfigs[trainerType]; - const title = trainer.title ? ` (${trainer.title})` : ""; - vouchers[key] = new Voucher( - voucherType, - `${i18next.t("voucher:defeatTrainer", { trainerName })} ${title}`, - ); - } - const voucherKeys = Object.keys(vouchers); - for (const k of voucherKeys) { - vouchers[k].id = k; - } - }); + for (const trainerType of bossTrainerTypes) { + const voucherType = trainerConfigs[trainerType].moneyMultiplier < 10 + ? VoucherType.PLUS + : VoucherType.PREMIUM; + const key = TrainerType[trainerType]; + const trainerName = trainerConfigs[trainerType].name; + const trainer = trainerConfigs[trainerType]; + const title = trainer.title ? ` (${trainer.title})` : ""; + vouchers[key] = new Voucher( + voucherType, + `${i18next.t("voucher:defeatTrainer", { trainerName })} ${title}`, + ); + } + const voucherKeys = Object.keys(vouchers); + for (const k of voucherKeys) { + vouchers[k].id = k; + } } diff --git a/src/test/abilities/ability_timing.test.ts b/src/test/abilities/ability_timing.test.ts index 3906233a7bf..c117c62d45b 100644 --- a/src/test/abilities/ability_timing.test.ts +++ b/src/test/abilities/ability_timing.test.ts @@ -1,4 +1,3 @@ -import { CommandPhase, MessagePhase, TurnInitPhase } from "#app/phases"; import i18next, { initI18n } from "#app/plugins/i18n"; import GameManager from "#test/utils/gameManager"; import { Mode } from "#app/ui/ui"; @@ -8,6 +7,9 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Ability Timing", () => { diff --git a/src/test/abilities/aura_break.test.ts b/src/test/abilities/aura_break.test.ts index a34475cb1ad..bca400bc0e3 100644 --- a/src/test/abilities/aura_break.test.ts +++ b/src/test/abilities/aura_break.test.ts @@ -1,5 +1,4 @@ import { allMoves } from "#app/data/move.js"; -import { MoveEffectPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -8,6 +7,7 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; describe("Abilities - Aura Break", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/battery.test.ts b/src/test/abilities/battery.test.ts index 2345e63d987..766c1c30ecc 100644 --- a/src/test/abilities/battery.test.ts +++ b/src/test/abilities/battery.test.ts @@ -1,6 +1,5 @@ import { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; -import { MoveEffectPhase, TurnEndPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -8,6 +7,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Battery", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/battle_bond.test.ts b/src/test/abilities/battle_bond.test.ts index 1a5c71b4c15..c28a00e821d 100644 --- a/src/test/abilities/battle_bond.test.ts +++ b/src/test/abilities/battle_bond.test.ts @@ -1,6 +1,6 @@ import { Status, StatusEffect } from "#app/data/status-effect.js"; -import { QuietFormChangePhase } from "#app/form-change-phase.js"; -import { TurnEndPhase } from "#app/phases.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/abilities/costar.test.ts b/src/test/abilities/costar.test.ts index ef3fb3a2ab0..9410ee55069 100644 --- a/src/test/abilities/costar.test.ts +++ b/src/test/abilities/costar.test.ts @@ -2,12 +2,13 @@ import { BattleStat } from "#app/data/battle-stat.js"; import { Abilities } from "#app/enums/abilities.js"; import { Moves } from "#app/enums/moves.js"; import { Species } from "#app/enums/species.js"; -import { CommandPhase, MessagePhase } from "#app/phases.js"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/disguise.test.ts b/src/test/abilities/disguise.test.ts index 183295f6f41..969375c397e 100644 --- a/src/test/abilities/disguise.test.ts +++ b/src/test/abilities/disguise.test.ts @@ -2,12 +2,16 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; -import { Abilities } from "#enums/abilities"; import { Species } from "#enums/species"; import { StatusEffect } from "#app/data/status-effect.js"; -import { MoveEffectPhase, MoveEndPhase, TurnEndPhase, TurnInitPhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; import { SPLASH_ONLY } from "../utils/testUtils"; +import { Mode } from "#app/ui/ui.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; const TIMEOUT = 20 * 1000; @@ -38,7 +42,7 @@ describe("Abilities - Disguise", () => { game.override.moveset([Moves.SHADOW_SNEAK, Moves.VACUUM_WAVE, Moves.TOXIC_THREAD, Moves.SPLASH]); }, TIMEOUT); - it("takes no damage from attacking move and transforms to Busted form, taking 1/8 max HP damage from the disguise breaking", async () => { + it("takes no damage from attacking move and transforms to Busted form, takes 1/8 max HP damage from the disguise breaking", async () => { await game.startBattle(); const mimikyu = game.scene.getEnemyPokemon()!; @@ -134,17 +138,30 @@ describe("Abilities - Disguise", () => { expect(mimikyu.formIndex).toBe(bustedForm); }, TIMEOUT); - it("reverts to Disguised on arena reset", async () => { - game.override.startingWave(4); + it("persists form change when wave changes with no arena reset", async () => { + game.override.starterSpecies(0); + game.override.starterForms({ + [Species.MIMIKYU]: bustedForm + }); + await game.startBattle([Species.FURRET, Species.MIMIKYU]); + const mimikyu = game.scene.getParty()[1]!; + expect(mimikyu.formIndex).toBe(bustedForm); + + game.doAttack(getMovePosition(game.scene, 0, Moves.SPLASH)); + await game.doKillOpponents(); + await game.toNextWave(); + + expect(mimikyu.formIndex).toBe(bustedForm); + }, TIMEOUT); + + it("reverts to Disguised form on arena reset", async () => { + game.override.startingWave(4); game.override.starterSpecies(Species.MIMIKYU); game.override.starterForms({ [Species.MIMIKYU]: bustedForm }); - game.override.enemySpecies(Species.MAGIKARP); - game.override.enemyAbility(Abilities.BALL_FETCH); - await game.startBattle(); const mimikyu = game.scene.getPlayerPokemon()!; @@ -153,10 +170,41 @@ describe("Abilities - Disguise", () => { game.doAttack(getMovePosition(game.scene, 0, Moves.SPLASH)); await game.doKillOpponents(); - await game.phaseInterceptor.to(TurnEndPhase); - game.doSelectModifier(); - await game.phaseInterceptor.to(TurnInitPhase); + await game.toNextWave(); expect(mimikyu.formIndex).toBe(disguisedForm); }, TIMEOUT); + + it("reverts to Disguised form on biome change when fainted", async () => { + game.override.startingWave(10); + game.override.starterSpecies(0); + game.override.starterForms({ + [Species.MIMIKYU]: bustedForm + }); + + await game.startBattle([Species.MIMIKYU, Species.FURRET]); + + const mimikyu1 = game.scene.getPlayerPokemon()!; + + expect(mimikyu1.formIndex).toBe(bustedForm); + + game.doAttack(getMovePosition(game.scene, 0, Moves.SPLASH)); + await game.killPokemon(mimikyu1); + game.doSelectPartyPokemon(1); + await game.toNextTurn(); + game.doAttack(getMovePosition(game.scene, 0, Moves.SPLASH)); + await game.doKillOpponents(); + game.onNextPrompt("CheckSwitchPhase", Mode.CONFIRM, () => { // TODO: Make tests run in set mode instead of switch mode + game.setMode(Mode.MESSAGE); + game.endPhase(); + }, () => game.isCurrentPhase(CommandPhase) || game.isCurrentPhase(TurnInitPhase)); + + game.onNextPrompt("CheckSwitchPhase", Mode.CONFIRM, () => { + game.setMode(Mode.MESSAGE); + game.endPhase(); + }, () => game.isCurrentPhase(CommandPhase) || game.isCurrentPhase(TurnInitPhase)); + await game.phaseInterceptor.to("PartyHealPhase"); + + expect(mimikyu1.formIndex).toBe(disguisedForm); + }, TIMEOUT); }); diff --git a/src/test/abilities/dry_skin.test.ts b/src/test/abilities/dry_skin.test.ts index 20b85eab767..1e3860da985 100644 --- a/src/test/abilities/dry_skin.test.ts +++ b/src/test/abilities/dry_skin.test.ts @@ -1,5 +1,4 @@ import { Species } from "#app/enums/species.js"; -import { TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -7,6 +6,7 @@ import { Moves } from "#enums/moves"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Dry Skin", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/flash_fire.test.ts b/src/test/abilities/flash_fire.test.ts index b77b271b754..28c59903b68 100644 --- a/src/test/abilities/flash_fire.test.ts +++ b/src/test/abilities/flash_fire.test.ts @@ -5,11 +5,12 @@ import { Moves } from "#enums/moves"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; -import { MovePhase, TurnEndPhase } from "#app/phases"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { StatusEffect } from "#app/data/status-effect.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { BattlerIndex } from "#app/battle.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Flash Fire", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/gulp_missile.test.ts b/src/test/abilities/gulp_missile.test.ts index 2647f765f6e..d033604fe00 100644 --- a/src/test/abilities/gulp_missile.test.ts +++ b/src/test/abilities/gulp_missile.test.ts @@ -1,10 +1,4 @@ import { BattlerTagType } from "#app/enums/battler-tag-type.js"; -import { - BerryPhase, - MoveEndPhase, - TurnEndPhase, - TurnStartPhase, -} from "#app/phases"; import GameManager from "#app/test/utils/gameManager"; import { getMovePosition } from "#app/test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -16,6 +10,10 @@ import { SPLASH_ONLY } from "../utils/testUtils"; import { BattleStat } from "#app/data/battle-stat.js"; import { StatusEffect } from "#app/enums/status-effect.js"; import Pokemon from "#app/field/pokemon.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; describe("Abilities - Gulp Missile", () => { let phaserGame: Phaser.Game; @@ -84,6 +82,21 @@ describe("Abilities - Gulp Missile", () => { expect(cramorant.formIndex).toBe(GORGING_FORM); }); + it("changes to base form when switched out after Surf or Dive is used", async () => { + await game.startBattle([Species.CRAMORANT, Species.MAGIKARP]); + const cramorant = game.scene.getPlayerPokemon()!; + + game.doAttack(getMovePosition(game.scene, 0, Moves.SURF)); + await game.toNextTurn(); + + game.doSwitchPokemon(1); + await game.toNextTurn(); // form change is delayed until after end of turn + + expect(cramorant.formIndex).toBe(NORMAL_FORM); + expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA)).toBeUndefined(); + expect(cramorant.getTag(BattlerTagType.GULP_MISSILE_PIKACHU)).toBeUndefined(); + }); + it("changes form during Dive's charge turn", async () => { await game.startBattle([Species.CRAMORANT]); const cramorant = game.scene.getPlayerPokemon()!; diff --git a/src/test/abilities/heatproof.test.ts b/src/test/abilities/heatproof.test.ts index 8249ba6996f..64a45c5023f 100644 --- a/src/test/abilities/heatproof.test.ts +++ b/src/test/abilities/heatproof.test.ts @@ -1,5 +1,5 @@ import { Species } from "#app/enums/species.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/hustle.test.ts b/src/test/abilities/hustle.test.ts index dde310fda2a..8f5547a5518 100644 --- a/src/test/abilities/hustle.test.ts +++ b/src/test/abilities/hustle.test.ts @@ -1,7 +1,6 @@ import { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; import { Stat } from "#app/enums/stat.js"; -import { DamagePhase, MoveEffectPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -9,6 +8,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; describe("Abilities - Hustle", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/hyper_cutter.test.ts b/src/test/abilities/hyper_cutter.test.ts new file mode 100644 index 00000000000..9637a80ddb4 --- /dev/null +++ b/src/test/abilities/hyper_cutter.test.ts @@ -0,0 +1,58 @@ +import { BattleStat } from "#app/data/battle-stat"; +import { Abilities } from "#enums/abilities"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { SPLASH_ONLY } from "#test/utils/testUtils"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; + +describe("Abilities - Hyper Cutter", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + game.override + .battleType("single") + .moveset([Moves.SAND_ATTACK, Moves.NOBLE_ROAR, Moves.DEFOG, Moves.OCTOLOCK]) + .ability(Abilities.BALL_FETCH) + .enemySpecies(Species.SHUCKLE) + .enemyAbility(Abilities.HYPER_CUTTER) + .enemyMoveset(SPLASH_ONLY); + }); + + // Reference Link: https://bulbapedia.bulbagarden.net/wiki/Hyper_Cutter_(Ability) + + it("only prevents ATK drops", async () => { + await game.startBattle(); + + const enemy = game.scene.getEnemyPokemon()!; + + game.doAttack(getMovePosition(game.scene, 0, Moves.OCTOLOCK)); + await game.toNextTurn(); + game.doAttack(getMovePosition(game.scene, 0, Moves.DEFOG)); + await game.toNextTurn(); + game.doAttack(getMovePosition(game.scene, 0, Moves.NOBLE_ROAR)); + await game.toNextTurn(); + game.doAttack(getMovePosition(game.scene, 0, Moves.SAND_ATTACK)); + await game.toNextTurn(); + game.override.moveset([Moves.STRING_SHOT]); + game.doAttack(getMovePosition(game.scene, 0, Moves.STRING_SHOT)); + await game.toNextTurn(); + + expect(enemy.summonData.battleStats[BattleStat.ATK]).toEqual(0); + [BattleStat.ACC, BattleStat.DEF, BattleStat.EVA, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD].forEach((stat: number) => expect(enemy.summonData.battleStats[stat]).toBeLessThan(0)); + }); +}); diff --git a/src/test/abilities/ice_face.test.ts b/src/test/abilities/ice_face.test.ts index cdf8d5928ee..905e0dfdaf7 100644 --- a/src/test/abilities/ice_face.test.ts +++ b/src/test/abilities/ice_face.test.ts @@ -1,5 +1,3 @@ -import { QuietFormChangePhase } from "#app/form-change-phase"; -import { MoveEffectPhase, MoveEndPhase, TurnEndPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -8,6 +6,11 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Abilities - Ice Face", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/intimidate.test.ts b/src/test/abilities/intimidate.test.ts index 2b4c1041bfe..842b33108a3 100644 --- a/src/test/abilities/intimidate.test.ts +++ b/src/test/abilities/intimidate.test.ts @@ -7,11 +7,16 @@ import { generateStarter, getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; import { Status, StatusEffect } from "#app/data/status-effect"; import { GameModes, getGameMode } from "#app/game-mode"; -import { CommandPhase, DamagePhase, EncounterPhase, EnemyCommandPhase, SelectStarterPhase, TurnInitPhase } from "#app/phases"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Abilities - Intimidate", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/intrepid_sword.test.ts b/src/test/abilities/intrepid_sword.test.ts index dcc91421165..c1c05b59997 100644 --- a/src/test/abilities/intrepid_sword.test.ts +++ b/src/test/abilities/intrepid_sword.test.ts @@ -1,10 +1,10 @@ import { BattleStat } from "#app/data/battle-stat"; -import { CommandPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { Abilities } from "#enums/abilities"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; describe("Abilities - Intrepid Sword", () => { diff --git a/src/test/abilities/libero.test.ts b/src/test/abilities/libero.test.ts index 2581eac068d..d35cb8b6e2d 100644 --- a/src/test/abilities/libero.test.ts +++ b/src/test/abilities/libero.test.ts @@ -2,7 +2,6 @@ import { allMoves } from "#app/data/move.js"; import { Type } from "#app/data/type.js"; import { Weather, WeatherType } from "#app/data/weather.js"; import { PlayerPokemon } from "#app/field/pokemon.js"; -import { TurnEndPhase } from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Biome } from "#enums/biome"; @@ -13,6 +12,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vi import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/magic_guard.test.ts b/src/test/abilities/magic_guard.test.ts index c86d65ca453..c7404f83a54 100644 --- a/src/test/abilities/magic_guard.test.ts +++ b/src/test/abilities/magic_guard.test.ts @@ -2,7 +2,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; import { Species } from "#enums/species"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { Moves } from "#enums/moves"; import { ArenaTagType } from "#enums/arena-tag-type"; import { ArenaTagSide, getArenaTag } from "#app/data/arena-tag"; diff --git a/src/test/abilities/moxie.test.ts b/src/test/abilities/moxie.test.ts index f99068dea41..6550dcab526 100644 --- a/src/test/abilities/moxie.test.ts +++ b/src/test/abilities/moxie.test.ts @@ -1,6 +1,5 @@ import { BattleStat } from "#app/data/battle-stat"; import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, EnemyCommandPhase, VictoryPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -10,6 +9,9 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { VictoryPhase } from "#app/phases/victory-phase.js"; describe("Abilities - Moxie", () => { diff --git a/src/test/abilities/mycelium_might.test.ts b/src/test/abilities/mycelium_might.test.ts index d519eb67626..2fcdc28b279 100644 --- a/src/test/abilities/mycelium_might.test.ts +++ b/src/test/abilities/mycelium_might.test.ts @@ -1,4 +1,5 @@ -import { MovePhase, TurnEndPhase } from "#app/phases"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/parental_bond.test.ts b/src/test/abilities/parental_bond.test.ts index 182f780763c..ef0ad7785d2 100644 --- a/src/test/abilities/parental_bond.test.ts +++ b/src/test/abilities/parental_bond.test.ts @@ -2,7 +2,6 @@ import { BattleStat } from "#app/data/battle-stat.js"; import { StatusEffect } from "#app/data/status-effect.js"; import { Type } from "#app/data/type.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; -import { BerryPhase, CommandPhase, DamagePhase, MoveEffectPhase, MoveEndPhase, TurnEndPhase } from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -11,6 +10,12 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/pastel_veil.test.ts b/src/test/abilities/pastel_veil.test.ts index e3d52a720b3..cb6be666d5f 100644 --- a/src/test/abilities/pastel_veil.test.ts +++ b/src/test/abilities/pastel_veil.test.ts @@ -2,13 +2,14 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; import { Species } from "#enums/species"; -import { CommandPhase, TurnEndPhase } from "#app/phases"; import { Moves } from "#enums/moves"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { StatusEffect } from "#app/data/status-effect.js"; import { allAbilities } from "#app/data/ability.js"; import { Abilities } from "#app/enums/abilities.js"; import { BattlerIndex } from "#app/battle.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Pastel Veil", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/power_construct.test.ts b/src/test/abilities/power_construct.test.ts index dd8fd836e51..e6a319d229f 100644 --- a/src/test/abilities/power_construct.test.ts +++ b/src/test/abilities/power_construct.test.ts @@ -1,6 +1,6 @@ import { Status, StatusEffect } from "#app/data/status-effect.js"; -import { QuietFormChangePhase } from "#app/form-change-phase.js"; -import { TurnEndPhase } from "#app/phases.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/abilities/power_spot.test.ts b/src/test/abilities/power_spot.test.ts index 368f8a48110..467fc677ac0 100644 --- a/src/test/abilities/power_spot.test.ts +++ b/src/test/abilities/power_spot.test.ts @@ -1,6 +1,5 @@ import { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; -import { MoveEffectPhase, TurnEndPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -8,6 +7,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Power Spot", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/protean.test.ts b/src/test/abilities/protean.test.ts index 78768ce32db..ed63613945a 100644 --- a/src/test/abilities/protean.test.ts +++ b/src/test/abilities/protean.test.ts @@ -2,7 +2,6 @@ import { allMoves } from "#app/data/move.js"; import { Type } from "#app/data/type.js"; import { Weather, WeatherType } from "#app/data/weather.js"; import { PlayerPokemon } from "#app/field/pokemon.js"; -import { TurnEndPhase } from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { BattlerTagType } from "#enums/battler-tag-type"; import { Biome } from "#enums/biome"; @@ -13,6 +12,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vi import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/quick_draw.test.ts b/src/test/abilities/quick_draw.test.ts index 75bb9ec6a0a..6e3416b0724 100644 --- a/src/test/abilities/quick_draw.test.ts +++ b/src/test/abilities/quick_draw.test.ts @@ -1,5 +1,4 @@ import { allAbilities, BypassSpeedChanceAbAttr } from "#app/data/ability"; -import { FaintPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -7,6 +6,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; +import { FaintPhase } from "#app/phases/faint-phase.js"; describe("Abilities - Quick Draw", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/sand_veil.test.ts b/src/test/abilities/sand_veil.test.ts index 6aab362634a..010878db68d 100644 --- a/src/test/abilities/sand_veil.test.ts +++ b/src/test/abilities/sand_veil.test.ts @@ -1,7 +1,6 @@ import { BattleStatMultiplierAbAttr, allAbilities } from "#app/data/ability.js"; import { BattleStat } from "#app/data/battle-stat.js"; import { WeatherType } from "#app/data/weather.js"; -import { CommandPhase, MoveEffectPhase, MoveEndPhase } from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -9,6 +8,9 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/sap_sipper.test.ts b/src/test/abilities/sap_sipper.test.ts index 6fbe57978e9..dfb4ab7e976 100644 --- a/src/test/abilities/sap_sipper.test.ts +++ b/src/test/abilities/sap_sipper.test.ts @@ -1,6 +1,5 @@ import { BattleStat } from "#app/data/battle-stat.js"; import { TerrainType } from "#app/data/terrain.js"; -import { MoveEndPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -9,6 +8,8 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; // See also: TypeImmunityAbAttr describe("Abilities - Sap Sipper", () => { diff --git a/src/test/abilities/schooling.test.ts b/src/test/abilities/schooling.test.ts index e55b7795006..62a7e98bc76 100644 --- a/src/test/abilities/schooling.test.ts +++ b/src/test/abilities/schooling.test.ts @@ -1,6 +1,6 @@ import { Status, StatusEffect } from "#app/data/status-effect.js"; -import { QuietFormChangePhase } from "#app/form-change-phase.js"; -import { TurnEndPhase } from "#app/phases.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/abilities/screen_cleaner.test.ts b/src/test/abilities/screen_cleaner.test.ts index a73f56dd3eb..403efcce1c0 100644 --- a/src/test/abilities/screen_cleaner.test.ts +++ b/src/test/abilities/screen_cleaner.test.ts @@ -1,5 +1,4 @@ import { ArenaTagType } from "#app/enums/arena-tag-type.js"; -import { PostSummonPhase, TurnEndPhase, } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -7,6 +6,8 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { PostSummonPhase } from "#app/phases/post-summon-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Screen Cleaner", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/serene_grace.test.ts b/src/test/abilities/serene_grace.test.ts index d46587e45c7..5e4841f005a 100644 --- a/src/test/abilities/serene_grace.test.ts +++ b/src/test/abilities/serene_grace.test.ts @@ -1,6 +1,5 @@ import { applyAbAttrs, MoveEffectChanceMultiplierAbAttr } from "#app/data/ability"; import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, MoveEffectPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -12,6 +11,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { BattlerIndex } from "#app/battle.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; describe("Abilities - Serene Grace", () => { diff --git a/src/test/abilities/sheer_force.test.ts b/src/test/abilities/sheer_force.test.ts index 50a0f0b63fb..33b34124cc4 100644 --- a/src/test/abilities/sheer_force.test.ts +++ b/src/test/abilities/sheer_force.test.ts @@ -1,6 +1,7 @@ import { applyAbAttrs, applyPostDefendAbAttrs, applyPreAttackAbAttrs, MoveEffectChanceMultiplierAbAttr, MovePowerBoostAbAttr, PostDefendTypeChangeAbAttr } from "#app/data/ability"; import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, MoveEffectPhase } from "#app/phases"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; diff --git a/src/test/abilities/shield_dust.test.ts b/src/test/abilities/shield_dust.test.ts index f1534551e92..b40689a180a 100644 --- a/src/test/abilities/shield_dust.test.ts +++ b/src/test/abilities/shield_dust.test.ts @@ -1,6 +1,7 @@ import { applyAbAttrs, applyPreDefendAbAttrs, IgnoreMoveEffectsAbAttr, MoveEffectChanceMultiplierAbAttr } from "#app/data/ability"; import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, MoveEffectPhase } from "#app/phases"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; diff --git a/src/test/abilities/shields_down.test.ts b/src/test/abilities/shields_down.test.ts index 4d85e8aa47c..e07c12ebb63 100644 --- a/src/test/abilities/shields_down.test.ts +++ b/src/test/abilities/shields_down.test.ts @@ -1,6 +1,6 @@ import { Status, StatusEffect } from "#app/data/status-effect.js"; -import { QuietFormChangePhase } from "#app/form-change-phase.js"; -import { TurnEndPhase } from "#app/phases.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/abilities/stall.test.ts b/src/test/abilities/stall.test.ts index 44519064300..5410d2e953e 100644 --- a/src/test/abilities/stall.test.ts +++ b/src/test/abilities/stall.test.ts @@ -1,4 +1,3 @@ -import { MovePhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -6,6 +5,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { MovePhase } from "#app/phases/move-phase.js"; describe("Abilities - Stall", () => { diff --git a/src/test/abilities/steely_spirit.test.ts b/src/test/abilities/steely_spirit.test.ts index 5d5514bc3a1..3ca1a55ebee 100644 --- a/src/test/abilities/steely_spirit.test.ts +++ b/src/test/abilities/steely_spirit.test.ts @@ -1,7 +1,6 @@ import { allAbilities } from "#app/data/ability.js"; import { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; -import { MoveEffectPhase, SelectTargetPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -9,6 +8,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; describe("Abilities - Steely Spirit", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/sturdy.test.ts b/src/test/abilities/sturdy.test.ts index 4caa7b0bd14..602b2c04eb1 100644 --- a/src/test/abilities/sturdy.test.ts +++ b/src/test/abilities/sturdy.test.ts @@ -1,5 +1,4 @@ import { EnemyPokemon } from "#app/field/pokemon.js"; -import { DamagePhase, MoveEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -7,6 +6,8 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/sweet_veil.test.ts b/src/test/abilities/sweet_veil.test.ts index d650455664f..8ab384ae59e 100644 --- a/src/test/abilities/sweet_veil.test.ts +++ b/src/test/abilities/sweet_veil.test.ts @@ -2,13 +2,15 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; import { Species } from "#enums/species"; -import { CommandPhase, MovePhase, TurnEndPhase } from "#app/phases"; import { Moves } from "#enums/moves"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { Abilities } from "#app/enums/abilities.js"; import { BattlerIndex } from "#app/battle.js"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Abilities - Sweet Veil", () => { let phaserGame: Phaser.Game; diff --git a/src/test/abilities/unseen_fist.test.ts b/src/test/abilities/unseen_fist.test.ts index a6cad8b03ce..7d47d73bb16 100644 --- a/src/test/abilities/unseen_fist.test.ts +++ b/src/test/abilities/unseen_fist.test.ts @@ -1,4 +1,3 @@ -import { TurnEndPhase } from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -6,6 +5,7 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/volt_absorb.test.ts b/src/test/abilities/volt_absorb.test.ts index 985459e133b..0e3d5c9792f 100644 --- a/src/test/abilities/volt_absorb.test.ts +++ b/src/test/abilities/volt_absorb.test.ts @@ -1,5 +1,5 @@ import { BattleStat } from "#app/data/battle-stat.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/wind_power.test.ts b/src/test/abilities/wind_power.test.ts index 670544a89ef..24f01cceebc 100644 --- a/src/test/abilities/wind_power.test.ts +++ b/src/test/abilities/wind_power.test.ts @@ -1,5 +1,5 @@ import { BattlerTagType } from "#app/enums/battler-tag-type.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/wind_rider.test.ts b/src/test/abilities/wind_rider.test.ts index e27349efe41..92c38507e4f 100644 --- a/src/test/abilities/wind_rider.test.ts +++ b/src/test/abilities/wind_rider.test.ts @@ -1,5 +1,5 @@ import { BattleStat } from "#app/data/battle-stat.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/wonder_skin.test.ts b/src/test/abilities/wonder_skin.test.ts index a2815152df6..d6e2b2443c4 100644 --- a/src/test/abilities/wonder_skin.test.ts +++ b/src/test/abilities/wonder_skin.test.ts @@ -1,6 +1,6 @@ import { allAbilities } from "#app/data/ability.js"; import { allMoves } from "#app/data/move.js"; -import { MoveEffectPhase } from "#app/phases"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/abilities/zen_mode.test.ts b/src/test/abilities/zen_mode.test.ts index 1bc7a6af4ce..72fdc5442c5 100644 --- a/src/test/abilities/zen_mode.test.ts +++ b/src/test/abilities/zen_mode.test.ts @@ -1,7 +1,5 @@ import { Stat } from "#app/data/pokemon-stat"; import { Status, StatusEffect } from "#app/data/status-effect.js"; -import { QuietFormChangePhase } from "#app/form-change-phase"; -import { CommandPhase, DamagePhase, EnemyCommandPhase, MessagePhase, PostSummonPhase, SwitchPhase, SwitchSummonPhase, TurnEndPhase, TurnInitPhase, TurnStartPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -12,6 +10,17 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import { BattlerIndex } from "#app/battle.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; +import { PostSummonPhase } from "#app/phases/post-summon-phase.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { SwitchPhase } from "#app/phases/switch-phase.js"; +import { SwitchSummonPhase } from "#app/phases/switch-summon-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/abilities/zero_to_hero.test.ts b/src/test/abilities/zero_to_hero.test.ts index 7924b30eb76..ee6c07096a8 100644 --- a/src/test/abilities/zero_to_hero.test.ts +++ b/src/test/abilities/zero_to_hero.test.ts @@ -1,6 +1,6 @@ import { Status, StatusEffect } from "#app/data/status-effect.js"; -import { QuietFormChangePhase } from "#app/form-change-phase.js"; -import { TurnEndPhase } from "#app/phases.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/arena/arena_gravity.test.ts b/src/test/arena/arena_gravity.test.ts index 66d6994fb80..68c31258454 100644 --- a/src/test/arena/arena_gravity.test.ts +++ b/src/test/arena/arena_gravity.test.ts @@ -1,13 +1,14 @@ import { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; import { ArenaTagType } from "#app/enums/arena-tag-type.js"; -import { MoveEffectPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Arena - Gravity", () => { let phaserGame: Phaser.Game; diff --git a/src/test/arena/weather_fog.test.ts b/src/test/arena/weather_fog.test.ts index e5718b73a3c..350007ae943 100644 --- a/src/test/arena/weather_fog.test.ts +++ b/src/test/arena/weather_fog.test.ts @@ -1,7 +1,7 @@ import { allMoves } from "#app/data/move.js"; import { WeatherType } from "#app/data/weather.js"; import { Abilities } from "#app/enums/abilities.js"; -import { MoveEffectPhase } from "#app/phases"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; diff --git a/src/test/arena/weather_strong_winds.test.ts b/src/test/arena/weather_strong_winds.test.ts index d9f626cfb83..79fba30c019 100644 --- a/src/test/arena/weather_strong_winds.test.ts +++ b/src/test/arena/weather_strong_winds.test.ts @@ -1,5 +1,4 @@ import { allMoves } from "#app/data/move.js"; -import { TurnStartPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -7,6 +6,7 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; describe("Weather - Strong Winds", () => { let phaserGame: Phaser.Game; diff --git a/src/test/battle/battle-order.test.ts b/src/test/battle/battle-order.test.ts index 6aa919186b4..208b921b843 100644 --- a/src/test/battle/battle-order.test.ts +++ b/src/test/battle/battle-order.test.ts @@ -1,5 +1,4 @@ import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, EnemyCommandPhase, SelectTargetPhase, TurnStartPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -11,6 +10,10 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; describe("Battle order", () => { diff --git a/src/test/battle/battle.test.ts b/src/test/battle/battle.test.ts index a4713f90506..43d8ddce4b0 100644 --- a/src/test/battle/battle.test.ts +++ b/src/test/battle/battle.test.ts @@ -2,21 +2,6 @@ import { allSpecies } from "#app/data/pokemon-species"; import { TempBattleStat } from "#app/data/temp-battle-stat.js"; import { GameModes } from "#app/game-mode"; import { getGameMode } from "#app/game-mode.js"; -import { - BattleEndPhase, - CommandPhase, DamagePhase, - EncounterPhase, - EnemyCommandPhase, - LoginPhase, - NextEncounterPhase, - SelectGenderPhase, - SelectModifierPhase, - SelectStarterPhase, - SummonPhase, - SwitchPhase, - TitlePhase, - TurnInitPhase, VictoryPhase, -} from "#app/phases"; import GameManager from "#app/test/utils/gameManager"; import { generateStarter, getMovePosition, } from "#app/test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -28,6 +13,21 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "../utils/testUtils"; +import { BattleEndPhase } from "#app/phases/battle-end-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { LoginPhase } from "#app/phases/login-phase.js"; +import { NextEncounterPhase } from "#app/phases/next-encounter-phase.js"; +import { SelectGenderPhase } from "#app/phases/select-gender-phase.js"; +import { SelectModifierPhase } from "#app/phases/select-modifier-phase.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; +import { SummonPhase } from "#app/phases/summon-phase.js"; +import { SwitchPhase } from "#app/phases/switch-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; +import { VictoryPhase } from "#app/phases/victory-phase.js"; describe("Test Battle Phase", () => { let phaserGame: Phaser.Game; diff --git a/src/test/battle/double_battle.test.ts b/src/test/battle/double_battle.test.ts index 76b7defe33d..d2ee3812b3e 100644 --- a/src/test/battle/double_battle.test.ts +++ b/src/test/battle/double_battle.test.ts @@ -1,4 +1,3 @@ -import { BattleEndPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition, } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -7,6 +6,8 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; import { Status, StatusEffect } from "#app/data/status-effect.js"; +import { BattleEndPhase } from "#app/phases/battle-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Double Battles", () => { let phaserGame: Phaser.Game; diff --git a/src/test/battle/special_battle.test.ts b/src/test/battle/special_battle.test.ts index 6130df703f5..9b0fd1b3ab1 100644 --- a/src/test/battle/special_battle.test.ts +++ b/src/test/battle/special_battle.test.ts @@ -1,4 +1,4 @@ -import { CommandPhase } from "#app/phases"; +import { CommandPhase } from "#app/phases/command-phase.js"; import GameManager from "#test/utils/gameManager"; import { Mode } from "#app/ui/ui"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/battlerTags/octolock.test.ts b/src/test/battlerTags/octolock.test.ts index 369a84e21fa..a69b45cdfd2 100644 --- a/src/test/battlerTags/octolock.test.ts +++ b/src/test/battlerTags/octolock.test.ts @@ -2,9 +2,9 @@ import { describe, expect, it, vi } from "vitest"; import Pokemon from "#app/field/pokemon.js"; import BattleScene from "#app/battle-scene.js"; import { BattlerTag, BattlerTagLapseType, OctolockTag, TrappedTag } from "#app/data/battler-tags.js"; -import { StatChangePhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; vi.mock("#app/battle-scene.js"); diff --git a/src/test/battlerTags/stockpiling.test.ts b/src/test/battlerTags/stockpiling.test.ts index 005f1e1593c..1a39d11e1bd 100644 --- a/src/test/battlerTags/stockpiling.test.ts +++ b/src/test/battlerTags/stockpiling.test.ts @@ -2,9 +2,9 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import Pokemon, { PokemonSummonData } from "#app/field/pokemon.js"; import BattleScene from "#app/battle-scene.js"; import { StockpilingTag } from "#app/data/battler-tags.js"; -import { StatChangePhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; import * as messages from "#app/messages.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; beforeEach(() => { vi.spyOn(messages, "getPokemonNameWithAffix").mockImplementation(() => ""); diff --git a/src/test/items/grip_claw.test.ts b/src/test/items/grip_claw.test.ts index 40ef81fed73..ecf144c96c5 100644 --- a/src/test/items/grip_claw.test.ts +++ b/src/test/items/grip_claw.test.ts @@ -4,11 +4,13 @@ import { Abilities } from "#app/enums/abilities.js"; import { BerryType } from "#app/enums/berry-type.js"; import { Moves } from "#app/enums/moves.js"; import { Species } from "#app/enums/species.js"; -import { CommandPhase, MoveEndPhase, SelectTargetPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import Phase from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; const TIMEOUT = 20 * 1000; // 20 seconds diff --git a/src/test/items/leek.test.ts b/src/test/items/leek.test.ts index 4abc470c6f0..1e46bda9f0f 100644 --- a/src/test/items/leek.test.ts +++ b/src/test/items/leek.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { CritBoosterModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { MoveEffectPhase } from "#app/phases"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import * as Utils from "#app/utils"; import { Moves } from "#enums/moves"; diff --git a/src/test/items/leftovers.test.ts b/src/test/items/leftovers.test.ts index e791c4426a1..1a1c95ad9e6 100644 --- a/src/test/items/leftovers.test.ts +++ b/src/test/items/leftovers.test.ts @@ -1,4 +1,3 @@ -import { DamagePhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -6,6 +5,8 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Items - Leftovers", () => { diff --git a/src/test/items/lock_capsule.test.ts b/src/test/items/lock_capsule.test.ts new file mode 100644 index 00000000000..0909e51ea2c --- /dev/null +++ b/src/test/items/lock_capsule.test.ts @@ -0,0 +1,47 @@ +import GameManager from "#test/utils/gameManager"; +import Phase from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { Abilities } from "#app/enums/abilities.js"; +import { Moves } from "#app/enums/moves.js"; +import { getMovePosition } from "../utils/gameManagerUtils"; +import { ModifierTypeOption, modifierTypes } from "#app/modifier/modifier-type.js"; +import { SelectModifierPhase } from "#app/phases/select-modifier-phase.js"; + +describe("Items - Lock Capsule", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phase.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .battleType("single") + .startingLevel(200) + .moveset([Moves.SURF]) + .enemyAbility(Abilities.BALL_FETCH) + .startingModifier([{name: "LOCK_CAPSULE"}]); + }); + + it("doesn't set the cost of common tier items to 0", async() => { + await game.startBattle(); + + game.doAttack(getMovePosition(game.scene, 0, Moves.SURF)); + await game.phaseInterceptor.to(SelectModifierPhase, false); + + const rewards = game.scene.getCurrentPhase() as SelectModifierPhase; + const potion = new ModifierTypeOption(modifierTypes.POTION(), 0, 40); // Common tier item + const rerollCost = rewards.getRerollCost([potion, potion, potion], true); + + expect(rerollCost).toBe(150); + }, 20000); +}); diff --git a/src/test/items/scope_lens.test.ts b/src/test/items/scope_lens.test.ts index 4efc7ab9d05..fa605ca7129 100644 --- a/src/test/items/scope_lens.test.ts +++ b/src/test/items/scope_lens.test.ts @@ -1,7 +1,7 @@ import { BattlerIndex } from "#app/battle"; import { CritBoosterModifier } from "#app/modifier/modifier"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { MoveEffectPhase } from "#app/phases"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import * as Utils from "#app/utils"; import { Moves } from "#enums/moves"; diff --git a/src/test/items/toxic_orb.test.ts b/src/test/items/toxic_orb.test.ts index 69f55cb2bbc..dc54a5a1c36 100644 --- a/src/test/items/toxic_orb.test.ts +++ b/src/test/items/toxic_orb.test.ts @@ -1,5 +1,4 @@ import { StatusEffect } from "#app/data/status-effect"; -import { CommandPhase, EnemyCommandPhase, MessagePhase, TurnEndPhase } from "#app/phases"; import i18next, { initI18n } from "#app/plugins/i18n"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; @@ -10,6 +9,10 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Items - Toxic orb", () => { diff --git a/src/test/moves/astonish.test.ts b/src/test/moves/astonish.test.ts index 358e4a9bec3..21a82f09d33 100644 --- a/src/test/moves/astonish.test.ts +++ b/src/test/moves/astonish.test.ts @@ -1,6 +1,5 @@ import { allMoves } from "#app/data/move.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; -import { BerryPhase, CommandPhase, MoveEndPhase, TurnEndPhase } from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -8,6 +7,10 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/aurora_veil.test.ts b/src/test/moves/aurora_veil.test.ts index a10c9b6b60a..5429efec2bf 100644 --- a/src/test/moves/aurora_veil.test.ts +++ b/src/test/moves/aurora_veil.test.ts @@ -4,7 +4,7 @@ import { WeatherType } from "#app/data/weather.js"; import { Abilities } from "#app/enums/abilities.js"; import { ArenaTagType } from "#app/enums/arena-tag-type.js"; import Pokemon from "#app/field/pokemon.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { NumberHolder } from "#app/utils.js"; diff --git a/src/test/moves/baton_pass.test.ts b/src/test/moves/baton_pass.test.ts index 9f0cb3619b2..790eddbf45c 100644 --- a/src/test/moves/baton_pass.test.ts +++ b/src/test/moves/baton_pass.test.ts @@ -1,5 +1,4 @@ import { BattleStat } from "#app/data/battle-stat.js"; -import { PostSummonPhase, TurnEndPhase } from "#app/phases.js"; import GameManager from "#app/test/utils/gameManager"; import { getMovePosition } from "#app/test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -7,6 +6,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "../utils/testUtils"; +import { PostSummonPhase } from "#app/phases/post-summon-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Baton Pass", () => { diff --git a/src/test/moves/beak_blast.test.ts b/src/test/moves/beak_blast.test.ts index 61a022ac9eb..8938b4c7af8 100644 --- a/src/test/moves/beak_blast.test.ts +++ b/src/test/moves/beak_blast.test.ts @@ -5,9 +5,11 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "#test/utils/gameManagerUtils"; -import { BerryPhase, MovePhase, TurnEndPhase } from "#app/phases"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { StatusEffect } from "#app/enums/status-effect.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/beat_up.test.ts b/src/test/moves/beat_up.test.ts index a5e4b3cbd34..a0f168ea30f 100644 --- a/src/test/moves/beat_up.test.ts +++ b/src/test/moves/beat_up.test.ts @@ -5,8 +5,8 @@ import { Species } from "#app/enums/species.js"; import { Moves } from "#app/enums/moves.js"; import { Abilities } from "#app/enums/abilities.js"; import { getMovePosition } from "#test/utils/gameManagerUtils"; -import { MoveEffectPhase } from "#app/phases.js"; import { StatusEffect } from "#app/enums/status-effect.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; const TIMEOUT = 20 * 1000; // 20 sec timeout diff --git a/src/test/moves/belly_drum.test.ts b/src/test/moves/belly_drum.test.ts index 74afc910faf..e579a4587ad 100644 --- a/src/test/moves/belly_drum.test.ts +++ b/src/test/moves/belly_drum.test.ts @@ -1,7 +1,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/ceaseless_edge.test.ts b/src/test/moves/ceaseless_edge.test.ts index c5ce8375102..c8291a99b59 100644 --- a/src/test/moves/ceaseless_edge.test.ts +++ b/src/test/moves/ceaseless_edge.test.ts @@ -2,13 +2,14 @@ import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; import { allMoves } from "#app/data/move"; import { Abilities } from "#app/enums/abilities"; import { ArenaTagType } from "#app/enums/arena-tag-type"; -import { MoveEffectPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/clangorous_soul.test.ts b/src/test/moves/clangorous_soul.test.ts index 5493466ba56..5b2e8b6e06d 100644 --- a/src/test/moves/clangorous_soul.test.ts +++ b/src/test/moves/clangorous_soul.test.ts @@ -1,7 +1,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/crafty_shield.test.ts b/src/test/moves/crafty_shield.test.ts index de2829aacf6..c3e50bc52c2 100644 --- a/src/test/moves/crafty_shield.test.ts +++ b/src/test/moves/crafty_shield.test.ts @@ -5,9 +5,10 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { BerryPhase, CommandPhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/double_team.test.ts b/src/test/moves/double_team.test.ts index 2153b856517..1c89d5b6350 100644 --- a/src/test/moves/double_team.test.ts +++ b/src/test/moves/double_team.test.ts @@ -1,6 +1,6 @@ import { BattleStat } from "#app/data/battle-stat.js"; import { Abilities } from "#app/enums/abilities.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; diff --git a/src/test/moves/dragon_rage.test.ts b/src/test/moves/dragon_rage.test.ts index 6ec7521f678..8a27f4006f4 100644 --- a/src/test/moves/dragon_rage.test.ts +++ b/src/test/moves/dragon_rage.test.ts @@ -3,7 +3,7 @@ import { Type } from "#app/data/type"; import { Species } from "#app/enums/species.js"; import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; import { modifierTypes } from "#app/modifier/modifier-type"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/moves/dragon_tail.test.ts b/src/test/moves/dragon_tail.test.ts index 7374451e643..28c47a83454 100644 --- a/src/test/moves/dragon_tail.test.ts +++ b/src/test/moves/dragon_tail.test.ts @@ -1,6 +1,5 @@ import { allMoves } from "#app/data/move.js"; import { SPLASH_ONLY } from "../utils/testUtils"; -import { BattleEndPhase, BerryPhase, TurnEndPhase} from "#app/phases.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -9,6 +8,9 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vi import GameManager from "../utils/gameManager"; import { getMovePosition } from "../utils/gameManagerUtils"; import { BattlerIndex } from "#app/battle.js"; +import { BattleEndPhase } from "#app/phases/battle-end-phase.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/dynamax_cannon.test.ts b/src/test/moves/dynamax_cannon.test.ts index 57846c1aef7..5e81241ef46 100644 --- a/src/test/moves/dynamax_cannon.test.ts +++ b/src/test/moves/dynamax_cannon.test.ts @@ -1,12 +1,14 @@ import { BattlerIndex } from "#app/battle"; import { allMoves } from "#app/data/move"; -import { DamagePhase, MoveEffectPhase, TurnStartPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; describe("Moves - Dynamax Cannon", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/fillet_away.test.ts b/src/test/moves/fillet_away.test.ts index 6965ced46d9..fcad704ef29 100644 --- a/src/test/moves/fillet_away.test.ts +++ b/src/test/moves/fillet_away.test.ts @@ -1,7 +1,7 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; diff --git a/src/test/moves/fissure.test.ts b/src/test/moves/fissure.test.ts index 979bc40646c..65d692a5cc1 100644 --- a/src/test/moves/fissure.test.ts +++ b/src/test/moves/fissure.test.ts @@ -1,7 +1,6 @@ import { BattleStat } from "#app/data/battle-stat"; import { Species } from "#app/enums/species.js"; import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon"; -import { DamagePhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -9,6 +8,8 @@ import { Moves } from "#enums/moves"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Fissure", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/flame_burst.test.ts b/src/test/moves/flame_burst.test.ts index 0f9e311ca86..d6679f921df 100644 --- a/src/test/moves/flame_burst.test.ts +++ b/src/test/moves/flame_burst.test.ts @@ -2,12 +2,13 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; import { Species } from "#enums/species"; -import { SelectTargetPhase, TurnEndPhase } from "#app/phases"; import { Moves } from "#enums/moves"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#app/enums/abilities.js"; import { allAbilities } from "#app/data/ability.js"; import Pokemon from "#app/field/pokemon.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Flame Burst", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/flower_shield.test.ts b/src/test/moves/flower_shield.test.ts index 7ca5fb8bc62..9001e8ceacb 100644 --- a/src/test/moves/flower_shield.test.ts +++ b/src/test/moves/flower_shield.test.ts @@ -2,7 +2,7 @@ import { BattleStat } from "#app/data/battle-stat.js"; import { SemiInvulnerableTag } from "#app/data/battler-tags.js"; import { Type } from "#app/data/type.js"; import { Biome } from "#app/enums/biome.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/moves/focus_punch.test.ts b/src/test/moves/focus_punch.test.ts index f5cf85ffae0..385234f0b71 100644 --- a/src/test/moves/focus_punch.test.ts +++ b/src/test/moves/focus_punch.test.ts @@ -5,8 +5,12 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "#test/utils/gameManagerUtils"; -import { BerryPhase, MessagePhase, MoveHeaderPhase, SwitchSummonPhase, TurnStartPhase } from "#app/phases"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; +import { MoveHeaderPhase } from "#app/phases/move-header-phase.js"; +import { SwitchSummonPhase } from "#app/phases/switch-summon-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/follow_me.test.ts b/src/test/moves/follow_me.test.ts index 420dd7e0762..a0fff9afbf8 100644 --- a/src/test/moves/follow_me.test.ts +++ b/src/test/moves/follow_me.test.ts @@ -1,13 +1,15 @@ import { BattlerIndex } from "#app/battle.js"; import { Stat } from "#app/data/pokemon-stat"; import { Abilities } from "#app/enums/abilities.js"; -import { CommandPhase, SelectTargetPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/foresight.test.ts b/src/test/moves/foresight.test.ts index 3fef1569eba..91d3e3c37e0 100644 --- a/src/test/moves/foresight.test.ts +++ b/src/test/moves/foresight.test.ts @@ -5,7 +5,7 @@ import { Species } from "#app/enums/species.js"; import { SPLASH_ONLY } from "../utils/testUtils"; import { Moves } from "#app/enums/moves.js"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { MoveEffectPhase } from "#app/phases.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; describe("Moves - Foresight", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/freezy_frost.test.ts b/src/test/moves/freezy_frost.test.ts index 3ccd31bd29e..b4c30279c21 100644 --- a/src/test/moves/freezy_frost.test.ts +++ b/src/test/moves/freezy_frost.test.ts @@ -1,5 +1,4 @@ import { BattleStat } from "#app/data/battle-stat"; -import { MoveEndPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -9,6 +8,8 @@ import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; import { allMoves } from "#app/data/move.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Freezy Frost", () => { describe("integration tests", () => { diff --git a/src/test/moves/fusion_flare.test.ts b/src/test/moves/fusion_flare.test.ts index 9ae42e7977f..aa38357ddd3 100644 --- a/src/test/moves/fusion_flare.test.ts +++ b/src/test/moves/fusion_flare.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; -import { TurnStartPhase } from "#app/phases"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { StatusEffect } from "#app/data/status-effect"; import { Species } from "#enums/species"; import { Moves } from "#enums/moves"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; describe("Moves - Fusion Flare", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/fusion_flare_bolt.test.ts b/src/test/moves/fusion_flare_bolt.test.ts index c2214d5442b..1b95062ee81 100644 --- a/src/test/moves/fusion_flare_bolt.test.ts +++ b/src/test/moves/fusion_flare_bolt.test.ts @@ -1,13 +1,16 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; -import { MoveEffectPhase, MovePhase, MoveEndPhase, DamagePhase } from "#app/phases"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Stat } from "#app/data/pokemon-stat"; import { allMoves } from "#app/data/move"; import { BattlerIndex } from "#app/battle"; import { Species } from "#enums/species"; import { Moves } from "#enums/moves"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; describe("Moves - Fusion Flare and Fusion Bolt", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/glaive_rush.test.ts b/src/test/moves/glaive_rush.test.ts index b9c9d2199d3..f97ba1f0367 100644 --- a/src/test/moves/glaive_rush.test.ts +++ b/src/test/moves/glaive_rush.test.ts @@ -1,12 +1,13 @@ import { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; -import { DamagePhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Glaive Rush", () => { diff --git a/src/test/moves/growth.test.ts b/src/test/moves/growth.test.ts index bfa3cc54896..0c60bb723f4 100644 --- a/src/test/moves/growth.test.ts +++ b/src/test/moves/growth.test.ts @@ -1,6 +1,5 @@ import { BattleStat } from "#app/data/battle-stat"; import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, EnemyCommandPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -10,6 +9,9 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Growth", () => { diff --git a/src/test/moves/hard_press.test.ts b/src/test/moves/hard_press.test.ts index baf63a1ad23..255b9f1f4b1 100644 --- a/src/test/moves/hard_press.test.ts +++ b/src/test/moves/hard_press.test.ts @@ -1,5 +1,5 @@ import { allMoves } from "#app/data/move.js"; -import { MoveEffectPhase } from "#app/phases"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; diff --git a/src/test/moves/haze.test.ts b/src/test/moves/haze.test.ts index 092575b8000..d5e3efcbd9d 100644 --- a/src/test/moves/haze.test.ts +++ b/src/test/moves/haze.test.ts @@ -1,5 +1,4 @@ import { BattleStat } from "#app/data/battle-stat"; -import { MoveEndPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -8,6 +7,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Haze", () => { describe("integration tests", () => { diff --git a/src/test/moves/hyper_beam.test.ts b/src/test/moves/hyper_beam.test.ts index f33ce4f5478..ac8075081fb 100644 --- a/src/test/moves/hyper_beam.test.ts +++ b/src/test/moves/hyper_beam.test.ts @@ -3,11 +3,12 @@ import { Abilities } from "#app/enums/abilities.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { Moves } from "#app/enums/moves.js"; import { Species } from "#app/enums/species.js"; -import { BerryPhase, TurnEndPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; // 20 sec timeout for all tests diff --git a/src/test/moves/jaw_lock.test.ts b/src/test/moves/jaw_lock.test.ts new file mode 100644 index 00000000000..4fe996588e4 --- /dev/null +++ b/src/test/moves/jaw_lock.test.ts @@ -0,0 +1,172 @@ +import { Abilities } from "#app/enums/abilities"; +import { BattlerTagType } from "#app/enums/battler-tag-type"; +import GameManager from "#app/test/utils/gameManager"; +import { getMovePosition } from "#app/test/utils/gameManagerUtils"; +import { Moves } from "#enums/moves"; +import { Species } from "#enums/species"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { SPLASH_ONLY } from "#app/test/utils/testUtils"; +import { BattlerIndex } from "#app/battle"; +import { FaintPhase } from "#app/phases/faint-phase"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase"; +import { TurnEndPhase } from "#app/phases/turn-end-phase"; +import { BerryPhase } from "#app/phases/berry-phase"; + +const TIMEOUT = 20 * 1000; + +describe("Moves - Jaw Lock", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(() => { + game = new GameManager(phaserGame); + + game.override + .battleType("single") + .enemySpecies(Species.SNORLAX) + .enemyAbility(Abilities.INSOMNIA) + .enemyMoveset(SPLASH_ONLY) + .moveset([Moves.JAW_LOCK, Moves.SPLASH]) + .startingLevel(100) + .enemyLevel(100) + .disableCrits(); + }); + + it( + "should trap the move's user and target", + async () => { + await game.startBattle([ Species.BULBASAUR ]); + + const leadPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.doAttack(getMovePosition(game.scene, 0, Moves.JAW_LOCK)); + + await game.phaseInterceptor.to(MoveEffectPhase, false); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + + await game.phaseInterceptor.to(TurnEndPhase); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeDefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeDefined(); + }, TIMEOUT + ); + + it( + "should not trap either pokemon if the target faints", + async () => { + game.override.enemyLevel(1); + await game.startBattle([ Species.BULBASAUR ]); + + const leadPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.doAttack(getMovePosition(game.scene, 0, Moves.JAW_LOCK)); + + await game.phaseInterceptor.to(MoveEffectPhase, false); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + + await game.phaseInterceptor.to(MoveEffectPhase); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + + await game.phaseInterceptor.to(FaintPhase); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + }, TIMEOUT + ); + + it( + "should only trap the user until the target faints", + async () => { + await game.startBattle([ Species.BULBASAUR ]); + + const leadPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.doAttack(getMovePosition(game.scene, 0, Moves.JAW_LOCK)); + + await game.phaseInterceptor.to(MoveEffectPhase); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeDefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeDefined(); + + await game.phaseInterceptor.to(TurnEndPhase); + + await game.doKillOpponents(); + + expect(leadPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + }, TIMEOUT + ); + + it( + "should not trap other targets after the first target is trapped", + async () => { + game.override.battleType("double"); + + await game.startBattle([ Species.CHARMANDER, Species.BULBASAUR ]); + + const playerPokemon = game.scene.getPlayerField(); + const enemyPokemon = game.scene.getEnemyField(); + + game.doAttack(getMovePosition(game.scene, 0, Moves.JAW_LOCK)); + game.doSelectTarget(BattlerIndex.ENEMY); + + game.doAttack(getMovePosition(game.scene, 1, Moves.SPLASH)); + + await game.phaseInterceptor.to(MoveEffectPhase); + + expect(playerPokemon[0].getTag(BattlerTagType.TRAPPED)).toBeDefined(); + expect(enemyPokemon[0].getTag(BattlerTagType.TRAPPED)).toBeDefined(); + + await game.toNextTurn(); + + game.doAttack(getMovePosition(game.scene, 0, Moves.JAW_LOCK)); + game.doSelectTarget(BattlerIndex.ENEMY_2); + + game.doAttack(getMovePosition(game.scene, 1, Moves.SPLASH)); + + await game.phaseInterceptor.to(MoveEffectPhase); + + expect(enemyPokemon[1].getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(playerPokemon[0].getTag(BattlerTagType.TRAPPED)).toBeDefined(); + expect(playerPokemon[0].getTag(BattlerTagType.TRAPPED)?.sourceId).toBe(enemyPokemon[0].id); + }, TIMEOUT + ); + + it( + "should not trap either pokemon if the target is protected", + async () => { + game.override.enemyMoveset(Array(4).fill(Moves.PROTECT)); + + await game.startBattle([ Species.BULBASAUR ]); + + const playerPokemon = game.scene.getPlayerPokemon()!; + const enemyPokemon = game.scene.getEnemyPokemon()!; + + game.doAttack(getMovePosition(game.scene, 0, Moves.JAW_LOCK)); + + await game.phaseInterceptor.to(BerryPhase, false); + + expect(playerPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + expect(enemyPokemon.getTag(BattlerTagType.TRAPPED)).toBeUndefined(); + }, TIMEOUT + ); +}); diff --git a/src/test/moves/light_screen.test.ts b/src/test/moves/light_screen.test.ts index 9de1f8c492b..4577ffc574a 100644 --- a/src/test/moves/light_screen.test.ts +++ b/src/test/moves/light_screen.test.ts @@ -3,7 +3,7 @@ import Move, { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; import { ArenaTagType } from "#app/enums/arena-tag-type.js"; import Pokemon from "#app/field/pokemon.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { NumberHolder } from "#app/utils.js"; diff --git a/src/test/moves/lucky_chant.test.ts b/src/test/moves/lucky_chant.test.ts index 1232ce9ffc3..643a5eddb00 100644 --- a/src/test/moves/lucky_chant.test.ts +++ b/src/test/moves/lucky_chant.test.ts @@ -4,8 +4,9 @@ import { getMovePosition } from "../utils/gameManagerUtils"; import { Moves } from "#app/enums/moves.js"; import { Species } from "#app/enums/species.js"; import { Abilities } from "#app/enums/abilities.js"; -import { BerryPhase, TurnEndPhase } from "#app/phases.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/magnet_rise.test.ts b/src/test/moves/magnet_rise.test.ts index 9b3c6c457e2..4ab32b5d048 100644 --- a/src/test/moves/magnet_rise.test.ts +++ b/src/test/moves/magnet_rise.test.ts @@ -1,9 +1,10 @@ -import { CommandPhase, TurnEndPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Magnet Rise", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/make_it_rain.test.ts b/src/test/moves/make_it_rain.test.ts index a4440401c4b..5b0a8c6d62a 100644 --- a/src/test/moves/make_it_rain.test.ts +++ b/src/test/moves/make_it_rain.test.ts @@ -1,5 +1,4 @@ import { BattleStat } from "#app/data/battle-stat.js"; -import { MoveEndPhase, StatChangePhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -8,6 +7,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/mat_block.test.ts b/src/test/moves/mat_block.test.ts index 3a4d23d1497..27a55cab289 100644 --- a/src/test/moves/mat_block.test.ts +++ b/src/test/moves/mat_block.test.ts @@ -5,8 +5,10 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { BerryPhase, CommandPhase, TurnEndPhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/miracle_eye.test.ts b/src/test/moves/miracle_eye.test.ts index 45de8b7e4fb..3e1e151e7d4 100644 --- a/src/test/moves/miracle_eye.test.ts +++ b/src/test/moves/miracle_eye.test.ts @@ -5,8 +5,8 @@ import { Species } from "#app/enums/species.js"; import { SPLASH_ONLY } from "../utils/testUtils"; import { Moves } from "#app/enums/moves.js"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { MoveEffectPhase } from "#app/phases.js"; import { BattlerIndex } from "#app/battle.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; describe("Moves - Miracle Eye", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/multi_target.test.ts b/src/test/moves/multi_target.test.ts index 4cb2dfb764d..6e8a7c99e9b 100644 --- a/src/test/moves/multi_target.test.ts +++ b/src/test/moves/multi_target.test.ts @@ -1,7 +1,7 @@ import { getMoveTargets } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; import { Species } from "#app/enums/species.js"; -import { TurnEndPhase } from "#app/phases.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { Moves } from "#enums/moves"; import Phaser from "phaser"; diff --git a/src/test/moves/octolock.test.ts b/src/test/moves/octolock.test.ts index 8988109f431..fcd68446eff 100644 --- a/src/test/moves/octolock.test.ts +++ b/src/test/moves/octolock.test.ts @@ -1,6 +1,5 @@ import { BattleStat } from "#app/data/battle-stat"; import { TrappedTag } from "#app/data/battler-tags.js"; -import { CommandPhase, MoveEndPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -9,6 +8,9 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Octolock", () => { describe("integration tests", () => { diff --git a/src/test/moves/parting_shot.test.ts b/src/test/moves/parting_shot.test.ts index b8b0faba4ce..32995d2d563 100644 --- a/src/test/moves/parting_shot.test.ts +++ b/src/test/moves/parting_shot.test.ts @@ -1,5 +1,4 @@ import { SPLASH_ONLY } from "../utils/testUtils"; -import { BerryPhase, MessagePhase, TurnInitPhase, FaintPhase } from "#app/phases"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; @@ -8,6 +7,10 @@ import { afterEach, beforeAll, beforeEach, describe, expect, test, it } from "vi import GameManager from "../utils/gameManager"; import { getMovePosition } from "../utils/gameManagerUtils"; import { BattleStat } from "#app/data/battle-stat"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { FaintPhase } from "#app/phases/faint-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/protect.test.ts b/src/test/moves/protect.test.ts index 34e208e0914..4d97ef5ce82 100644 --- a/src/test/moves/protect.test.ts +++ b/src/test/moves/protect.test.ts @@ -5,10 +5,10 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { BerryPhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; import { allMoves } from "#app/data/move.js"; import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/purify.test.ts b/src/test/moves/purify.test.ts index 7959927d63f..3020e4b47ac 100644 --- a/src/test/moves/purify.test.ts +++ b/src/test/moves/purify.test.ts @@ -1,6 +1,5 @@ import { Status, StatusEffect } from "#app/data/status-effect.js"; import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon.js"; -import { MoveEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -8,6 +7,7 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import { BattlerIndex } from "#app/battle.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/quick_guard.test.ts b/src/test/moves/quick_guard.test.ts index 58165f3d916..8bf647f2027 100644 --- a/src/test/moves/quick_guard.test.ts +++ b/src/test/moves/quick_guard.test.ts @@ -5,8 +5,9 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { BerryPhase, CommandPhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/rage_powder.test.ts b/src/test/moves/rage_powder.test.ts index 92cdcc9b4f7..17b687feead 100644 --- a/src/test/moves/rage_powder.test.ts +++ b/src/test/moves/rage_powder.test.ts @@ -1,5 +1,4 @@ import { BattlerIndex } from "#app/battle.js"; -import { CommandPhase, SelectTargetPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -7,6 +6,9 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/reflect.test.ts b/src/test/moves/reflect.test.ts index f5ea489a75e..79dd4f8202b 100644 --- a/src/test/moves/reflect.test.ts +++ b/src/test/moves/reflect.test.ts @@ -3,7 +3,7 @@ import Move, { allMoves } from "#app/data/move.js"; import { Abilities } from "#app/enums/abilities.js"; import { ArenaTagType } from "#app/enums/arena-tag-type.js"; import Pokemon from "#app/field/pokemon.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { NumberHolder } from "#app/utils.js"; diff --git a/src/test/moves/rollout.test.ts b/src/test/moves/rollout.test.ts index ad323c447f5..cad65768a1c 100644 --- a/src/test/moves/rollout.test.ts +++ b/src/test/moves/rollout.test.ts @@ -1,17 +1,18 @@ import { allMoves } from "#app/data/move.js"; -import { CommandPhase } from "#app/phases"; -import GameManager from "#test/utils/gameManager"; -import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; +import GameManager from "#test/utils/gameManager"; +import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { SPLASH_ONLY } from "#test/utils/testUtils"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { SPLASH_ONLY } from "#test/utils/testUtils"; describe("Moves - Rollout", () => { let phaserGame: Phaser.Game; let game: GameManager; + const TIMEOUT = 20 * 1000; beforeAll(() => { phaserGame = new Phaser.Game({ @@ -28,9 +29,9 @@ describe("Moves - Rollout", () => { game.override.disableCrits(); game.override.battleType("single"); game.override.starterSpecies(Species.RATTATA); - game.override.ability(Abilities.NONE); + game.override.ability(Abilities.BALL_FETCH); game.override.enemySpecies(Species.BIDOOF); - game.override.enemyAbility(Abilities.NONE); + game.override.enemyAbility(Abilities.BALL_FETCH); game.override.startingLevel(100); game.override.enemyLevel(100); game.override.enemyMoveset(SPLASH_ONLY); @@ -77,5 +78,5 @@ describe("Moves - Rollout", () => { // reset expect(turn6Dmg).toBeGreaterThanOrEqual(turn1Dmg - variance); expect(turn6Dmg).toBeLessThanOrEqual(turn1Dmg + variance); - }); + }, TIMEOUT); }); diff --git a/src/test/moves/roost.test.ts b/src/test/moves/roost.test.ts index a9036dcb478..c40bb18cdb1 100644 --- a/src/test/moves/roost.test.ts +++ b/src/test/moves/roost.test.ts @@ -2,11 +2,12 @@ import { Abilities } from "#app/enums/abilities.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { Moves } from "#app/enums/moves.js"; import { Species } from "#app/enums/species.js"; -import { MoveEffectPhase, TurnEndPhase } from "#app/phases.js"; import GameManager from "#test/utils/gameManager"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/shell_trap.test.ts b/src/test/moves/shell_trap.test.ts index b027541c252..c600b1ee1cc 100644 --- a/src/test/moves/shell_trap.test.ts +++ b/src/test/moves/shell_trap.test.ts @@ -6,9 +6,11 @@ import { Species } from "#app/enums/species.js"; import { allMoves } from "#app/data/move.js"; import { BattlerIndex } from "#app/battle.js"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { BerryPhase, MoveEndPhase, MovePhase } from "#app/phases.js"; import { SPLASH_ONLY } from "../utils/testUtils"; import { MoveResult } from "#app/field/pokemon.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/spikes.test.ts b/src/test/moves/spikes.test.ts index bbbb3347580..ae3c676b893 100644 --- a/src/test/moves/spikes.test.ts +++ b/src/test/moves/spikes.test.ts @@ -1,4 +1,4 @@ -import { CommandPhase } from "#app/phases"; +import { CommandPhase } from "#app/phases/command-phase.js"; import GameManager from "#test/utils/gameManager"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; diff --git a/src/test/moves/spit_up.test.ts b/src/test/moves/spit_up.test.ts index ec0a53028ff..51d84a5e151 100644 --- a/src/test/moves/spit_up.test.ts +++ b/src/test/moves/spit_up.test.ts @@ -3,7 +3,6 @@ import { StockpilingTag } from "#app/data/battler-tags.js"; import { allMoves } from "#app/data/move.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { MoveResult, TurnMove } from "#app/field/pokemon.js"; -import { MovePhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; @@ -11,6 +10,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Spit Up", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/spotlight.test.ts b/src/test/moves/spotlight.test.ts index 0893ba975d7..40ab78471ae 100644 --- a/src/test/moves/spotlight.test.ts +++ b/src/test/moves/spotlight.test.ts @@ -1,12 +1,14 @@ import { BattlerIndex } from "#app/battle.js"; import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, SelectTargetPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, test } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/stockpile.test.ts b/src/test/moves/stockpile.test.ts index 375eeab3c95..0b208e20f81 100644 --- a/src/test/moves/stockpile.test.ts +++ b/src/test/moves/stockpile.test.ts @@ -1,7 +1,6 @@ import { BattleStat } from "#app/data/battle-stat"; import { StockpilingTag } from "#app/data/battler-tags.js"; import { MoveResult, TurnMove } from "#app/field/pokemon.js"; -import { CommandPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -10,6 +9,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Stockpile", () => { describe("integration tests", () => { diff --git a/src/test/moves/swallow.test.ts b/src/test/moves/swallow.test.ts index aed30445fd2..6a054393acc 100644 --- a/src/test/moves/swallow.test.ts +++ b/src/test/moves/swallow.test.ts @@ -2,7 +2,6 @@ import { BattleStat } from "#app/data/battle-stat"; import { StockpilingTag } from "#app/data/battler-tags.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; import { MoveResult, TurnMove } from "#app/field/pokemon.js"; -import { MovePhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; @@ -10,6 +9,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Swallow", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/tackle.test.ts b/src/test/moves/tackle.test.ts index 512b23ae363..f442645baa9 100644 --- a/src/test/moves/tackle.test.ts +++ b/src/test/moves/tackle.test.ts @@ -1,5 +1,4 @@ import { Stat } from "#app/data/pokemon-stat"; -import { CommandPhase, EnemyCommandPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -8,6 +7,9 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Tackle", () => { diff --git a/src/test/moves/tail_whip.test.ts b/src/test/moves/tail_whip.test.ts index 7630b31f7de..ba4a7459094 100644 --- a/src/test/moves/tail_whip.test.ts +++ b/src/test/moves/tail_whip.test.ts @@ -1,5 +1,4 @@ import { BattleStat } from "#app/data/battle-stat"; -import { CommandPhase, EnemyCommandPhase, TurnInitPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Command } from "#app/ui/command-ui-handler"; @@ -9,6 +8,9 @@ import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; describe("Moves - Tail whip", () => { diff --git a/src/test/moves/tailwind.test.ts b/src/test/moves/tailwind.test.ts index e32e10a4290..115a97f3be4 100644 --- a/src/test/moves/tailwind.test.ts +++ b/src/test/moves/tailwind.test.ts @@ -1,7 +1,7 @@ import { ArenaTagSide } from "#app/data/arena-tag.js"; import { Stat } from "#app/data/pokemon-stat.js"; import { ArenaTagType } from "#app/enums/arena-tag-type.js"; -import { TurnEndPhase } from "#app/phases"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; diff --git a/src/test/moves/thousand_arrows.test.ts b/src/test/moves/thousand_arrows.test.ts index 84a71ee5256..d72f3ed3fac 100644 --- a/src/test/moves/thousand_arrows.test.ts +++ b/src/test/moves/thousand_arrows.test.ts @@ -1,12 +1,13 @@ import { Abilities } from "#app/enums/abilities.js"; import { BattlerTagType } from "#app/enums/battler-tag-type.js"; -import { BerryPhase, MoveEffectPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/moves/tidy_up.test.ts b/src/test/moves/tidy_up.test.ts index e35a438c562..64a63df08df 100644 --- a/src/test/moves/tidy_up.test.ts +++ b/src/test/moves/tidy_up.test.ts @@ -1,6 +1,5 @@ import { BattleStat } from "#app/data/battle-stat.js"; import { ArenaTagType } from "#app/enums/arena-tag-type.js"; -import { MoveEndPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import { getMovePosition } from "#test/utils/gameManagerUtils"; import { Abilities } from "#enums/abilities"; @@ -9,6 +8,8 @@ import { Species } from "#enums/species"; import Phaser from "phaser"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { SPLASH_ONLY } from "#test/utils/testUtils"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; describe("Moves - Tidy Up", () => { diff --git a/src/test/moves/u_turn.test.ts b/src/test/moves/u_turn.test.ts index 175e8008472..b5b320a0267 100644 --- a/src/test/moves/u_turn.test.ts +++ b/src/test/moves/u_turn.test.ts @@ -1,5 +1,4 @@ import { Abilities } from "#app/enums/abilities.js"; -import { BerryPhase, SwitchPhase, TurnEndPhase } from "#app/phases"; import GameManager from "#app/test/utils/gameManager"; import { getMovePosition } from "#app/test/utils/gameManagerUtils"; import { Moves } from "#enums/moves"; @@ -9,6 +8,9 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vite import { StatusEffect } from "#app/enums/status-effect.js"; import { SPLASH_ONLY } from "../utils/testUtils"; import { Mode } from "#app/ui/ui.js"; +import { SwitchPhase } from "#app/phases/switch-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; describe("Moves - U-turn", () => { let phaserGame: Phaser.Game; diff --git a/src/test/moves/wide_guard.test.ts b/src/test/moves/wide_guard.test.ts index 94f382022c2..1f22428de4b 100644 --- a/src/test/moves/wide_guard.test.ts +++ b/src/test/moves/wide_guard.test.ts @@ -5,8 +5,9 @@ import { Species } from "#enums/species"; import { Abilities } from "#enums/abilities"; import { Moves } from "#enums/moves"; import { getMovePosition } from "../utils/gameManagerUtils"; -import { BerryPhase, CommandPhase } from "#app/phases.js"; import { BattleStat } from "#app/data/battle-stat.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; const TIMEOUT = 20 * 1000; diff --git a/src/test/phases/phases.test.ts b/src/test/phases/phases.test.ts index c61eb1d41b8..2ed1e48c706 100644 --- a/src/test/phases/phases.test.ts +++ b/src/test/phases/phases.test.ts @@ -1,9 +1,11 @@ import BattleScene from "#app/battle-scene.js"; -import { LoginPhase, TitlePhase, UnavailablePhase } from "#app/phases.js"; import { Mode } from "#app/ui/ui.js"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; +import { LoginPhase } from "#app/phases/login-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; +import { UnavailablePhase } from "#app/phases/unavailable-phase.js"; describe("Phases", () => { let phaserGame: Phaser.Game; diff --git a/src/test/ui/starter-select.test.ts b/src/test/ui/starter-select.test.ts index ab3783d041d..b8148c61c97 100644 --- a/src/test/ui/starter-select.test.ts +++ b/src/test/ui/starter-select.test.ts @@ -1,7 +1,6 @@ import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import Phaser from "phaser"; import GameManager from "#test/utils/gameManager"; -import { EncounterPhase, SelectStarterPhase, TitlePhase } from "#app/phases"; import { Mode } from "#app/ui/ui"; import { GameModes } from "#app/game-mode"; import StarterSelectUiHandler from "#app/ui/starter-select-ui-handler"; @@ -14,6 +13,9 @@ import { Nature} from "#app/data/nature"; import { Button } from "#enums/buttons"; import { Abilities } from "#enums/abilities"; import { Species } from "#enums/species"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; describe("UI - Starter select", () => { diff --git a/src/test/ui/transfer-item.test.ts b/src/test/ui/transfer-item.test.ts index bbb9a823ad9..21aed9b5b87 100644 --- a/src/test/ui/transfer-item.test.ts +++ b/src/test/ui/transfer-item.test.ts @@ -2,7 +2,6 @@ import { BerryType } from "#app/enums/berry-type"; import { Button } from "#app/enums/buttons"; import { Moves } from "#app/enums/moves"; import { Species } from "#app/enums/species"; -import { BattleEndPhase, SelectModifierPhase } from "#app/phases"; import GameManager from "#test/utils/gameManager"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; @@ -11,6 +10,8 @@ import Phaser from "phaser"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { getMovePosition } from "#test/utils/gameManagerUtils"; +import { BattleEndPhase } from "#app/phases/battle-end-phase.js"; +import { SelectModifierPhase } from "#app/phases/select-modifier-phase.js"; describe("UI - Transfer Items", () => { @@ -87,7 +88,6 @@ describe("UI - Transfer Items", () => { handler.processInput(Button.ACTION); // select Pokemon expect(handler.optionsContainer.list.some((option) => (option as BBCodeText).text?.includes("Transfer"))).toBe(true); - game.phaseInterceptor.unlock(); }); diff --git a/src/test/ui/type-hints.test.ts b/src/test/ui/type-hints.test.ts new file mode 100644 index 00000000000..f93260f15b7 --- /dev/null +++ b/src/test/ui/type-hints.test.ts @@ -0,0 +1,89 @@ +import { Button } from "#app/enums/buttons.js"; +import { Moves } from "#app/enums/moves"; +import { Species } from "#app/enums/species"; +import FightUiHandler from "#app/ui/fight-ui-handler.js"; +import { Mode } from "#app/ui/ui.js"; +import GameManager from "#test/utils/gameManager"; +import Phaser from "phaser"; +import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import MockText from "../utils/mocks/mocksContainer/mockText"; +import { SPLASH_ONLY } from "../utils/testUtils"; +import { CommandPhase } from "#app/phases/command-phase.js"; + +describe("UI - Type Hints", () => { + let phaserGame: Phaser.Game; + let game: GameManager; + + beforeAll(() => { + phaserGame = new Phaser.Game({ + type: Phaser.HEADLESS, + }); + }); + + afterEach(() => { + game.phaseInterceptor.restoreOg(); + }); + + beforeEach(async () => { + game = new GameManager(phaserGame); + game.settings.typeHints(true); //activate type hints + game.override.battleType("single").startingLevel(100).startingWave(1).enemyMoveset(SPLASH_ONLY); + }); + + it("check immunity color", async () => { + game.override + .battleType("single") + .startingLevel(100) + .startingWave(1) + .enemySpecies(Species.FLORGES) + .enemyMoveset(SPLASH_ONLY) + .moveset([Moves.DRAGON_CLAW]); + game.settings.typeHints(true); //activate type hints + + await game.startBattle([Species.RAYQUAZA]); + + game.onNextPrompt("CommandPhase", Mode.COMMAND, () => { + const { ui } = game.scene; + const handler = ui.getHandler(); + handler.processInput(Button.ACTION); // select "Fight" + game.phaseInterceptor.unlock(); + }); + + game.onNextPrompt("CommandPhase", Mode.FIGHT, () => { + const { ui } = game.scene; + const movesContainer = ui.getByName(FightUiHandler.MOVES_CONTAINER_NAME); + const dragonClawText = movesContainer + .getAll() + .find((text) => text.text === "Dragon Claw")! as unknown as MockText; + + expect.soft(dragonClawText.color).toBe("#929292"); + ui.getHandler().processInput(Button.ACTION); + }); + await game.phaseInterceptor.to(CommandPhase); + }); + + it("check status move color", async () => { + game.override.enemySpecies(Species.FLORGES).moveset([Moves.GROWL]); + + await game.startBattle([Species.RAYQUAZA]); + + game.onNextPrompt("CommandPhase", Mode.COMMAND, () => { + const { ui } = game.scene; + const handler = ui.getHandler(); + handler.processInput(Button.ACTION); // select "Fight" + game.phaseInterceptor.unlock(); + }); + + game.onNextPrompt("CommandPhase", Mode.FIGHT, () => { + const { ui } = game.scene; + const movesContainer = ui.getByName(FightUiHandler.MOVES_CONTAINER_NAME); + const growlText = movesContainer + .getAll() + .find((text) => text.text === "Growl")! as unknown as MockText; + + expect.soft(growlText.color).toBe(undefined); + ui.getHandler().processInput(Button.ACTION); + }); + await game.phaseInterceptor.to(CommandPhase); + }); +}); diff --git a/src/test/utils/gameManager.ts b/src/test/utils/gameManager.ts index 17aca8ae153..f60dd1a5ecc 100644 --- a/src/test/utils/gameManager.ts +++ b/src/test/utils/gameManager.ts @@ -1,7 +1,6 @@ import GameWrapper from "#test/utils/gameWrapper"; import { Mode } from "#app/ui/ui"; import { generateStarter, waitUntil } from "#test/utils/gameManagerUtils"; -import { CommandPhase, EncounterPhase, FaintPhase, LoginPhase, MovePhase, NewBattlePhase, SelectStarterPhase, SelectTargetPhase, TitlePhase, TurnEndPhase, TurnInitPhase, TurnStartPhase } from "#app/phases"; import BattleScene from "#app/battle-scene.js"; import PhaseInterceptor from "#test/utils/phaseInterceptor"; import TextInterceptor from "#test/utils/TextInterceptor"; @@ -30,6 +29,19 @@ import { MoveHelper } from "./helpers/moveHelper"; import { vi } from "vitest"; import { ClassicModeHelper } from "./helpers/classicModeHelper"; import { DailyModeHelper } from "./helpers/dailyModeHelper"; +import { SettingsHelper } from "./helpers/settingsHelper"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { FaintPhase } from "#app/phases/faint-phase.js"; +import { LoginPhase } from "#app/phases/login-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { NewBattlePhase } from "#app/phases/new-battle-phase.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; /** * Class to manage the game state and transitions between phases. @@ -44,6 +56,7 @@ export default class GameManager { public readonly move: MoveHelper; public readonly classicMode: ClassicModeHelper; public readonly dailyMode: DailyModeHelper; + public readonly settings: SettingsHelper; /** * Creates an instance of GameManager. @@ -63,6 +76,7 @@ export default class GameManager { this.move = new MoveHelper(this); this.classicMode = new ClassicModeHelper(this); this.dailyMode = new DailyModeHelper(this); + this.settings = new SettingsHelper(this); } /** diff --git a/src/test/utils/helpers/classicModeHelper.ts b/src/test/utils/helpers/classicModeHelper.ts index e6854d5bc79..cf59dd81183 100644 --- a/src/test/utils/helpers/classicModeHelper.ts +++ b/src/test/utils/helpers/classicModeHelper.ts @@ -1,7 +1,8 @@ import { Species } from "#app/enums/species.js"; import { GameModes, getGameMode } from "#app/game-mode.js"; import overrides from "#app/overrides.js"; -import { EncounterPhase, SelectStarterPhase } from "#app/phases.js"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; import { Mode } from "#app/ui/ui.js"; import { generateStarter } from "../gameManagerUtils"; import { GameManagerHelper } from "./gameManagerHelper"; diff --git a/src/test/utils/helpers/dailyModeHelper.ts b/src/test/utils/helpers/dailyModeHelper.ts index c83a2e587d9..a143e212fcb 100644 --- a/src/test/utils/helpers/dailyModeHelper.ts +++ b/src/test/utils/helpers/dailyModeHelper.ts @@ -1,6 +1,7 @@ import { Button } from "#app/enums/buttons.js"; import overrides from "#app/overrides.js"; -import { EncounterPhase, TitlePhase } from "#app/phases.js"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; import SaveSlotSelectUiHandler from "#app/ui/save-slot-select-ui-handler.js"; import { Mode } from "#app/ui/ui.js"; import { GameManagerHelper } from "./gameManagerHelper"; diff --git a/src/test/utils/helpers/moveHelper.ts b/src/test/utils/helpers/moveHelper.ts index b4f9cf2d4a5..331e7e74125 100644 --- a/src/test/utils/helpers/moveHelper.ts +++ b/src/test/utils/helpers/moveHelper.ts @@ -1,8 +1,8 @@ import { vi } from "vitest"; -import { MoveEffectPhase } from "#app/phases.js"; import { GameManagerHelper } from "./gameManagerHelper"; import { BattlerIndex } from "#app/battle.js"; import { EnemyPokemon } from "#app/field/pokemon.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; /** * Helper to handle a Pokemon's move diff --git a/src/test/utils/helpers/overridesHelper.ts b/src/test/utils/helpers/overridesHelper.ts index 0f398e62604..292a340930b 100644 --- a/src/test/utils/helpers/overridesHelper.ts +++ b/src/test/utils/helpers/overridesHelper.ts @@ -84,6 +84,17 @@ export class OverridesHelper extends GameManagerHelper { return this; } + /** + * Override the player's starting modifiers + * @param modifiers the modifiers to set + * @returns this + */ + startingModifier(modifiers: ModifierOverride[]): this { + vi.spyOn(Overrides, "STARTING_MODIFIER_OVERRIDE", "get").mockReturnValue(modifiers); + this.log(`Player starting modifiers set to: ${modifiers}`); + return this; + } + /** * Override the player (pokemon) {@linkcode Abilities | ability} * @param ability the (pokemon) {@linkcode Abilities | ability} to set diff --git a/src/test/utils/helpers/settingsHelper.ts b/src/test/utils/helpers/settingsHelper.ts new file mode 100644 index 00000000000..dec9e160d51 --- /dev/null +++ b/src/test/utils/helpers/settingsHelper.ts @@ -0,0 +1,15 @@ +import { GameManagerHelper } from "./gameManagerHelper"; + +/** + * Helper to handle settings for tests + */ +export class SettingsHelper extends GameManagerHelper { + + /** + * Disable/Enable type hints settings + * @param enable true to enabled, false to disabled + */ + typeHints(enable: boolean) { + this.game.scene.typeHints = enable; + } +} diff --git a/src/test/utils/mocks/mocksContainer/mockContainer.ts b/src/test/utils/mocks/mocksContainer/mockContainer.ts index d3672cb5235..5babd9e71b2 100644 --- a/src/test/utils/mocks/mocksContainer/mockContainer.ts +++ b/src/test/utils/mocks/mocksContainer/mockContainer.ts @@ -1,4 +1,5 @@ import MockTextureManager from "#test/utils/mocks/mockTextureManager"; +import { vi } from "vitest"; import { MockGameObject } from "../mockGameObject"; export default class MockContainer implements MockGameObject { @@ -13,6 +14,7 @@ export default class MockContainer implements MockGameObject { public frame; protected textureManager; public list: MockGameObject[] = []; + private name?: string; constructor(textureManager: MockTextureManager, x, y) { this.x = x; @@ -159,9 +161,10 @@ export default class MockContainer implements MockGameObject { // Moves this Game Object to be below the given Game Object in the display list. } - setName(name) { + setName = vi.fn((name: string) => { + this.name = name; // return this.phaserSprite.setName(name); - } + }); bringToTop(obj) { // Brings this Game Object to the top of its parents display list. diff --git a/src/test/utils/mocks/mocksContainer/mockText.ts b/src/test/utils/mocks/mocksContainer/mockText.ts index 5d405efadfd..6b9ecf083fd 100644 --- a/src/test/utils/mocks/mocksContainer/mockText.ts +++ b/src/test/utils/mocks/mocksContainer/mockText.ts @@ -1,4 +1,5 @@ import UI from "#app/ui/ui"; +import { vi } from "vitest"; import { MockGameObject } from "../mockGameObject"; export default class MockText implements MockGameObject { @@ -10,6 +11,8 @@ export default class MockText implements MockGameObject { public list: MockGameObject[] = []; public style; public text = ""; + private name?: string; + public color?: string; constructor(textureManager, x, y, content, styleOptions) { this.scene = textureManager.scene; @@ -190,10 +193,9 @@ export default class MockText implements MockGameObject { }; } - setColor(color) { - // Sets the tint of this Game Object. - // return this.phaserText.setColor(color); - } + setColor = vi.fn((color: string) => { + this.color = color; + }); setShadowColor(color) { // Sets the shadow color. @@ -219,9 +221,9 @@ export default class MockText implements MockGameObject { // return this.phaserText.setAlpha(alpha); } - setName(name) { - // return this.phaserText.setName(name); - } + setName = vi.fn((name: string) => { + this.name = name; + }); setAlign(align) { // return this.phaserText.setAlign(align); diff --git a/src/test/utils/phaseInterceptor.ts b/src/test/utils/phaseInterceptor.ts index da71b508972..9a2d4dc5007 100644 --- a/src/test/utils/phaseInterceptor.ts +++ b/src/test/utils/phaseInterceptor.ts @@ -1,44 +1,43 @@ -import { - BattleEndPhase, - BerryPhase, - CheckSwitchPhase, - CommandPhase, - DamagePhase, - EggLapsePhase, - EncounterPhase, - EnemyCommandPhase, - FaintPhase, - LoginPhase, - MessagePhase, - MoveEffectPhase, - MoveEndPhase, - MovePhase, - NewBattlePhase, - NextEncounterPhase, - PostSummonPhase, - SelectGenderPhase, - SelectModifierPhase, - SelectStarterPhase, - SelectTargetPhase, - ShinySparklePhase, - ShowAbilityPhase, - StatChangePhase, - SummonPhase, - SwitchPhase, - SwitchSummonPhase, - TitlePhase, - ToggleDoublePositionPhase, - TurnEndPhase, - TurnInitPhase, - TurnStartPhase, - UnavailablePhase, - VictoryPhase -} from "#app/phases"; +import { expect } from "vitest"; import UI, { Mode } from "#app/ui/ui"; import { Phase } from "#app/phase"; import ErrorInterceptor from "#app/test/utils/errorInterceptor"; -import { QuietFormChangePhase } from "#app/form-change-phase"; -import { expect } from "vitest"; +import { BattleEndPhase } from "#app/phases/battle-end-phase.js"; +import { BerryPhase } from "#app/phases/berry-phase.js"; +import { CheckSwitchPhase } from "#app/phases/check-switch-phase.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { DamagePhase } from "#app/phases/damage-phase.js"; +import { EggLapsePhase } from "#app/phases/egg-lapse-phase.js"; +import { EncounterPhase } from "#app/phases/encounter-phase.js"; +import { EnemyCommandPhase } from "#app/phases/enemy-command-phase.js"; +import { FaintPhase } from "#app/phases/faint-phase.js"; +import { LoginPhase } from "#app/phases/login-phase.js"; +import { MessagePhase } from "#app/phases/message-phase.js"; +import { MoveEffectPhase } from "#app/phases/move-effect-phase.js"; +import { MoveEndPhase } from "#app/phases/move-end-phase.js"; +import { MovePhase } from "#app/phases/move-phase.js"; +import { NewBattlePhase } from "#app/phases/new-battle-phase.js"; +import { NextEncounterPhase } from "#app/phases/next-encounter-phase.js"; +import { PostSummonPhase } from "#app/phases/post-summon-phase.js"; +import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase.js"; +import { SelectGenderPhase } from "#app/phases/select-gender-phase.js"; +import { SelectModifierPhase } from "#app/phases/select-modifier-phase.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; +import { SelectTargetPhase } from "#app/phases/select-target-phase.js"; +import { ShinySparklePhase } from "#app/phases/shiny-sparkle-phase.js"; +import { ShowAbilityPhase } from "#app/phases/show-ability-phase.js"; +import { StatChangePhase } from "#app/phases/stat-change-phase.js"; +import { SummonPhase } from "#app/phases/summon-phase.js"; +import { SwitchPhase } from "#app/phases/switch-phase.js"; +import { SwitchSummonPhase } from "#app/phases/switch-summon-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; +import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase.js"; +import { TurnEndPhase } from "#app/phases/turn-end-phase.js"; +import { TurnInitPhase } from "#app/phases/turn-init-phase.js"; +import { TurnStartPhase } from "#app/phases/turn-start-phase.js"; +import { UnavailablePhase } from "#app/phases/unavailable-phase.js"; +import { VictoryPhase } from "#app/phases/victory-phase.js"; +import { PartyHealPhase } from "#app/phases/party-heal-phase.js"; type PhaseClassType = (abstract new (...args: any) => Phase); // `typeof Phase` does not work here because of some issue with ctor signatures @@ -95,6 +94,7 @@ export default class PhaseInterceptor { [QuietFormChangePhase, this.startPhase], [SwitchPhase, this.startPhase], [SwitchSummonPhase, this.startPhase], + [PartyHealPhase, this.startPhase], ]; private endBySetMode = [ diff --git a/src/timed-event-manager.ts b/src/timed-event-manager.ts index 0502080d3a5..58847006e91 100644 --- a/src/timed-event-manager.ts +++ b/src/timed-event-manager.ts @@ -23,6 +23,14 @@ const timedEvents: TimedEvent[] = [ endDate: new Date(Date.UTC(2024, 5, 23, 0)), bannerFilename: "pride-update" }, + { + name: "August Variant Update", + eventType: EventType.SHINY, + shinyMultiplier: 2, + startDate: new Date(Date.UTC(2024, 7, 16, 0)), + endDate: new Date(Date.UTC(2024, 7, 22, 0)), + bannerFilename: "august-variant-update" + } ]; export class TimedEventManager { @@ -77,22 +85,23 @@ export class TimedEventDisplay extends Phaser.GameObjects.Container { } setup() { + console.log(this.event?.bannerFilename); this.banner = new Phaser.GameObjects.Image(this.scene, 29, 64, this.event!.bannerFilename!); // TODO: are the bangs correct here? this.banner.setName("img-event-banner"); - this.banner.setOrigin(0, 0); - this.banner.setScale(0.07); - this.bannerShadow = new Phaser.GameObjects.Rectangle( - this.scene, - this.banner.x - 2, - this.banner.y + 2, - this.banner.width, - this.banner.height, - 0x484848 - ); - this.bannerShadow.setName("rect-event-banner-shadow"); - this.bannerShadow.setScale(0.07); - this.bannerShadow.setAlpha(0.5); - this.bannerShadow.setOrigin(0,0); + this.banner.setOrigin(0.08, -0.35); + this.banner.setScale(0.18); + // this.bannerShadow = new Phaser.GameObjects.Rectangle( + // this.scene, + // this.banner.x - 2, + // this.banner.y + 2, + // this.banner.width, + // this.banner.height, + // 0x484848 + // ); + // this.bannerShadow.setName("rect-event-banner-shadow"); + // this.bannerShadow.setScale(0.07); + // this.bannerShadow.setAlpha(0.5); + // this.bannerShadow.setOrigin(0,0); this.eventTimerText = addTextObject( this.scene, this.banner.x + 8, @@ -104,7 +113,10 @@ export class TimedEventDisplay extends Phaser.GameObjects.Container { this.eventTimerText.setScale(0.15); this.eventTimerText.setOrigin(0,0); - this.add([this.eventTimerText, this.bannerShadow, this.banner]); + this.add([ + this.eventTimerText, + // this.bannerShadow, + this.banner]); } show() { diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index d8b3e5e3ee8..04691886d9c 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -1,4 +1,3 @@ -import { CommandPhase } from "../phases"; import BattleScene from "../battle-scene"; import { getPokeballName } from "../data/pokeball"; import { addTextObject, getTextStyleOptions, TextStyle } from "./text"; @@ -7,6 +6,7 @@ import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; import {Button} from "#enums/buttons"; +import { CommandPhase } from "#app/phases/command-phase.js"; export default class BallUiHandler extends UiHandler { private pokeballSelectContainer: Phaser.GameObjects.Container; diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index 1c7dfb27630..7a30e2787df 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -226,7 +226,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { highestIv = ivs[s]; } }); - if (shownStat) { + if (shownStat !== null && shownStat !== undefined) { shownStats.push(shownStat); statsPool.splice(statsPool.indexOf(shownStat), 1); } diff --git a/src/ui/challenges-select-ui-handler.ts b/src/ui/challenges-select-ui-handler.ts index 12211fa71cc..73c47da41fe 100644 --- a/src/ui/challenges-select-ui-handler.ts +++ b/src/ui/challenges-select-ui-handler.ts @@ -5,12 +5,13 @@ import UiHandler from "./ui-handler"; import { addWindow } from "./ui-theme"; import {Button} from "#enums/buttons"; import i18next from "i18next"; -import { SelectStarterPhase, TitlePhase } from "#app/phases.js"; import { Challenge } from "#app/data/challenge.js"; import * as Utils from "../utils"; import { Challenges } from "#app/enums/challenges.js"; import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Color, ShadowColor } from "#app/enums/color.js"; +import { SelectStarterPhase } from "#app/phases/select-starter-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; /** * Handles all the UI for choosing optional challenges. diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index 11814a25240..b22ea5d20fc 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -1,4 +1,3 @@ -import { CommandPhase } from "../phases"; import BattleScene from "../battle-scene"; import { addTextObject, TextStyle } from "./text"; import PartyUiHandler, { PartyUiMode } from "./party-ui-handler"; @@ -7,6 +6,7 @@ import UiHandler from "./ui-handler"; import i18next from "i18next"; import {Button} from "#enums/buttons"; import { getPokemonNameWithAffix } from "#app/messages.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; export enum Command { FIGHT = 0, diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index f567861e0b7..733873b974e 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -1,8 +1,8 @@ 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"; +import { EggHatchPhase } from "#app/phases/egg-hatch-phase.js"; export default class EggHatchSceneHandler extends UiHandler { public eggHatchContainer: Phaser.GameObjects.Container; diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 8279ab72a70..71d137fbfd7 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -5,13 +5,15 @@ import { Command } from "./command-ui-handler"; import { Mode } from "./ui"; import UiHandler from "./ui-handler"; import * as Utils from "../utils"; -import { CommandPhase } from "../phases"; import { MoveCategory } from "#app/data/move.js"; import i18next from "i18next"; import {Button} from "#enums/buttons"; import Pokemon, { PokemonMove } from "#app/field/pokemon.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; export default class FightUiHandler extends UiHandler { + public static readonly MOVES_CONTAINER_NAME = "moves"; + private movesContainer: Phaser.GameObjects.Container; private moveInfoContainer: Phaser.GameObjects.Container; private typeIcon: Phaser.GameObjects.Sprite; @@ -35,7 +37,7 @@ export default class FightUiHandler extends UiHandler { const ui = this.getUi(); this.movesContainer = this.scene.add.container(18, -38.7); - this.movesContainer.setName("moves"); + this.movesContainer.setName(FightUiHandler.MOVES_CONTAINER_NAME); ui.add(this.movesContainer); this.moveInfoContainer = this.scene.add.container(1, 0); @@ -271,11 +273,10 @@ export default class FightUiHandler extends UiHandler { return undefined; } - const moveColors = opponents.map((opponent) => { - return opponent.getMoveEffectiveness(pokemon, pokemonMove); - }).filter((eff) => !!eff).sort((a, b) => b - a).map((effectiveness) => { - return getTypeDamageMultiplierColor(effectiveness, "offense"); - }); + const moveColors = opponents + .map((opponent) => opponent.getMoveEffectiveness(pokemon, pokemonMove)) + .sort((a, b) => b - a) + .map((effectiveness) => getTypeDamageMultiplierColor(effectiveness ?? 0, "offense")); return moveColors[0]; } diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 5e1ca7ccbb0..66c777944d1 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -1,4 +1,3 @@ -import { CommandPhase, SelectModifierPhase } from "../phases"; import BattleScene from "../battle-scene"; import Pokemon, { MoveResult, PlayerPokemon, PokemonMove } from "../field/pokemon"; import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text"; @@ -23,6 +22,8 @@ import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { getPokemonNameWithAffix } from "#app/messages.js"; +import { CommandPhase } from "#app/phases/command-phase.js"; +import { SelectModifierPhase } from "#app/phases/select-modifier-phase.js"; const defaultMessage = i18next.t("partyUiHandler:choosePokemon"); diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 10a547f37d7..67e870838a2 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -16,7 +16,6 @@ import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "../ import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from "../data/pokemon-species"; import { Type } from "../data/type"; import { GameModes } from "../game-mode"; -import { SelectChallengePhase, TitlePhase } from "../phases"; import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, StarterMoveset, StarterAttributes, StarterPreferences, StarterPrefs } from "../system/game-data"; import { Tutorial, handleTutorial } from "../tutorial"; import * as Utils from "../utils"; @@ -44,6 +43,8 @@ import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType } import { StarterContainer } from "./starter-container"; import { DropDownColumn, FilterBar } from "./filter-bar"; import { ScrollBar } from "./scroll-bar"; +import { SelectChallengePhase } from "#app/phases/select-challenge-phase.js"; +import { TitlePhase } from "#app/phases/title-phase.js"; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -125,9 +126,9 @@ const starterCandyCosts: { passive: integer, costReduction: [integer, integer], { passive: 25, costReduction: [12, 35], egg: 18 }, // 5 Cost { passive: 20, costReduction: [10, 30], egg: 15 }, // 6 Cost { passive: 15, costReduction: [8, 20], egg: 12 }, // 7 Cost - { passive: 10, costReduction: [5, 15], egg: 8 }, // 8 Cost - { passive: 10, costReduction: [5, 15], egg: 8 }, // 9 Cost - { passive: 10, costReduction: [5, 15], egg: 8 }, // 10 Cost + { passive: 10, costReduction: [5, 15], egg: 10 }, // 8 Cost + { passive: 10, costReduction: [5, 15], egg: 10 }, // 9 Cost + { passive: 10, costReduction: [5, 15], egg: 10 }, // 10 Cost ]; // Position of UI elements @@ -2295,13 +2296,12 @@ export default class StarterSelectUiHandler extends MessageUiHandler { container.cost = this.scene.gameData.getSpeciesStarterValue(container.species.speciesId); // First, ensure you have the caught attributes for the species else default to bigint 0 - const caughtVariants = this.scene.gameData.dexData[container.species.speciesId]?.caughtAttr || BigInt(0); + const isCaught = this.scene.gameData.dexData[container.species.speciesId]?.caughtAttr || BigInt(0); // Define the variables based on whether their respective variants have been caught - const isVariant3Caught = !!(caughtVariants & DexAttr.VARIANT_3); - const isVariant2Caught = !!(caughtVariants & DexAttr.VARIANT_2); - const isVariantCaught = !!(caughtVariants & DexAttr.SHINY); - const isCaught = !!(caughtVariants & DexAttr.NON_SHINY); + const isVariant3Caught = !!(isCaught & DexAttr.VARIANT_3); + const isVariant2Caught = !!(isCaught & DexAttr.VARIANT_2); + const isVariantCaught = !!(isCaught & DexAttr.SHINY); const isUncaught = !isCaught && !isVariantCaught && !isVariant2Caught && !isVariant3Caught; const isPassiveUnlocked = this.scene.gameData.starterData[container.species.speciesId].passiveAttr > 0; const isPassiveUnlockable = this.isPassiveAvailable(container.species.speciesId) && !isPassiveUnlocked; @@ -2913,10 +2913,22 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (species) { const dexEntry = this.scene.gameData.dexData[species.speciesId]; const abilityAttr = this.scene.gameData.starterData[species.speciesId].abilityAttr; + + const isCaught = this.scene.gameData.dexData[species.speciesId]?.caughtAttr || BigInt(0); + const isVariant3Caught = !!(isCaught & DexAttr.VARIANT_3); + const isVariant2Caught = !!(isCaught & DexAttr.VARIANT_2); + const isDefaultVariantCaught = !!(isCaught & DexAttr.DEFAULT_VARIANT); + const isVariantCaught = !!(isCaught & DexAttr.SHINY); + const isMaleCaught = !!(isCaught & DexAttr.MALE); + const isFemaleCaught = !!(isCaught & DexAttr.FEMALE); + + const starterAttributes = this.starterPreferences[species.speciesId]; + + const props = this.scene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)); + const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); + const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); + if (!dexEntry.caughtAttr) { - const props = this.scene.gameData.getSpeciesDexAttrProps(species, this.getCurrentDexProps(species.speciesId)); - const defaultAbilityIndex = this.scene.gameData.getStarterSpeciesDefaultAbilityIndex(species); - const defaultNature = this.scene.gameData.getSpeciesDefaultNature(species); if (shiny === undefined || shiny !== props.shiny) { shiny = props.shiny; } @@ -2935,6 +2947,83 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (natureIndex === undefined || natureIndex !== defaultNature) { natureIndex = defaultNature; } + } else { + // compare current shiny, formIndex, female, variant, abilityIndex, natureIndex with the caught ones + // if the current ones are not caught, we need to find the next caught ones + if (shiny) { + if (!(isVariantCaught || isVariant2Caught || isVariant3Caught)) { + shiny = false; + starterAttributes.shiny = false; + variant = 0; + starterAttributes.variant = 0; + } else { + shiny = true; + starterAttributes.shiny = true; + if (variant === 0 && !isDefaultVariantCaught) { + if (isVariant2Caught) { + variant = 1; + starterAttributes.variant = 1; + } else if (isVariant3Caught) { + variant = 2; + starterAttributes.variant = 2; + } else { + variant = 0; + starterAttributes.variant = 0; + } + } else if (variant === 1 && !isVariant2Caught) { + if (isVariantCaught) { + variant = 0; + starterAttributes.variant = 0; + } else if (isVariant3Caught) { + variant = 2; + starterAttributes.variant = 2; + } else { + variant = 0; + starterAttributes.variant = 0; + } + } else if (variant === 2 && !isVariant3Caught) { + if (isVariantCaught) { + variant = 0; + starterAttributes.variant = 0; + } else if (isVariant2Caught) { + variant = 1; + starterAttributes.variant = 1; + } else { + variant = 0; + starterAttributes.variant = 0; + } + } + } + } + if (female) { + if (!isFemaleCaught) { + female = false; + starterAttributes.female = false; + } + } else { + if (!isMaleCaught) { + female = true; + starterAttributes.female = true; + } + } + + if (species.forms) { + const formCount = species.forms.length; + let newFormIndex = formIndex??0; + if (species.forms[newFormIndex]) { + const isValidForm = species.forms[newFormIndex].isStarterSelectable && dexEntry.caughtAttr & this.scene.gameData.getFormAttr(newFormIndex); + if (!isValidForm) { + do { + newFormIndex = (newFormIndex + 1) % formCount; + if (species.forms[newFormIndex].isStarterSelectable && dexEntry.caughtAttr & this.scene.gameData.getFormAttr(newFormIndex)) { + break; + } + } while (newFormIndex !== props.formIndex); + formIndex = newFormIndex; + starterAttributes.form = formIndex; + } + } + } } this.shinyOverlay.setVisible(shiny ?? false); // TODO: is false the correct default? @@ -2975,8 +3064,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { starterSprite.setTexture(species.getIconAtlasKey(formIndex, shiny, variant), species.getIconId(female!, formIndex, shiny, variant)); currentFilteredContainer.checkIconId(female, formIndex, shiny, variant); } - this.canCycleShiny = !!(dexEntry.caughtAttr & DexAttr.NON_SHINY && dexEntry.caughtAttr & DexAttr.SHINY); - this.canCycleGender = !!(dexEntry.caughtAttr & DexAttr.MALE && dexEntry.caughtAttr & DexAttr.FEMALE); + + this.canCycleShiny = isVariantCaught || isVariant2Caught || isVariant3Caught; + this.canCycleGender = isMaleCaught && isFemaleCaught; this.canCycleAbility = [ abilityAttr & AbilityAttr.ABILITY_1, (abilityAttr & AbilityAttr.ABILITY_2) && species.ability2, abilityAttr & AbilityAttr.ABILITY_HIDDEN ].filter(a => a).length > 1; this.canCycleForm = species.forms.filter(f => f.isStarterSelectable || !pokemonFormChanges[species.speciesId]?.find(fc => fc.formKey)) .map((_, f) => dexEntry.caughtAttr & this.scene.gameData.getFormAttr(f)).filter(f => f).length > 1; @@ -3466,7 +3556,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { checkIconId(icon: Phaser.GameObjects.Sprite, species: PokemonSpecies, female: boolean, formIndex: number, shiny: boolean, variant: number) { if (icon.frame.name !== species.getIconId(female, formIndex, shiny, variant)) { - console.log(`${species.name}'s variant icon does not exist. Replacing with default.`); + console.log(`${species.name}'s icon ${icon.frame.name} does not match getIconId with female: ${female}, formIndex: ${formIndex}, shiny: ${shiny}, variant: ${variant}`); icon.setTexture(species.getIconAtlasKey(formIndex, false, variant)); icon.setFrame(species.getIconId(female, formIndex, false, variant)); } diff --git a/src/utils.ts b/src/utils.ts index 01a0b8faa42..c51ac2b5b0b 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -281,6 +281,10 @@ export function setCookie(cName: string, cValue: string): void { } export function removeCookie(cName: string): void { + if (isBeta) { + document.cookie = `${cName}=;Secure;SameSite=Strict;Domain=pokerogue.net;Path=/;Max-Age=-1`; // we need to remove the cookie from the main domain as well + } + document.cookie = `${cName}=;Secure;SameSite=Strict;Domain=${window.location.hostname};Path=/;Max-Age=-1`; document.cookie = `${cName}=;Secure;SameSite=Strict;Path=/;Max-Age=-1`; // legacy cookie without domain, for older cookies to prevent a login loop } @@ -548,3 +552,11 @@ export function capitalizeString(str: string, sep: string, lowerFirstChar: boole } return null; } + +/** + * Returns if an object is null or undefined + * @param object + */ +export function isNullOrUndefined(object: any): boolean { + return null === object || undefined === object; +}