From 9f17273d875d3e6e173ec7c571d209d8b1f244b7 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sun, 12 Nov 2023 12:49:06 -0500 Subject: [PATCH] Add IV Scanner item --- .gitignore | 2 + README.md | 2 + public/battle-anims/common-lock-on.json | 4084 +++++++++++++++++++++++ src/battle-phases.ts | 43 +- src/data/battle-anims.ts | 3 +- src/modifier/modifier-type.ts | 3 + src/modifier/modifier.ts | 26 +- src/system/auto-play.ts | 10 +- src/ui/battle-message-ui-handler.ts | 90 +- src/ui/menu-ui-handler.ts | 3 +- src/ui/ui.ts | 5 +- 11 files changed, 4235 insertions(+), 36 deletions(-) create mode 100644 public/battle-anims/common-lock-on.json diff --git a/.gitignore b/.gitignore index d469053120e..227d021fc14 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ dist-ssr *.sw? public/images/trainer/convert/* +src/data/battle-anim-raw-data.ts +src/data/battle-anim-data.ts diff --git a/README.md b/README.md index 6f52d32a1b1..f4fecb4a235 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ - Valuable items for money - Trainers - Finish party pools + - Add dialogue + - Add reward for gym leader victories - Encounters - Add extremely rare chance of Arceus available anywhere with type change - Balancing diff --git a/public/battle-anims/common-lock-on.json b/public/battle-anims/common-lock-on.json new file mode 100644 index 00000000000..5d837fdb8c4 --- /dev/null +++ b/public/battle-anims/common-lock-on.json @@ -0,0 +1,4084 @@ +{ + "id": 199, + "graphic": "PRAS- Lock On", + "frames": [ + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 65, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 55, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 65, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 55, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 65, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 55, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 65, + "y": -64.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 84.5, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 104.5, + "y": -61, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 124, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 144, + "y": -57, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 164, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 164, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 164, + "y": -55, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 143.5, + "y": -57, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 123.5, + "y": -59, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 103, + "y": -61, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 83, + "y": -63, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 63, + "y": -65, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 63, + "y": -65, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 63, + "y": -65, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 74.5, + "y": -70, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 86, + "y": -75, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 97.5, + "y": -80, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 109, + "y": -85, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 121, + "y": -89.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 121, + "y": -89.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 121, + "y": -89.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 121, + "y": -89.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 122.5, + "y": -83.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 124.5, + "y": -77, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 126, + "y": -70.5, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 1, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 1, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 1, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 1, + "opacity": 188, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 1, + "opacity": 121, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ], + [ + { + "x": 0, + "y": 0, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 0, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 2 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 1, + "graphicFrame": 0, + "opacity": 255, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": true, + "priority": 1, + "focus": 1 + }, + { + "x": 128, + "y": -64, + "zoomX": 100, + "zoomY": 100, + "angle": 0, + "mirror": false, + "visible": true, + "blendType": 0, + "target": 2, + "graphicFrame": 1, + "opacity": 55, + "color": [ + 0, + 0, + 0, + 0 + ], + "tone": [ + 0, + 0, + 0, + 0 + ], + "flash": [ + 0, + 0, + 0, + 0 + ], + "locked": false, + "priority": 1, + "focus": 1 + } + ] + ], + "frameTimedEvents": { + "4": [ + { + "frameIndex": 4, + "resourceName": "PRSFX- Lock On.wav", + "volume": 80, + "pitch": 100, + "eventType": "AnimTimedSoundEvent" + } + ], + "14": [ + { + "frameIndex": 14, + "resourceName": "PRSFX- Lock On.wav", + "volume": 80, + "pitch": 100, + "eventType": "AnimTimedSoundEvent" + } + ] + }, + "position": 1, + "hue": 0 +} \ No newline at end of file diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 17e79a3a17b..bce987a6a75 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -5,7 +5,7 @@ import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMov import { Mode } from './ui/ui'; import { Command } from "./ui/command-ui-handler"; import { Stat } from "./data/pokemon-stat"; -import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyInstantReviveChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier } from "./modifier/modifier"; +import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyInstantReviveChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier } 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"; @@ -388,8 +388,12 @@ export class EncounterPhase extends BattlePhase { this.scene.unshiftPhase(new ShinySparklePhase(this.scene, BattlerIndex.ENEMY + e)); }); - if (this.scene.currentBattle.battleType !== BattleType.TRAINER) + if (this.scene.currentBattle.battleType !== BattleType.TRAINER) { enemyField.map(p => this.scene.pushPhase(new PostSummonPhase(this.scene, p.getBattlerIndex()))); + 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(), 6)))); + } // TODO: Remove //this.scene.unshiftPhase(new SelectModifierPhase(this.scene)); @@ -2478,7 +2482,7 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { pokemon.calculateStats(); pokemon.updateInfo(); this.scene.playSoundWithoutBgm('level_up_fanfare', 1500); - this.scene.ui.showText(`${this.getPokemon().name} grew to\nLv. ${this.level}!`, null, () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false, () => this.end()), null, true); + this.scene.ui.showText(`${this.getPokemon().name} grew to\nLv. ${this.level}!`, null, () => this.scene.ui.getMessageHandler().promptLevelUpStats(this.partyMemberIndex, prevStats, false).then(() => this.end()), null, true); if (this.level <= 100) { const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); for (let lm of levelMoves) @@ -3122,6 +3126,39 @@ export class ShinySparklePhase extends PokemonPhase { } } +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(); + + this.scene.ui.showText(`Use IV Scanner on ${pokemon.name}?`, 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(); + }); + }); + } +} + export class TestMessagePhase extends MessagePhase { constructor(scene: BattleScene, message: string) { super(scene, message, null, true); diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index 99f8181447d..af1da5f7a9e 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -80,7 +80,8 @@ export enum CommonAnim { MISTY_TERRAIN = 2110, ELECTRIC_TERRAIN, GRASSY_TERRAIN, - PSYCHIC_TERRAIN + PSYCHIC_TERRAIN, + LOCK_ON = 2120 } export class AnimConfig { diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 394dea54b47..e776a31c7f4 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -710,6 +710,8 @@ export const modifierTypes = { SHINY_CHARM: () => new ModifierType('Shiny Charm', 'Dramatically increases the chance of a wild Pokémon being shiny', (type, _args) => new Modifiers.ShinyRateBoosterModifier(type)), ABILITY_CHARM: () => new ModifierType('Ability Charm', 'Dramatically increases the chance of a wild Pokémon having a hidden ability', (type, _args) => new Modifiers.HiddenAbilityRateBoosterModifier(type)), + IV_SCANNER: () => new ModifierType('IV Scanner', 'Allows scanning the IVs of wild Pokémon', (type, _args) => new Modifiers.IvScannerModifier(type), 'scanner'), + DNA_SPLICERS: () => new FusePokemonModifierType('DNA Splicers'), REVERSE_DNA_SPLICERS: () => new UnfusePokemonModifierType('Reverse DNA Splicers', 'dna_splicers'), @@ -819,6 +821,7 @@ const modifierPool = { new WeightedModifierType(modifierTypes.EXP_CHARM, 4), new WeightedModifierType(modifierTypes.OVAL_CHARM, 2), new WeightedModifierType(modifierTypes.ABILITY_CHARM, 2), + new WeightedModifierType(modifierTypes.IV_SCANNER, 2), new WeightedModifierType(modifierTypes.EXP_BALANCE, 1), new WeightedModifierType(modifierTypes.COIN_CASE, 1), new WeightedModifierType(modifierTypes.REVERSE_DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode !== GameMode.SPLICED_ENDLESS && party.filter(p => p.fusionSpecies).length ? 3 : 0), diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index c60fd2eaef2..af1d2d038a1 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -271,8 +271,8 @@ export class DoubleBattleChanceBoosterModifier extends LapsingPersistentModifier return false; } - clone(): TempBattleStatBoosterModifier { - return new TempBattleStatBoosterModifier(this.type as ModifierTypes.TempBattleStatBoosterModifierType, this.battlesLeft, this.stackCount); + clone(): DoubleBattleChanceBoosterModifier { + return new DoubleBattleChanceBoosterModifier(this.type as ModifierTypes.DoubleBattleChanceBoosterModifierType, this.battlesLeft, this.stackCount); } getArgs(): any[] { @@ -1392,6 +1392,28 @@ export class ContactHeldItemTransferChanceModifier extends HeldItemTransferModif } } +export class IvScannerModifier extends PersistentModifier { + constructor(type: ModifierType, stackCount?: integer) { + super(type, stackCount); + } + + match(modifier: Modifier): boolean { + return modifier instanceof IvScannerModifier; + } + + clone(): IvScannerModifier { + return new IvScannerModifier(this.type, this.stackCount); + } + + apply(args: any[]): boolean { + return true; + } + + getMaxStackCount(): integer { + return 5; + } +} + export class ExtraModifierModifier extends PersistentModifier { constructor(type: ModifierType, stackCount?: integer) { super(type, stackCount); diff --git a/src/system/auto-play.ts b/src/system/auto-play.ts index 98c0cc7ee5b..4302a66dfc7 100644 --- a/src/system/auto-play.ts +++ b/src/system/auto-play.ts @@ -95,10 +95,12 @@ export function initAutoPlay() { }; const originalMessageUiHandlerPromptLevelUpStats = messageUiHandler.promptLevelUpStats; - messageUiHandler.promptLevelUpStats = function (partyMemberIndex: integer, prevStats: integer[], showTotals: boolean, callback?: Function) { - originalMessageUiHandlerPromptLevelUpStats.apply(this, [ partyMemberIndex, prevStats, showTotals, callback ]); - if (thisArg.auto) - thisArg.time.delayedCall(20, () => this.processInput(Button.ACTION)); + messageUiHandler.promptLevelUpStats = function (partyMemberIndex: integer, prevStats: integer[], showTotals: boolean): Promise { + return new Promise(resolve => { + originalMessageUiHandlerPromptLevelUpStats.apply(this, [ partyMemberIndex, prevStats, showTotals ]).then(() => resolve()); + if (thisArg.auto) + thisArg.time.delayedCall(20, () => this.processInput(Button.ACTION)); + }); }; const originalCommandUiHandlerShow = commandUiHandler.show; diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index 3dd03b2cacf..51ba541ce0a 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -68,11 +68,11 @@ export default class BattleMessageUiHandler extends MessageUiHandler { this.levelUpStatsContainer = levelUpStatsContainer; - const levelUpStatsBg = this.scene.add.nineslice((this.scene.game.canvas.width / 6), -100, 'window', null, 118, 100, 6, 6, 6, 6); + const levelUpStatsBg = this.scene.add.nineslice((this.scene.game.canvas.width / 6), -100, 'window', null, 128, 100, 6, 6, 6, 6); levelUpStatsBg.setOrigin(1, 0); levelUpStatsContainer.add(levelUpStatsBg); - const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 111, -94, '', TextStyle.WINDOW, { maxLines: 6 }); + const levelUpStatsLabelsContent = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 121, -94, '', TextStyle.WINDOW, { maxLines: 6 }); let levelUpStatsLabelText = ''; const stats = Utils.getEnumValues(Stat); @@ -131,27 +131,71 @@ export default class BattleMessageUiHandler extends MessageUiHandler { super.showDialogue(text, name, delay, callback, callbackDelay, prompt, promptDelay); } - promptLevelUpStats(partyMemberIndex: integer, prevStats: integer[], showTotals: boolean, callback?: Function): void { - if (!this.scene.showLevelUpStats) - return callback(); - const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats; - let levelUpStatsValuesText = ''; - const stats = Utils.getEnumValues(Stat); - for (let s of stats) - levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`; - this.levelUpStatsValuesContent.text = levelUpStatsValuesText; - this.levelUpStatsIncrContent.setVisible(!showTotals); - this.levelUpStatsContainer.setVisible(true); - this.awaitingActionInput = true; - this.onActionInput = () => { - if (!showTotals) - this.promptLevelUpStats(partyMemberIndex, null, true, callback); - else { - this.levelUpStatsContainer.setVisible(false); - if (callback) - callback(); - } - }; + promptLevelUpStats(partyMemberIndex: integer, prevStats: integer[], showTotals: boolean): Promise { + return new Promise(resolve => { + if (!this.scene.showLevelUpStats) + return resolve(); + const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats; + let levelUpStatsValuesText = ''; + const stats = Utils.getEnumValues(Stat); + for (let s of stats) + levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`; + this.levelUpStatsValuesContent.text = levelUpStatsValuesText; + this.levelUpStatsIncrContent.setVisible(!showTotals); + this.levelUpStatsContainer.setVisible(true); + this.awaitingActionInput = true; + this.onActionInput = () => { + if (!showTotals) + return this.promptLevelUpStats(partyMemberIndex, null, true).then(() => resolve()); + else { + this.levelUpStatsContainer.setVisible(false); + resolve(); + } + }; + }); + } + + promptIvs(pokemonId: integer, ivs: integer[], shownIvsCount: integer): Promise { + return new Promise(resolve => { + this.scene.executeWithSeedOffset(() => { + let levelUpStatsValuesText = ''; + const stats = Utils.getEnumValues(Stat); + let shownStats: Stat[] = []; + if (shownIvsCount < 6) { + let statsPool = stats.slice(0); + for (let i = 0; i < shownIvsCount; i++) { + const shownStat = Phaser.Math.RND.pick(statsPool); + shownStats.push(shownStat); + statsPool.splice(statsPool.indexOf(shownStat), 1); + } + } else + shownStats = stats; + for (let s of stats) + levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s]) : '???'}\n`; + this.levelUpStatsValuesContent.text = levelUpStatsValuesText; + this.levelUpStatsIncrContent.setVisible(false); + this.levelUpStatsContainer.setVisible(true); + this.awaitingActionInput = true; + this.onActionInput = () => { + this.levelUpStatsContainer.setVisible(false); + resolve(); + }; + }, pokemonId); + }); + } + + getIvDescriptor(value: integer): string { + if (value > 30) + return 'Perfect'; + if (value === 30) + return 'Fantastic'; + if (value > 20) + return 'Very Good'; + if (value > 10) + return 'Pretty Good'; + if (value) + return 'Decent'; + return 'No Good'; } showNameText(name: string): void { diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index 4adb1f9a821..244da125e5a 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -76,7 +76,8 @@ export default class MenuUiHandler extends UiHandler { } } else if (button === Button.CANCEL) { success = true; - this.scene.ui.revertMode(); + if (!this.scene.ui.revertMode()) + ui.setMode(Mode.MESSAGE); } else { switch (button) { case Button.UP: diff --git a/src/ui/ui.ts b/src/ui/ui.ts index c861164277c..c6296718dd4 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -292,11 +292,12 @@ export default class UI extends Phaser.GameObjects.Container { return this.setModeInternal(mode, false, false, true, args); } - revertMode(): void { + revertMode(): boolean { if (!this.modeChain.length) - return; + return false; this.getHandler().clear(); this.mode = this.modeChain.pop(); + return true; } } \ No newline at end of file